Skip to content
雲里
里雾
YoYo / 阅读笔记

你以为你是真人,其实你是「已加载的 React 应用」

瑶瑶
YoYo

这篇在说什么

一个安全研究者花了力气逆向分析了 ChatGPT 每次发消息时悄悄运行的 Cloudflare Turnstile 验证程序。核心发现是:Turnstile 验证的不只是「你的浏览器是真的」,而是「ChatGPT 的 React 应用真的在你浏览器里完整加载运行了」。

具体来说,Turnstile 检查 55 个属性,分三层:

也就是说,一个伪造了完美浏览器指纹的 Bot,只要没有真正跑起 ChatGPT 的 React 应用,Turnstile 就能识别出来。

文章还顺带嘲讽了一下这个加密机制:Outer Layer 的 XOR Key 藏在 Payload 里——服务器下发的字节码里直接带着解密用的浮点数 Key,研究者 50 次请求 50 次命中。这不是真正的安全,只是让逆向工程多一点体力劳动。

我的判断

技术层面:这个方向是对的,但护城河没有想象中宽

传统 bot 检测看的是「浏览器像不像真的」。这个思路的致命弱点是:你总能用 Playwright 或 Puppeteer 跑一个真实的 Chrome,浏览器层完全干净。Turnstile 的进步在于把检测升级到了「应用层」——你得真的加载了 ChatGPT 这个特定的 React 应用,检测才通过。这是合理的架构思路。

但我对此并不感到兴奋。原因:应用层检测本质上是在和自动化工具赛跑,而不是在解决根本问题。只要你有真实的浏览器在跑(无论是你自己还是用户授权的工具),就没有什么能区分「坐在屏幕前打字的人」和「一个调用了 Chromium 实例的程序」。这层检测增加的是绕过成本,不是安全性。

那个「Key 在 Payload 里」的笑话,我不觉得是漏洞,但确实暴露了一种常见的工程心理

把 Key 藏在字节码里假装是安全,这个设计决策的逻辑我理解:反正外人不知道协议长什么样,Key 在 payload 里也不算明文传输——只是混淆。但研究者 50 次请求都能找到同一个位置的同一个浮点数,这说明加密的收益更多是心理上的:让「坏人」得多费一道力,而不是真正让坏人进不来。

这让我想起一个更普遍的现象:很多安全机制防的不是真正的攻击者,而是懒得动手的人。Turnstile 做到了它的目标(把绝大多数脚本爬虫拦在门外),但说它比传统验证码「更安全」,我认为是高估了。

文化层面:这背后的 Irony 我觉得挺有意思

一边是 AI 公司们拼命让 AI 写出更像人写的东西,另一边是同一批公司(或同行的其他公司)在拼命证明「屏幕后面是一个真实的人类」。这两个目标从根本上矛盾,但没有人觉得哪里不对。

更深一层想:我们对互联网「真实性」的认知正在被改写。早期的互联网默认匿名是权利,身份是可选的。现在 AI 让任何人都能批量生产「看起来像人写的内容」,于是平台开始需要证明「这不是 AI」——但「证明你不是 AI」本身就对真实用户造成了摩擦,而这个摩擦最终会落在谁身上?往往是那些没有技术背景、不会绕过的普通用户。

这个趋势不可逆,但我没有简单的好评或差评。

结论

推荐读。 对象是安全工程师、爬虫工程师,或对互联网基础设施变化感兴趣的人。

技术上有价值的部分是架构思路:应用层 bot 检测比浏览器层检测更难绕过,这是事实。但你不需要深度逆向 377 个样本才能得出这个结论——读结论就够了。

真正值得想一想的,是这篇文章折射出的更大的东西:AI 让「模拟人类」变得太容易,于是互联网的基础信任模型正在被迫重建。这个重建过程没有清晰的终点,而我们都在这个过程里。


分享这篇文章:
分享到微博 分享到 QQ 分享到 X

Previous
肌酸深度调研:作用机制、多维度证据、副作用与产品选购
Next
昼夜节律重建与营养补充:14 天作息拉回、肌酸与中式食谱