Telemetry: 一种可以在别人网站也能收集访问记录的技术

背景

作为一个内容创作者来说,我们经常会把自己的一些文章,发布到一些第三方创作平台。但是对于内容有追求的人来说,发布仅仅只是开始,在后续很长的一段时间内我们都需要持续关注文章的阅读情况。而我们所有的数据收集只能借助平台自身的能力,这非常依赖于平台本身的能力。而且同一个内容我们往往会发到不同的平台,而这些阅读与访问数据是完全隔离的。

作为一个开发者,我会开发很多软件,但是当我把软件发布出去以后,再大部分情况下会完全脱离我的控制,比如我发布了一个命令行程序,我不知道用户的使用情况如何,我甚至不知道有多少用户使用了我的应用。或者我开发了一个开源应用,在过去,我只能通过github 的star功能知道我的应用被多少人喜欢,但是对于我的应用被多少人使用,使用情况如何则是完全不知道的。

因此,我们需要一个足够简单的,为了个人隐私或者其他的限制收集最少信息的解决方案。这个解决方案就是遥测技术.

Telemetry

遥测技术在计算机领域上是一种非常常见的技术,它往往选择最小的、匿名的信息上报,以适应各种个人隐私的需求。同时满足内容的创作者最低限度的分析需求。

比如React的Nextjs框架,就会通过Telemetry技术去收集信息 : API Reference: Next.js CLI | Next.js (nextjs.org)

又或者通过在文章中插入1px大小的空白透明像素图片,来实现在没有自己控制权的网站中收集用户的访问情况。现代浏览器和大部分的网站会阻止自定义脚本的插入,因为这往往会成为一种攻击。而相对而言一张图片则会显得非常无害。基本所有的网站都是允许第三方图片加载的。这也让Telemetry技术成为可能。

那么我们可以通过一张图片可以收集到什么信息呢?

事实上,仅仅接收一张图片的访问我们可以收集到的信息比你想象中的更多。

我们可以通过收集用户的网络请求,可以获得用户访问IP,访问时间,访问来源,访问设备。以此我们就可以分析用户的流量情况。比如文章的高峰与趋势,用户人群的分布,不同平台的流量粒度等等。这对于我们进行一些营销与宣传活动尤为重要。

所以我们要如何才能拥有Telemetry能力呢?

Telemetry其实是一种非常简单的技术,简单的来说只需要一个接口来接收来自互联网的请求即可。但是正因为简单所以几乎没有专门做这方面的工具存在。而对于大部分来说如果没有去做统计分析的意识的话很可能根本不会去关注这个。或者关注了也会因为基本的门槛而退却。但是这方面的需求又是确定的。

我们可以很简单的进行开发,只需要快速创建一个项目,创建一个路由,收集请求体中的信息,并返回空白图片即可。

以 nodejs 代码为例:

js 复制代码
router.get(
  '/telemetry.gif',
  async (req, res) => {
    const ip = req.ip;
    const referer = req.header['referer'];
    const userAgent = req.headers['user-agent'];
    
    // storage it in your database
    
    const blankGifBuffer = Buffer.from(
		  'R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7',
		  'base64'
		);
    res.header('Content-Type', 'image/gif').send(blankGifBuffer);
  }
);

如果你不想自己做,那我则会推荐可以直接使用 Tianji, Tianji 作为一款 Website Analytics + Uptime Monitor + Server Status 的开源项目, 最近推出了 Telemetry 功能,可以帮助内容创作者提供遥测上报的能力,帮助用户更好的收集各种内容。最重要的是他是开源的,意味着你可以自己控制你的数据,并整合多个平台的流量到一处,而无需碎片化的在不同的地方查看同样的东西。

Github: github.com/msgbyte/tia...

官网: tianji.msgbyte.com/

BTW: 本文就包含了这样的遥测上报功能。你能找到么?

相关推荐
ljt272496066133 分钟前
Flutter笔记--envied
前端·笔记·flutter
Flynt1 小时前
React Router v8 升了之后,我花了两天才把项目跑起来
前端·typescript·preact
卷无止境2 小时前
Python能做嵌入式开发吗?一份写给动手派的生态与硬件全景图
后端·python
泯泷7 小时前
手搓JSVMM第 8 篇:函数调用:参数、返回值与调用帧
前端·javascript·前端框架
Sherotree8 小时前
Google Antigravity——Agent 被提到主界面
前端·ide·后端·edge浏览器
DogDaoDao8 小时前
Windows 开发提效工具全景指南:60+ 工具的工程化分层配置
windows·git·程序员·开发工具·powershell·everything·msys2
2601_962056238 小时前
Spring Boot 入门 与 无法解析符号 springframework 的解决
java·spring boot·后端
里欧跑得慢8 小时前
Flutter 像素级还原:设计稿到代码的视觉无损转换技巧
前端·css·flutter·web
里欧跑得慢9 小时前
Flutter 三方库 function_tree — 鸿蒙应用开发中的动态数学公式解析与计算神器,实现鸿蒙深度适配下的复杂函数逻辑运行时求值实战(适配鸿蒙 HarmonyOS Next ohos)
android·前端·安全·flutter·华为·harmonyos
你驴我9 小时前
WhatsApp 多账号场景下的会话归档与历史消息检索优化实践
后端·python