OpenAI 通过广告像素跨站追踪用户浏览行为,技术细节被逆向曝光

0 阅读

一颗 cookie 如何让 OpenAI 知道你在看什么网页

让人担心的事情还是发生了。随着我们越来越依赖 AI 处理日常事务,聊天记录、工作内容甚至个人偏好不断流入模型。但更隐蔽的是,即使你没在 ChatGPT 里输入任何内容,你在其他网站上的浏览行为,也可能已经被 OpenAI 记录下来。

图片

安全研究者 buchodi 近日发布了一份技术报告,详细拆解了 OpenAI 广告平台(内部代号「bazaar」)的追踪链路。核心发现是:ChatGPT 会在用户设备上设置一个名为 __obi 的 cookie,当用户访问安装了 OpenAI 广告像素的第三方网站时,这个 cookie 会自动将浏览行为关联回用户的 ChatGPT 账号。

图片

报告发布后迅速登上 HackerNews 热榜第三,引发广泛关注。

追踪三步走:从账号绑定到跨站识别

整个机制分三步完成,每一步都经过实测验证。

第一步发生在用户打开 ChatGPT 时。客户端会生成一个 16 字节的随机标识符,并通过 /backend-api/bazaar/obi/sync-token 接口请求一个 RS256 签名的 JWT。这个 token 将随机标识符与用户账号绑定,有效期仅 60 秒,确保临时性。

第二步,客户端把这个 JWT 发送到 bzr.openai.com/v1/obi/sync。服务器验证后,返回一个 __obi cookie。关键在于,这个 cookie 被明确设置了 SameSite=None; Secure 属性,且有效期长达一年——这意味着它被设计成可以在跨站请求中自动发送。

第三步最令人意外:只要用户访问任何一个接入 OpenAI 广告像素的网站,浏览器就会在加载 <script src> 标签时自动附带 __obi cookie。甚至在 OpenAI 的任何 JavaScript 代码执行之前,你的身份标识就已经传回服务器了。

换句话说,你不需要点击广告,不需要与页面互动,仅仅打开网页,OpenAI 就知道“是你来了”。

SDK 不只被动接收,还会主动“扒”数据

更值得关注的是,OpenAI 的广告像素 SDK 不只是被动接收 cookie,还会主动从广告主页面上采集用户信息。

研究者在抓包数据中发现,SDK 通过四种渠道收集数据,并用标签区分来源:

  • in:广告主主动传入的数据
  • fm:从表单字段自动抓取的内容
  • ht:从页面渲染文本中提取的信息
  • js:从标签管理器(如 Google Tag Manager)的数据层获取的字段

在实际观测中,SDK 自动抓取的数据量远超广告主主动提供:前者产生 685 个事件,后者仅 255 个。

尤其激进的是对数据层的拦截。当前版本会从中提取邮箱和电话号码;而在 8 月 27 日之前的 0.1.31 版本中,连用户姓名和地理位置也会被抓取。虽然邮箱、电话、姓名在传输前经过 SHA-256 哈希处理,但国家、地区、城市和邮编却是明文发送。

邮编成了被采集最多的表单字段,在 28 个网站上触发了 100 次采集事件。

路径本身就能暴露敏感信息

OpenAI 声称 URL 查询参数不会被收集,只截取域名加路径部分。但研究者在分析 23929 条记录后发现,路径本身就可能泄露高度敏感的信息

例如,某些路径直接指向医疗状况说明页、债务解决方案流程页,甚至诉讼受理表单。这些信息虽无查询参数,但足以推断用户当前面临的困境或需求。

实测覆盖上千站点,匿名用户也难逃追踪

研究者不仅在自己的设备上复现了整个流程,还用两种独立抓包工具交叉验证,并分析了数月间的网络流量。样本覆盖 936 个不同的广告主像素和 1029 个主机名

