# 独立调查:ChatGPT 的 __obi 跨站 Cookie 可将站外浏览行为关联到 ChatGPT 账号
- 来源:Hacker News 热门(buzzing.cc 中文翻译)
- 作者:lmbbuchodi
- 发布时间:2026-09-21 02:05
- AIHOT 分数:76
- AIHOT 标记:精选
- AIHOT 链接:https://aihot.news/items/cmua567e703tmro5t558lzx7o
- 原文链接:https://www.buchodi.com/chatgpt-now-knows-what-you-do-on-other-websites-via-ad-collector
## 精选理由
作者以第一手流量捕获复现了 OpenAI 广告收集器的跨站追踪机制,读者可以据此理解 ChatGPT 账号与站外浏览行为的关联路径。
## AI 摘要
作者通过自己手机上的流量捕获复现了 OpenAI 广告收集器机制:bzr.openai.com 在 .openai.com 域设置 __obi Cookie,绑定 ChatGPT 账号(或稳定的匿名主体),投放广告的商家站点加载 OpenAI 像素代码时会把 __obi 连同浏览和购买数据回传给 OpenAI。
## 正文
OpenAI 的广告收集器位于 bzr.openai.com,会设置一个名为 __obi 的 cookie,作用域限定为 .openai.com。该值在你使用 ChatGPT 期间存在,并与你的 ChatGPT 账户绑定。随后,__obi 会从你访问的普通网站发送给 OpenAI。
任何在 ChatGPT 上购买广告的公司都会在自己的网站上安装一小段 OpenAI 代码,就像零售商已经安装 Meta 和 Google 的追踪代码一样。加载这段代码会将 __obi 连同你正在浏览的页面数据一起发送给 OpenAI。这包括你正在搜索的产品、正在阅读的文章以及购买行为。
归根结底,OpenAI 可以将你在这些网站上的行为与你的 ChatGPT 账户关联起来。
我在自己的手机上复现了完整机制,用两种独立的捕获方法进行了验证,并与覆盖 1,029 个主机名上 936 个不同广告主像素的、长达数月的观测流量进行了交叉核对。
工作原理
第 1 步。ChatGPT 创建一个标识符并对其进行签名。
在 chatgpt.com 上,客户端生成 16 个随机字节,并调用 POST /backend-api/bazaar/obi/sync-token(未登录时则调用 /backend-anon/)。后端返回一个 RS256 JWT:
{ "iss": "chatgpt-wadi", "aud": "bzr.openai.com", "purpose": "obi_sync", "operation": "set", "consent_decision": "analytics_allowed", "consent_policy_version": "user_granular_consent_v1", "sub": "«redacted: 64-hex account subject»", "subject_type": "account_user", "obi": "«redacted: 22-char identifier»", "exp": "«iat + 60s»" }
sub 是账户。obi 是标识符。token 将二者绑定,作用域限定于收集器,并在 60 秒后过期。bzr 代表 bazaar,即 OpenAI 内部对广告平台的称呼;wadi 是签发服务。
第 2 步。该标识符成为 OpenAI 域名下的一个 cookie。
客户端将 {"token": "«JWT»"} 跨站 POST 到 bzr.openai.com/v1/obi/sync。响应如下:
Set-Cookie: __obi=«redacted»; Domain=.openai.com; HttpOnly; Max-Age=31536000; Path=/; SameSite=none; Secure
SameSite=none 与 Secure 是 cookie 在跨站请求中被发送所需的配置。Max-Age 为一年。JWT 中的 obi 值与 cookie 中的值完全相同。
第 3 步。广告主网站将其回传。
有三类请求会从广告主的页面发往 OpenAI 的主机。在一台 jar 中含有 __obi 的手机上,这三类请求都携带了它:
请求 携带了 __obi 备注
GET bzrcdn.openai.com/sdk/oaiq.min.js 是 脚本本身的加载
POST bzr.openai.com/v1/sdk/events 与 obref 是 转化事件
POST bzr.openai.com/v1/sdk/events,裸请求体 是 该 SDK 的“无凭据”路径
GET bzrcdn.openai.com/pixel-config/… 完全没有 cookie 头 对照组
第一行尤其值得关注。像素 SDK 有一条省略凭据的代码路径,但这无济于事:在 OpenAI 的任何代码运行之前,浏览器就已经把 cookie 附加到了加载该 SDK 的