安全研究员Jamie Larson发布了一项深度技术分析,揭示了ChatGPT前端部署的一套精密反爬虫系统。通过解密377个Cloudflare Turnstile程序样本,研究发现该系统不仅进行传统浏览器指纹识别,更进一步验证用户是否完整运行了ChatGPT的React应用程序——这一机制使得单纯模拟浏览器环境的爬虫工具难以绕过检测。
三层验证架构
ChatGPT的Sentinel防护系统由三个核心组件构成:Turnstile指纹验证、Signal Orchestrator行为监控和Proof of Work计算证明。其中Turnstile作为第一道防线,每次用户发送消息时都会在后台静默运行,收集55项属性指标,横跨三个验证层级。
![]()
第一层是传统的浏览器指纹识别,涵盖WebGL渲染器信息、屏幕参数、硬件规格、字体测量等33项属性。第二层利用Cloudflare边缘网络注入的地理位置和IP信息,确保请求确实经过Cloudflare网络而非直连源站。第三层则最为关键——直接读取ChatGPT React应用的内部状态,包括reactRouterContext、loaderData和clientBootstrap三个属性。
这些React内部状态只有在应用程序完全渲染并hydrate后才会存在。这意味着,一个仅加载HTML但未执行JavaScript的headless浏览器,或者一个仅stub浏览器API但未真正运行React的爬虫框架,都将无法通过验证。
加密机制的"障眼法"
Turnstile程序采用双层加密传输。外层使用XOR算法,密钥为HTTP请求中的ptoken;内层19KB的程序代码同样使用XOR加密,但密钥并非如预期般动态生成,而是直接嵌入在VM指令中的浮点数字面量。研究员在50次请求中验证了这一点——每次都能从指令中提取密钥并成功解密。
这种设计引发了关于"加密"真实目的的讨论。Larson指出,该机制的真正作用并非防止逆向分析,而是实现运营层面的目标:隐藏指纹检查清单以防止静态分析、使每个token唯一以防止重放攻击、允许Cloudflare在不通知任何人的情况下更改检测逻辑。对于终端用户而言,隐私边界更多取决于政策而非密码学。
行为生物识别层
除Turnstile外,Signal Orchestrator组件安装了针对键盘、鼠标、滚动、粘贴等事件的监听器,追踪36项行为属性,包括按键间隔、鼠标移动速度、滚动模式、空闲时间和粘贴事件。这构成了一个持续运行的行为生物识别层,用于区分人类操作与自动化脚本。
Proof of Work组件则添加了计算成本门槛,要求客户端完成SHA-256 hashcash计算。数据显示72%的验证可在5毫秒内完成,难度系数在40万至50万之间随机分布。该组件同时包含7个二进制检测标志,用于识别AI生成、PRNG创建、缓存、Solana等特定环境特征。
这项研究揭示了现代反爬虫技术的演进方向——从单纯的浏览器环境检测,深入到应用层状态验证。对于依赖headless浏览器或API模拟的爬虫工具而言,这意味着需要完整执行目标应用的前端代码栈,而非仅仅伪造浏览器指纹。
研究同时引发了对用户隐私的关切。虽然Cloudflare和OpenAI声称这些机制用于区分人类与机器人,但系统能够访问React内部状态的事实表明,平台对用户设备上运行的代码拥有深度洞察能力。在AI服务竞争日益激烈的背景下,此类防护机制可能成为行业标配,但其透明度和用户知情权仍有待商榷。
截至发稿,OpenAI和Cloudflare尚未对该研究发表正式回应。
参考来源:https://www.buchodi.com/chatgpt-wont-let-you-type-until-cloudflare-reads-your-react-state-i-decrypted-the-program-that-does-it/