你还没开口,系统先验明正身:ChatGPT 被曝用 React 状态配合 Cloudflare“查户口”

机器人越来越像人,网站开始检查“你是不是这整个页面的一部分”
如果你最近觉得,互联网上的验证码越来越聪明、也越来越“不讲武德”,这次的发现大概会让你点头:原来系统不只是看你是不是一个正常浏览器,它还要确认你是不是一个真的把 ChatGPT 网页完整跑起来的浏览器。
根据安全研究者对 ChatGPT 流量的逆向分析,每一次用户发送消息时,浏览器都会触发一段由 Cloudflare Turnstile 下发的程序。这套程序会在本地收集 55 项属性,传统的浏览器指纹只是其中一层:比如 WebGL 渲染器、屏幕尺寸、硬件并发数、字体测量、DOM 操作能力、存储配额等。这些年大家对这类“浏览器体检表”已经不陌生了,广告、风控、反欺诈系统都爱用。
真正让人眼前一亮,也让人有点后背发凉的,是第三层:它会去检查 ChatGPT 前端应用自身的 React 状态,包括 __reactRouterContext、loaderData、clientBootstrap 等内部数据。说白了,系统不是在问“你是不是 Chrome”,而是在问“你是不是一个真的把 ChatGPT 这个单页应用完整加载、执行、注水、激活后的 Chrome”。如果一个机器人框架只是伪造浏览器指纹,却没真正运行 ChatGPT 的前端逻辑,那就很可能过不了关。
这件事的重要性在于,它把反爬虫和反自动化的战场,从浏览器层推进到了应用层。过去很多自动化工具擅长伪装 user-agent、显卡参数、时区语言,甚至能模拟鼠标轨迹,但如果系统开始核对 React Router 的上下文、SSR 注水结果和客户端 bootstrap 状态,门槛一下子就高了。这相当于保安不再只看你的身份证,还要问你昨晚是不是住在这栋楼里、钥匙能不能打开门、冰箱里有没有你的酸奶。
“加密”没那么神秘,但设计思路很清楚:别让你轻易看懂
这项研究里最有戏剧性的部分,是研究者把 Cloudflare 下发的 Turnstile 字节码拆开后发现,所谓的加密并不是坚不可摧的密码学屏障,更像是一层防君子不防专家的遮羞布。外层数据用请求中的 p token 异或,内层真正的指纹程序则再用另一个 key 异或;而这个 key,竟然就藏在同一段字节码指令参数里。
这当然不代表 Cloudflare “不会加密”,更准确地说,这是一种偏工程化、偏对抗性的混淆设计。它的目标不是让国家级对手永远看不懂,而是让普通分析、静态扫描、脚本小子批量复用变得困难。研究者声称在 377 个样本里都成功解出了程序内容,并且 55 项检查项没有变化,这说明这套系统的结构相当稳定,至少在观察窗口内,它不是随机乱打拳,而是一套成熟的风控编排。
从产业角度看,这种做法并不罕见。Cloudflare、Akamai、PerimeterX 一类厂商,过去几年都在把反机器人方案做得越来越“黑盒”:你很难知道它到底收了哪些信号、如何组合打分、何时触发挑战。原因也很简单,规则一旦太透明,攻击者就会照着改。反过来,黑盒越深,普通用户的知情权就越薄。这也是这类系统最微妙的地方:它的安全性和它的不透明,往往是绑在一起的。
这不只是浏览器指纹,它已经在读页面的“灵魂”
不少人看到“WebGL、字体、屏幕尺寸”这些字眼会说:哦,又是指纹识别。可这次不一样的地方,在于它把 Cloudflare 网络侧的信息和 OpenAI 应用侧的信息都拉进来了。
研究显示,这套程序除了查看本地浏览器特征,还会读取 Cloudflare 边缘网络注入的一些头部信息,比如城市、经纬度、连接 IP、区域字段。换句话说,系统在核对一件事:你当前这个浏览器环境、你所处的网络路径、你访问到的具体应用页面,三者是不是一套逻辑自洽的真实现场。如果你通过奇怪的代理链路发请求,或者绕过 Cloudflare 直接碰源站,或者让一个“没真正渲染页面的无头工具”假扮成用户,这些层之间就可能对不上。
更进一步,研究者还提到所谓的 Signal Orchestrator,也就是行为层采集:键盘敲击节奏、鼠标移动速度、滚动模式、闲置时间、粘贴事件等。这就不是“你是谁”的问题了,而是“你像不像一个活人”。许多平台现在都在把设备指纹、网络线索、页面运行状态、行为生物特征叠加起来使用,单一信号的时代已经过去。因为今天的大模型代理、浏览器自动化、脚本平台,已经能轻松骗过老式验证。
这背后其实是 AI 时代的一次基础设施升级。生成式 AI 把自动化门槛压得太低了,刷号、撞库、内容采集、批量薅 API、假流量注册,都变得更便宜。平台要守住成本和服务质量,只能把防线往前挪,甚至挪到前端框架内部。某种程度上,React 状态正在变成新的验证码。
用户会更安全,还是更透明地被“画像”?争议才刚开始
站在平台一侧,这套机制很好理解。OpenAI 这样高热度、强算力消耗的产品,本来就是自动化滥用的重灾区。每一个机器请求,都可能是真金白银的 GPU 成本;每一个绕过限制的脚本,都会挤占真实用户的体验。在这种前提下,Cloudflare 帮它做严密的客户端验真,完全符合商业逻辑。
但站在用户一侧,问题也很直接:边界到底在哪里?如果系统已经不只是看浏览器公开属性,而是深入读取应用内部状态、保存局部指纹到本地存储,并结合网络位置与行为轨迹来综合判定,那么用户到底知道多少、能控制多少?研究者在文中说得很直白:所谓隐私边界,更多是政策问题,不是密码学问题。因为掌握程序生成权的一方,本来就能知道 key,也能知道规则。
这会让很多人想起过去几年围绕浏览器指纹、ATT、第三方 cookie、隐私沙盒的争论。行业一边高喊保护隐私,一边又在风控领域构建越来越精细的“识别能力”。区别只在于,广告公司想知道你是谁,安全公司想知道你是不是坏人。但技术上,两者经常共享同一套传感器:Canvas、WebGL、字体、存储、行为、网络上下文。于是公众天然会追问:今天它用于反机器人,明天会不会被更广泛地挪作他用?
我个人的判断是,这类机制会越来越常见,而且会从少数高价值 AI 产品,扩展到支付、票务、招聘、云服务甚至内容平台。因为自动化攻击正在“AI 化”,防守端也只能“应用化”。未来的验证不一定跳出一个红绿灯图片让你点,但它会默默确认:你有没有运行正确的 JavaScript、走过正确的网络、产生过合理的人类行为、处在可信的会话链条里。验证码会越来越少被看见,却越来越多地存在。
这场攻防不会结束,它只会变得更像一场静默的基础设施战争
从技术史来看,互联网一直在经历同一个循环:有人发明自动化,有人发明识别自动化的方法;有人伪装得更像人,平台就把检测做得更像“环境取证”。十年前,很多机器人还卡在 UA 和 IP 这一层;今天,系统已经开始检查你的前端框架有没有完成 hydration。再过几年,浏览器可能会原生提供更强的设备证明、执行环境证明,甚至通过硬件可信模块来给“真实用户会话”背书。
这对普通用户来说有好有坏。好的一面是,垃圾流量、脚本薅羊毛、批量账号操作可能会更难,服务稳定性会提高;坏的一面是,我们每一次点击、每一次加载页面,都可能被更细致地判读。以前网页像商场保安,现在更像机场安检:流程更顺滑了,但检查也更深了。
ChatGPT 这次被拆出来的,不只是一个风控细节,而是一个行业信号:AI 产品正在把“前端页面本身”变成安全边界的一部分。它提醒我们,未来的网页不再只是内容容器,也不只是交互界面,而是身份验证、行为验证、环境验证共同发生的现场。你以为你只是打开了一个聊天框,实际上你是走进了一套实时鉴别系统。
这件事最值得继续追问的,不是“Cloudflare 有没有本事做到”,而是“平台应该在多大程度上告诉用户它做了什么”。当看不见的验证越来越强大,透明度就不该越来越稀薄。否则,打击机器人这件正当的事,迟早会和用户信任撞个满怀。