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: 本文就包含了这样的遥测上报功能。你能找到么?

相关推荐
小闹5499 分钟前
Claude Code 给自己接了一部飞书,从此不用守在工位等它
后端·claude
浮游本尊20 分钟前
Java学习第41天 - 复杂查询、多表关联、索引优化与慢 SQL 调优
后端
llz_11223 分钟前
web-第五次课后作业
前端·后端·http
雨辰AI1 小时前
生产级实测:SpringBoot3 + 达梦数据库接口从 200ms 优化至 20ms 完整调优指南
java·数据库·spring boot·后端·政务
恋猫de小郭1 小时前
Redis 作者反驳「中国模型之所以强,是因为通过 API 蒸馏了美国模型」
前端·人工智能·ai编程
Darling噜啦啦1 小时前
Canvas 游戏开发与数据可视化实战:从飞机大战到 ECharts 报表
前端·echarts·canvas
极光技术熊1 小时前
全栈项目部署实战指南:Java / Python / Vue / React 一站式搞定
程序员·架构
OpenTiny社区1 小时前
这次更新太良心!GenUI SDK v1.2.0 轻量化 + 稳流式 + 超强 Playground
前端·vue.js·ai编程
梨子同志2 小时前
WebGL test
前端
程序员黑豆2 小时前
AI全栈开发系列开篇:从Java全栈到AI应用实战
前端·ai编程·全栈