V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
moonrailgun
V2EX  ›  推广

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

  •  
  •   moonrailgun · 258 天前 · 2446 次点击
    这是一个创建于 258 天前的主题,其中的信息可能已经有所发展或是发生改变。

    背景

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

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

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

    Telemetry

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

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

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

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

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

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

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

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

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

    以 nodejs 代码为例:

    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: https://github.com/msgbyte/tianji

    官网: https://tianji.msgbyte.com/

    17 条回复    2024-03-12 09:40:10 +08:00
    Tianyan
        1
    Tianyan  
       258 天前
    这是你的项目
    402645707
        2
    402645707  
       258 天前
    梦回当年淘宝广告,靠一个浮窗就能拿周围用户的购买记录...
    M4ster
        3
    M4ster  
       258 天前
    这就是 “像素追踪” 嘛。
    早些年的淘宝能自定义 CSS ,一些第三方平台就用这种方式帮助店家统计店铺的访问数据。
    早期的电子邮件中,也经常用这个技术来检测收件人是否已阅读邮件。
    ZnductR0MjHvjRQ3
        4
    ZnductR0MjHvjRQ3  
       258 天前
    看着不错 回来试试 APP 可用吗
    rekulas
        5
    rekulas  
       258 天前
    想搜集三方平台的很难了,这个 feature ( bug )多年前就被平台修复了
    chaxus
        6
    chaxus  
       258 天前
    做营销广告的时候涉猎到一点,需要跟踪用户在不同平台的行为,难点在于如何给用户一个唯一的标识。由于纯前端已经拿不到 ip 等信息了,最后标识的误差还是挺高的。
    weijancc
        7
    weijancc  
       258 天前
    这个国内很常见, 不过国内称之为埋点
    drymonfidelia
        8
    drymonfidelia  
       258 天前   ❤️ 1
    @Livid 无技术含量软文 AD
    GeekGao
        9
    GeekGao  
       258 天前
    在国内没啥价值。因为国内 ip 都是动态共享的,没法根据这点信息建立有效指纹以定位用户身份。
    hexler
        10
    hexler  
       258 天前
    你直接上来说你是打广告的多好,看完发现了会不爽的。
    moonrailgun
        11
    moonrailgun  
    OP
       258 天前
    @weijancc
    > 这个国内很常见, 不过国内称之为埋点
    埋点和 Telemetry 不是一回事, 埋点的权限高很多,这是一个归属权的问题。
    埋点是在拥有自己权限的网页上的行为。最简单的例子就是你可以在其他人的平台上插入自己的 ga 代码么?

    @rekulas
    > 想搜集三方平台的很难了,这个 feature ( bug )多年前就被平台修复了
    只要支持插入第三方图片的平台都可以,大部分的平台事实上都支持插入外部图片(比如掘金,比如各种论坛)。少部分会中间中转一层(比如 github , 但是也有办法解决)。
    只能说具体情况具体分析,直接说所有平台那也太绝对了。当然你要说的是手机端的平台,比如小红书,抖音之类的那确实

    @GeekGao
    > 在国内没啥价值。因为国内 ip 都是动态共享的,没法根据这点信息建立有效指纹以定位用户身份。
    价值还是有的。只能说不会很精确,比如一个人可能第一天是一个 ip 第二天是另一个 ip ,如果算留存率的话可能确实不太准。但是如果要求没有那么高,单纯看趋势,看分布和访问情况我觉得没什么问题
    GeekGao
        12
    GeekGao  
       258 天前
    @moonrailgun 我以前做设备指纹和风控产品, 我以当时的客户需求来看,你这就是没啥价值的。如果是 DMP ,那直接共享 cookie 就行了,那基本都是自研,用不着第三方 sdk 产品了。
    weijancc
        13
    weijancc  
       258 天前
    @moonrailgun 不不不, 就是一回事, Telemetry 并非只是在网页端使用, 国外客户端自带的信息收集也称之为 Telemetry, 典型的有 VS Code, 和国内的移动 APP 中各种埋点收集信息并无区别, 只是国内 APP 没道德, 不满足于匿名数据, 还会附带隐私数据.
    moonrailgun
        14
    moonrailgun  
    OP
       258 天前
    @GeekGao 确实,如果有非常深度的需求那确实,因为就算是 salesforce 也不能满足所有的销售需求。而 tianji 的目标是满足 80%以上的用户需求即可。毕竟大部分用户还是轻度使用。比如 cf 大部分人也就用个 dns ,ga 大部分人也就看个 pvuv 留存率。如果按照行业定制化自研的标准去参考市场上的产品的话,可能 99%的产品都是没有价值的,毕竟都自研了嘛。
    就比如你使用共享 cookie ,那么对于 cookie 要求敏感的国家来说就是没有价值的,但是我不认为你的产品会没有价值,至少对于你的客户来说就是 100%的价值。所以不同的场景对所谓的价值评价是不一样的。
    moonrailgun
        15
    moonrailgun  
    OP
       258 天前
    @weijancc 可能叫法不一样。我的意思准确来说是有限的数据信息收集。理论上安装到你的电脑的应用不应该在你不允许的情况下发送很多信息,但是一般来说我们会认可有限的信息收集,比如 [打开应用] [访问某功能] 这种。

    如果是更加详细的比如报错信息,或者包含用户各种隐私信息的操作行为(哪怕是脱敏后),就很难称之为 Telemetry 了。当然可能只是我个人的理解。你说的和我想说的其实差不多,叫法上的区别而已。可能我心理上会把他们用两个名词拆分开。telemetry 和 trace
    freeloop1
        16
    freeloop1  
       258 天前
    一个 csp 策略就 G 了,这种东西现在已经不行了。
    wkong
        17
    wkong  
       258 天前
    好项目,手动点赞👍
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5548 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 03:47 · PVG 11:47 · LAX 19:47 · JFK 22:47
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.