ChatGPT通过广告收集器获取你在其他网站上的活动

Lobsters Hottest 新闻

摘要

ChatGPT使用广告收集器追踪用户在其他网站的浏览活动,并通过Cookies和广告商代码将行为与ChatGPT账户关联起来。

<p><a href="https://lobste.rs/s/jbnmj9/chatgpt_now_knows_what_you_do_on_other">评论</a></p>
查看原文
查看缓存全文

缓存时间: 2026/09/20 18:15

# ChatGPT现可通过广告收集器知悉你在其他网站上的行为 来源:https://www.buchodi.com/chatgpt-now-knows-what-you-do-on-other-websites-via-ad-collector/ OpenAI位于`bzr\.openai\.com`的广告收集器会设置一个名为`\_\_obi`的Cookie,其作用域限定为`\.openai\.com`。当你在ChatGPT时,该值与你的ChatGPT账户绑定。之后,当你在普通网站上浏览时,`\_\_obi`会被发送至OpenAI。 任何在ChatGPT上购买广告的公司都会在其自身网站上安装一小段OpenAI代码(https://developers.openai.com/ads/measurement-pixel?ref=buchodi.com),其方式与零售商已经安装Meta和Google的追踪代码类似。加载该代码时,会将`\_\_obi`连同你正在浏览的页面数据一并发送给OpenAI。这些数据包括你正在搜索的商品、正在阅读的文章以及购买行为。 核心在于,OpenAI能够将你在这些网站上的活动与其ChatGPT账户关联起来。 我通过自己的手机复现了整个机制,使用了两种独立的捕获方法进行验证,并与覆盖1029个主机名、936个不同广告商像素的数月观测流量进行了交叉核对。 ## 工作原理 **第一步: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": "«已编辑:64位十六进制账户标识»", "subject_type": "account_user", "obi": "«已编辑:22字符标识符»", "exp": "«iat + 60s»" } ``` 其中`sub`是账户标识。`obi`是标识符。该令牌将两者绑定,其作用域限定于收集器,并在60秒后过期。`bzr`是`bazaar`的缩写,OpenAI广告平台的内部名称;`wadi`是签发服务。 **第二步:该标识符成为OpenAI域名下的Cookie。** 客户端向`bzr\.openai\.com/v1/obi/sync`跨站点POST发送`\{"token": "«JWT»"\}`。响应为: ``` Set-Cookie: __obi=«已编辑»; Domain=.openai.com; HttpOnly; Max-Age=31536000; Path=/; SameSite=none; Secure ``` 配置了`SameSite=none`和`Secure`的Cookie才能在跨站点请求中被发送。`Max\-Age`为一年。JWT中的`obi`值与Cookie中的值完全相同。 **第三步:广告商网站将其回传。** 有三类请求从广告商的页面发送到OpenAI的主机。在一个存储了`\_\_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的``请求上。仅通过加载该标签,标识符就被泄露了。 ## 随附传输的数据 同一SDK也会从广告商的页面收集身份信息。负载区分了四种来源,由OpenAI自行标记:`in`代表广告商有意传递的值,而`fm`、`ht`、`js`代表SDK从表单字段、渲染后的页面文本和标签管理器总线中抓取的值。 在观测的流量中,抓取的身份信息(685次事件)多于广告商提供的身份信息(255次事件)。标签管理器总线是电子邮件的最大来源。SDK替换了`window\.dataLayer\.push`并使用其自定义函数,同时读取`adobeDataLayer`,并通过解析`gtm\.js`脚本标签的`l=`参数来定位重命名的GTM层。当前版本会从中提取电子邮件和电话号码。版本0\.1\.31在8月27日收窄范围前,还会提取姓名和地理位置。 电子邮件、电话号码、名和姓在传输前会进行SHA\-256哈希处理。国家、地区、城市和邮政编码则以明文发送。邮政编码是被抓取最多的表单字段,在28个网站上出现了100次事件。 URL在发送前会缩减为源地址加路径;观测到的23,929个URL中,没有一个携带查询字符串。路径信息得以保留,而到达收集器的路径信息包括一种医疗状况、一个债务解决方案流程和一个诉讼立案表单。 在已知设置的881个像素中,638个启用了自动匹配,包括所有观测到的信用卡和贷款广告商。该功能由OpenAI的Ads Manager控制。一个拒绝名单排除了密码、一次性代码、信用卡号、社会安全号码、出生日期、病史、诊断结果和法院字段。 ## 该Cookie专为跨站点设计 在同一个广告商页面的请求上,浏览器阻止了所有其他OpenAI Cookie: | Cookie | 结果 | 原因 | | :--- | :--- | :--- | | `oai\-did`, `oaicom\-stable\-id` | 被阻止 | `SameSite=Lax` | | `oai\-client\-auth\-info`, 会话Cookie | 被阻止 | 域不匹配 | | `\_\_obi` | 已发送 | - | `\_\_obi`是唯一配置了`SameSite=None`的OpenAI标识符。 ## 观测到的覆盖范围 在我的设备上,一个`\_\_obi`值被从12个商业网站发送至OpenAI,涉及13个不同的像素ID,包括Chewy、Wayfair、ThriftBooks、Eventbrite、HelloFresh、Coursera和SeatGeek。所有请求都返回了`202`状态码,表示已被接受。 在更广泛的流量中,30个不同的`\_\_obi`值中有12个出现在多个广告商下,其中一个出现在十个广告商下。 ## 登出状态下依然有效 在932个解码的同步令牌中,736个携带`subject\_type: account\_user`,196个携带`anonymous`。匿名主体的稳定性与账户主体一样:每个设备一个,至少持续27天。 ## OpenAI的Cookie政策如是说 OpenAI的Cookie政策 (https://openai.com/policies/cookie-policy/?ref=buchodi.com) 将`\_\_obi`列为分析类Cookie,有效期一年,适用于`chatgpt\.com`和`openai\.com`。这是该部分中唯一的条目。 该政策将分析类Cookie描述为帮助OpenAI理解其服务的性能和使用情况。OpenAI将分析和营销作为两个独立的同意选项运行:`oai\_consent\_analytics`和`oai\_consent\_marketing`。我解码的每个同步令牌都携带了`consent\_decision: analytics\_allowed`。允许分析但拒绝营销的用户也会收到此Cookie。 ## OpenAI的回应 我在9月14日向[press@openai\.com](mailto:[email protected])和[privacy@openai\.com](mailto:[email protected])发送了该机制的描述和两个问题:为什么`\_\_obi`被归类为分析Cookie,以及一个授予分析同意但拒绝营销同意的用户是否仍会收到它。 回复来自OpenAI Support。它确认了收到询问,表示这些观测结果将在内部共享以供审查,但并未回答任一问题。上述关于脚本加载的观察是在发送询问之后进行的。如果OpenAI做出回应,我将更新本文。 ## 限制 * **浏览器。** 在安卓版Chrome上观测到。Safari的智能防跟踪 (https://webkit.org/tracking-prevention/?ref=buchodi.com) 会阻止所有第三方Cookie,而iOS上的Chrome基于WebKit运行,因此该机制在任何iOS浏览器上都不起作用。桌面版Chrome未经测试。 * **触发条件。** 大约每五个ChatGPT会话中有一个会产生同步令牌。ChatGPT的移动网页客户端在未同步的情况下投放广告。执行以下步骤的用户可能会看到像素触发但没有Cookie附加。 * **关联过程未被观测到。** `202`表示收集器接受了附带Cookie的事件。OpenAI在服务器端将其解析到账户,这源于设计本身;我并未实际观察到这一过程发生。 * **Meta多年前就构建了结构等效物。** 一个已登录的账户、像素触发时的第三方Cookie、解析到个人资料的离站转化。该机制是标准的广告技术。前所未有的是将其运行在AI聊天产品上。人们会对这些产品倾诉他们不会在社交网络上公开的事情,而这些产品也越来越多地代表他们行事。 * **该像素的另一个Cookie不执行此功能。** `\_\_obref`是在广告商自己的域名上设置的。每个网站获得不同的值,且任何网站都无法看到其他网站的值。在观测到的2860个值中,2828个恰好只出现在一个广告商下。 * **广告商无法看到此信息。** `\_\_obi`属于一个其脚本无法读取的域名。他们安装了转化像素,但无法知道其访问者正在被解析到ChatGPT身份。

相似文章

ChatGPT 广告库

Product Hunt

一款名为 ChatGPT Ad Library 的工具允许用户查看在 ChatGPT 中显示的所有广告。

ChatGPT广告定向投放效果很差

Hacker News Top

一项实验显示,与谷歌广告及免费引流相比,ChatGPT上的广告定向投放效果很差且转化率较低,已排除机器人流量是主要原因。

ChatGPT的计算机历史功能追踪您的点击和按键

The Verge

ChatGPT的macOS桌面应用引入Computer History功能,该功能追踪用户操作如点击和按键,以构建时间线,用于建议自动化和引用过去活动,并带有选择加入的隐私控制且不捕获图像。

ChatGPT广告购买新方式

OpenAI Blog

OpenAI扩展ChatGPT广告试点,推出自助式广告管理器测试版、CPC竞价和增强型效果衡量工具,让企业投放广告更加便捷。