在其手机上,同一个 __obi 值被从 12 个商业网站发送至 OpenAI 服务器,涉及 13 个不同像素 ID。这些网站包括:

  • 宠物电商 Chewy
  • 家居平台 Wayfair
  • 二手书商 ThriftBooks
  • 活动平台 Eventbrite
  • 生鲜订阅 HelloFresh
  • 在线教育 Coursera
  • 票务网站 SeatGeek

所有请求均返回 202 状态码,表明服务器确认接收。

在更大样本中,30 个不同的 __obi 值里有 12 个出现在多个广告主请求中,其中一个被 10 个不同广告主发送过。

更关键的是,即使用户未登录 ChatGPT,系统仍会分配一个“匿名”标识符。研究者解码了 932 个同步 token,其中 196 个标记为 anonymous。但这些匿名 ID 同样稳定——每台设备一个,至少持续 27 天不变。

这意味着,不登录并不能避免被追踪。

为什么这次特别让人不安?

研究者也承认,这套机制在结构上与 Meta 多年前建立的广告追踪系统几乎一致:登录账号、第三方 cookie、像素触发、站外行为回溯到用户画像。这确实是行业标准做法。

但问题在于,这套系统现在运行在一个 AI 聊天产品上

人们告诉 AI 的内容,往往是他们不会发在社交网络上的私密信息:健康疑虑、财务困境、情感问题、职业焦虑……而 ChatGPT 正在越来越多地代替用户执行操作——比如帮你查航班、订餐厅、写邮件、甚至未来可能代你购物。

当这样一个“知心助手”同时也是一个广告平台,它对你线上行为的了解就不再局限于你主动输入的内容,而是扩展到你在整个互联网上的足迹。

今年 5 月 1 日,OpenAI 更新隐私政策,宣布开始使用 cookie 在其他网站推广自家产品。5 月 13 日,加州用户提起集体诉讼,指控 ChatGPT.com 嵌入 Meta Pixel 和 Google Analytics,将对话主题、哈希邮箱和设备标识符外传。

而这次曝光的机制方向完全相反:OpenAI 自己成了那个广告巨头。它搭建了自己的追踪基础设施,让广告主把用户数据送回来。

今年 2 月,ChatGPT 广告正式向美国免费用户和 Go 级用户上线,CPM(千次展示费用)约 60 美元,最低投放门槛 20 万美元。到 5 月,系统已扩展至欧洲 31 国,广告主数量达数万。据《Wired》报道,免费用户的营销 cookie 已默认开启。

我们真的准备好让 AI “知道得更多”了吗?

技术上,这或许只是又一个广告追踪案例。但心理上,它打破了用户对 AI 助手的某种信任预期。

我们愿意向 AI 倾诉,是因为觉得它“只是工具”,不会评判,也不会利用。但如果这个工具背后站着一个广告引擎,而它正通过你访问的每一个网页默默拼凑你的画像——那种安全感就动摇了。

尤其当 AI 开始代表我们行动时,它的“知情范围”就变得至关重要。它知道你在看债务解决方案页面,然后在聊天中“贴心”推荐金融产品?它知道你浏览医疗症状,接着推送相关保险广告?

这些场景并非臆测。广告系统的本质就是基于行为预测意图,再精准触达。

OpenAI 当然可以辩称这是为了“提升用户体验”或“支持免费服务”。但用户有权知道:当你打开一个普通电商页面时,ChatGPT 是否正在后台记下这一笔?

目前,OpenAI 尚未就该报告作出公开回应。但对普通用户而言,最直接的防护可能是:

  • 使用浏览器扩展(如 uBlock Origin)屏蔽 bzr.openai.com
  • 在隐私模式下使用 ChatGPT
  • 定期清理 cookie,尤其是 __obi

不过,这些终究是治标之策。真正的问题是:在一个 AI 日益嵌入生活底层的时代,我们是否需要重新定义“数据边界”?

毕竟,让 AI 帮你写周报是一回事,让它知道你深夜还在浏览离婚律师网站,是另一回事。