EchoScan
UNQ
STB
#···
Cn
En
Jp

指纹系统的应用·特别篇|设备指纹:跨应用追踪——从炸鸡广告到算法推送

在浏览器指纹的应用系列中,我们一直在讨论一个专属于网络环境的识别技术。但设备指纹的故事,远远超越了浏览器的边界。当我们谈论浏览器指纹时,实际上讨论的是更大的设备指纹生态中的一个子集。而在这个生态中,发生着一场更大规模的追踪与识别——跨越应用、跨越系统、甚至跨越物理空间的追踪。

这一次,让我们从一个最日常的场景开始:为什么 Instagram 给我推送了我中午点的炸鸡?


一次"完美的巧合"

一周前的神秘体验

朋友推荐了我一个外卖软件。这个软件的名字以 R 开头,在各个应用商店的下载量突破了千万级别。我下载了它,花了五分钟完成注册,然后下单了一份炸鸡。订单确认了,我关闭了这个应用。 下午,我打开了 Instagram。像往常一样,我开始刷着帖子。突然,一条广告出现了。 这不是普通的广告。它推送的正是我中午点单的那个外卖软件,以及同一品牌的炸鸡套餐——我甚至可以确认,这正是我订单里的那个套餐。 第一反应是,巧合。 但一周后,当我身边的人通过我的邀请链接下载了这个外卖软件,并在第二天点了一份甜甜圈后,我的 Instagram 又一次向我推送了同款甜甜圈品牌的广告。 这次就不是巧合了。 关键的疑问开始出现:我既没有在外卖软件上搜索过炸鸡和甜甜圈之外的其他商品;我也没有在任何社交媒体上提及过这两个词;我甚至没有在 Instagram 上点过赞或发表过与食物相关的任何内容。 但 Meta 怎么知道的?


数据追踪的双重机制

核心概念:设备指纹与数据共享

要理解这一切是如何发生的,我们需要理解两个看起来毫无关联但实际上紧密协作的概念。

第一个概念:广告数字指纹

几乎每部智能手机出厂时,都会被赋予一个唯一的广告标识符。在 iOS 上,这被称为 IDFA(Identifier For Advertisers);在 Android 上,叫 GAID(Google Advertising ID)。

平台 标识符 用途 特性
iOS IDFA 追踪应用内行为 用户可在设置中关闭
Android GAID 追踪应用内行为 用户可在设置中重置
双平台 设备指纹 跨应用追踪 用户几乎无法发现

这些标识符的目的很明确:让广告商能够在不知道你真实身份的前提下,追踪你在不同应用间的行为轨迹。 但关键的是,Meta 似乎并没有主要依赖这些系统级标识符。如果它使用了 IDFA 或 GAID,iOS 和 Android 系统都会向用户弹出"应用想要追踪您"的权限请求框。 然而,我从未看到过R姓外卖软件有的这样的弹窗。 经过简单的调查,真正的追踪机制,是通过一个看不见的数据管道完成的。 当外卖软件集成了 Facebook SDK(软件开发工具包)时,它就获得了向 Meta 的服务器自动传输数据的能力。每当你在外卖软件中下单购买,系统就会触发一个名为 fb_mobile_purchase 的事件。 这个事件包含了什么? fb_mobile_purchase 事件内容 ├─ 事件类型:purchase(购买) ├─ 购买商品:炸鸡、甜甜圈 ├─ 购买金额:¥29.9 ├─ 购买时间:2024-10-30 12:30:00 ├─ 设备标识符:[某个唯一设备标识] └─ 其他上下文信息:… 这些数据会被自动上传给 Meta。外卖软件方面可能称之为"优化广告体验",而 Meta 称之为"业务数据整合"。 关键的是,这个过程发生在后台,完全不需要用户的显式授权。


看不见的追踪体系

设备指纹而非用户身份

这里有一个重要的概念转变,需要理解。 Meta 实际上不需要知道你是谁。它甚至可能根本不关心你的真实身份。Meta 真正需要的是——识别出你这台设备。 当外卖软件向 Meta 上传购买事件时,它会附上一个设备标识。这个标识可能来自:

  • 设备的 MAC 地址(网卡的物理地址)
  • IP 地址与网络特征的组合
  • 设备的硬件参数组合(屏幕分辨率、型号、操作系统版本等)
  • 应用安装列表的哈希值
  • 其他操作系统层面的唯一标识符 Meta 通过这些信息,创建了一个设备级别的档案。这个档案可能记录了: 这台设备在外卖软件上购买了炸鸡; 这台设备在某个时间访问过某个电商网站; 这台设备在 TikTok 上停留了 30 分钟; 这台设备的用户可能住在北京五环内; 这台设备最近关注了生活方式相关内容。 当这台设备的用户打开 Instagram 时,Meta 已经掌握了所有这些信息。算法所做的,就是基于这个档案,决定应该向这台设备推送什么广告。 关键发现: Meta 不是在追踪你这个人,而是在追踪这台设备。这个区别至关重要,因为它绕过了很多隐私保护机制。

为什么系统权限形同虚设

