跳到主要内容

介绍

背景

作为内容创作者,我们经常在各种第三方平台上发布文章。然而,对于那些对内容认真负责的人来说,发布只是开始。我们需要不断监控文章的长期读者群。不幸的是,我们的数据收集能力受限于每个平台提供的功能,而这又严重依赖于平台自己的能力。此外,当我们在不同平台上发布相同的内容时,读者人数和访问数据是完全隔离的。

作为一名开发者,我开发了许多软件应用。然而,一旦我发布了这些应用,往往就失去了对它们的控制。例如,发布一个命令行程序后,我无法知道用户如何与它交互,甚至不知道有多少人在使用我的应用。同样地,当开发一个开源应用时,过去我只能通过 GitHub 的星标来了解兴趣,对实际使用情况毫无所知。

因此,我们需要一个简单的方案来收集最少的信息,以尊重个人隐私和其他限制。这个方案就是遥测。

遥测

在计算领域,遥测是一种常见技术,通过最小化和匿名化信息报告来解决隐私问题,同时满足内容创作者的基本分析需求。

例如,React 的 Next.js 框架通过遥测收集信息:API 参考:Next.js CLI | Next.js (nextjs.org)

或者,通过在文章中嵌入一个 1 像素大小的空白透明像素图像,可以在我们无法控制的网站上收集访客数据。现代浏览器和大多数网站由于潜在的安全风险,会阻止自定义脚本的插入。然而,图像相比之下显得更加无害。几乎所有网站都允许加载第三方图像,使得遥测成为可能。

通过图像我们可以收集到哪些信息?

令人惊讶的是,接收单一的图像请求可以收集到比预期更多的信息。

通过分析网络请求,我们可以获得用户的 IP 地址、访问时间、来源和设备类型。这使我们能够分析流量模式,例如高峰阅读时间和趋势、人口分布以及不同平台的流量细节。这些信息对于营销和宣传活动特别有价值。

我们如何实现遥测?

遥测是一项简单的技术,本质上只需要一个端点来接收互联网请求。由于其简单性,少有专门的工具用于此目的。许多人可能不会考虑分析的重要性,或者会被最初的障碍所阻碍。然而,这种功能的需求是显而易见的。

开发遥测解决方案很简单。你只需创建一个项目,设置一个路由,从请求体中收集信息,并返回一个空白图像。

以下是一个使用 Node.js 的示例:

router.get(
'/telemetry.gif',
async (req, res) => {
const ip = req.ip;
const referer = req.header['referer'];
const userAgent = req.headers['user-agent'];

// 将其存储在你的数据库中

const blankGifBuffer = Buffer.from(
'R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7',
'base64'
);
res.header('Content-Type', 'image/gif').send(blankGifBuffer);
}
);

如果你不想开发自己的解决方案,我推荐使用天机。作为一个开源项目,提供网站分析运行时间监控服务器状态,天机最近推出了遥测功能,帮助内容创作者进行遥测报告,从而更好地收集数据。最重要的是,作为开源项目,你可以控制自己的数据,并且可以在一个地方聚合多个平台的流量,避免在不同位置查看相同信息的碎片化。

GitHub: https://github.com/msgbyte/tianji

官方网站: https://tianji.dev/