我曾经在 iPhone 的设置中关闭了"允许 App 请求跟踪"。这是 Apple 在 iOS中引入的隐私保护功能,本意是阻止应用追踪用户的 IDFA。 但精准广告仍然出现了。 这说明什么? 这说明 Meta 并不是主要依赖 IDFA 来追踪我的。即使我关闭了这个权限,Meta 仍然通过其他渠道获得了足够的设备信息。


共享的朋友,共享的档案

同舍的甜甜圈为什么出现在我的推送中

现在我们可以解释那个诡异的现象了。 我的同舍通过我的邀请链接下载了外卖软件,在他的设备上下单了甜甜圈。外卖软件向 Meta 上传了这条购买事件,附带了同舍设备的设备指纹。 但这还不足以解释为什么我看到了甜甜圈的广告。 关键信息是什么? 网络特征。 我和同舍住在同一个屋檐下。我们很可能共享同一个 WiFi 网络,至少在某些时间段内。这意味着:

  • 我们的公网 IP 可能相同或相近
  • 我们访问网络的时间模式可能有重叠
  • 我们在同一个本地网络中有互联网流量 Meta 的设备指纹系统具备识别"在同一个网络中活跃的多台设备"的能力。它可能会建立这样的关联: 设备 A(我的手机)和设备 B(同舍的手机)经常在同一时间段、从同一个公网 IP、访问 Meta 的服务。 这表明它们可能属于同一个家庭或办公地点。 因此,在推荐广告时,我们可以把设备 B 的兴趣数据也用来影响设备 A 的推送。 这就是为什么我会看到一个我完全没有互动过的商品的广告——因为我的同舍与这个商品互动过,而 Meta 判定我们在同一个物理位置。 这不仅仅是个人化推荐,这是基于共享物理空间的群体化推荐。

数据流的真实样貌

一条消息的完整旅程

让我们追踪一条数据从"我下单炸鸡"到"我收到广告"的完整旅程。

阶段 1:购买事件发生

我在外卖应用中下单 → 应用内部触发 fb_mobile_purchase 事件
│
├─ 事件内容
│  ├─ 商品:炸鸡
│  ├─ 金额:¥29.9
│  ├─ 时间戳:2024-10-30 12:30:00
│  └─ 设备特征(设备指纹)
│
└─ 发送目标:Meta 的数据服务器

阶段 2:数据汇聚

Meta 的服务器接收事件
│
├─ 关键步骤
│  ├─ 识别设备:这是我的 iPhone(设备指纹匹配)
│  ├─ 关联账户:这台设备在 Instagram 上登录过
│  ├─ 查询档案:该设备的历史行为数据
│  └─ 更新标签:为该设备添加"美食爱好者"标签
│
└─ 存储位置:Meta 的用户档案数据库

阶段 3:广告推送

我打开 Instagram 应用
│
├─ 系统检查
│  ├─ 验证登录用户设备
│  ├─ 查询该设备的档案
│  └─ 调用推荐算法
│
├─ 推荐算法
│  ├─ 输入:该设备最近 7 天的所有行为数据
│  ├─ 包括:购买炸鸡、同舍购买甜甜圈、浏览美食博主等
│  └─ 输出:推荐炸鸡和甜甜圈的广告
│
└─ 展示:精准广告出现在我的信息流中

每一个环节都无需用户的显式授权——因为所有的授权都被埋藏在 App 的隐私协议中,而大多数用户从来不会阅读这些协议。


反思与透明度

一个不舒适的真相

这一切的背后有一个不舒适的真相:我们已经失去了对自己数据流向的完全控制。 即使你关闭了系统级的追踪权限,即使你从不使用 Meta 的应用,即使你删除了所有的 Cookie——你仍然被追踪。 因为追踪不再依赖于单一的、可以被关闭的权限。它依赖于:

  • 应用开发者的 SDK 集成
  • 网络提供商的基础设施
  • 硬件制造商预装的软件
  • 数据经纪商的黑市买卖 这些都不是用户可以轻易控制的。

浏览器指纹的双重含义

浏览器指纹这项技术本身是中立的。它可以被用于:

  • 保护用户 - 识别欺诈、防止盗号、检测异常登录
  • 追踪用户 - 在用户无法察觉的情况下建立行为档案 Echoscan 开发浏览器指纹技术的目的,是前者——帮助平台识别欺诈、防止滥用。但这项技术的存在本身,也证明了精准追踪的可行性。 一旦这项技术被应用于追踪目的,用户几乎没有办法逃脱。

结语:看见与不看见之间

在浏览器指纹的整个应用系列中,我们讨论了很多可见的防御——反欺诈、安全识别、舆论防护。但这一篇特别篇想要揭示的是,设备识别技术的另一面:无处不在的追踪。 从炸鸡广告到算法推送,从单个应用到整个生态,一个完整的、多层次的设备识别系统正在运作。浏览器指纹只是这个系统中的一个环节。 我们无法完全逃脱这个系统。但我们可以选择看见它。 当你下次看到一条莫名其妙的精准广告时,你现在知道它是怎么来的了。你的设备在说话,而 Meta 在听。这不是巧合,这是一个精密的、跨越应用与网络边界的、基于设备指纹的追踪系统在工作。 问题不再是"为什么这么精准",而是"我应该怎样对待自己的数据"。 答案可能没有那么简单。但至少,我们现在知道大概怎么回事了。