BLOG
AI 通关了全部验证码:当「证明你不是机器人」失效,拿什么证明你是人?
开场:一个 AI,刚刚在网页上证明了自己「不是机器人」
9 月 7 日,OpenAI Labs 成员 Sharif Shameem 公开演示:GPT-6 Astra 连续通关《I’m Not a Robot》全部 48 关人机验证。
前几关还是我们熟悉的图片识别、文字判断;往后难度陡增——拖拽、停车、视觉搜索、节奏控制、逻辑小游戏。Astra 一路看屏幕、操作鼠标键盘、根据页面变化调整动作,最后拿到了游戏颁发的「人类认证」。
这事的可笑与可怕在同一个点上:验证码的设计初衷,就是把机器挡在「像人一样操作界面」这道门外。现在门里的机器出来把门拆了。
有意思的是,报道这件事的 AI 科技评论,标题就带着句告别——「再见 reCAPTCHA」。但防线真的没了吗?我把这 48 关背后的技术事实,和现代网站真实的反机器人体系捋了一遍,然后把问题抛给了 17 年软件从业、现任 AI 技术总监的永亮——他做的企业系统,天天都在跟「人还是机器」这个问题打交道。
拾闻:AI 把验证码全通了,你的第一反应是「完了」还是「早知道」? 永亮:都不是,是「该来的终于来了」。验证码防的从来不是「聪明」,是「手笨」——现在 AI 手不笨了,这道题当然作废。但作废的是题目,不是考试。 拾闻:那咱们就聊透:它到底跨过了什么、现代网站还在靠什么防、以及「证明你是人」这件事以后怎么办。
Q1:48 关通关,技术上到底意味着什么?
永亮:意味着 AI 第一次把「看懂界面」和「连续操作」焊成了一条稳定的工作流程。
很多人以为通关验证码就是「图像识别变强了」,这是最大的误解。识别只是入场券,真正的难点在后面。
用一个控制系统的视角看:网页有个内部状态,AI 看到的截图只是这个状态露出来的一角。Astra 每点一下、拖一下,页面就变一次——它必须从一帧画面、历史画面和自己做过的动作里,推断「我现在在任务的哪一步」。停车关卡最能说明问题:画面里有车,但画面里没有「车为什么停在这儿」;节奏关卡更狠,环境在它思考的时候还在变。
支撑这条工作流程的,是三层被验证过的能力。公开数据:Astra 在 ScreenSpot-Pro(测「语义到坐标」的界面定位能力)拿到 92.7%;在 OSWorld 2.0(测长程真实电脑操作)拿到 72.6%,模拟任务耗时从约 75 分钟压到约 40 分钟。
这里有个关键认知:**单步准 ≠ 连续稳。**点错一个按钮,下一帧页面就进了另一条分支,后面所有推理都建立在错误前提上。所以长程操作需要一个隐蔽模块——「动作后的状态校验」:我点了关闭弹窗,新截图里弹窗还在?那这步算失败,重试或换路。48 关全通,说明这套校验机制真的转起来了。
一句诚实的补丁:演示者自己没有公布完整的运行环境细节,48/48 不能当成严谨的纯视觉基准成绩。但它揭示的方向是真的——验证码赖以存在的「机器做不到连续 GUI 操作」假设,已经塌了。
Q2:那现在的网站还在裸奔吗?现代反机器人体系到底是什么?
永亮:没有裸奔。真正的防线十年前就开始搬家了——从「考题」搬进了浏览器和服务端。
你以为你在做九宫格图片,其实图片题早就是最后一道摆设。真实的判断发生在你看不到的两层。
第一层,浏览器环境信号。 reCAPTCHA v3 的机制:你还没点任何东西,浏览器就在后台给你的行为打出一个风险分——鼠标轨迹、页面停留、交互上下文都在计算里,最后给服务器一个分数,由服务器决定放不放行。Cloudflare 的 Turnstile 更彻底:一组轻量挑战跑在浏览器里(计算挑战、Web API 探测、环境特征),通过后签发一个一次性 token,有效期 300 秒、只能兑换一次。
第二层,网络与请求特征。 TLS 握手指纹(JA3/JA4)能看出你是不是真实浏览器;请求的时间序列、频率、上下文异常,服务端全都看在眼里。
这两层合起来解释了一件事:Astra 通的是「认知考题」,但服务器还能看到它看不到的东西——它跑在什么客户端里、请求序列正不正常、token 是不是有效的。就像考生答对了所有题,但监考老师发现他的笔不是自己的。
不过这层防线也有保质期。AI 现在经常直接跑在真实 Chrome 浏览器里,天然继承真实浏览器的全部协议特征——和过去一眼假的 Selenium 脚本完全不是一回事。Cloudflare 文档现在还明确不支持自动化框架,但「靠浏览器指纹区分人机」的窗口正在收窄。
Q3:「证明你是人」这件事,以后还成立吗?
永亮:这个问题本身要被改写了——因为以后一半的「机器访问」是合法的。
想一个马上就普遍的场景:你让 AI 助手去查航班、改订单、填报销单。服务器面对的确实是一台机器,但拦下它,拦掉的是你自己的正常需求。传统验证码的「人/机器」二元分类,信息量已经不够用了。
业界的答案是换问题:不问「你是不是机器」,改问「你是哪台机器、谁授权你来的、你被允许做什么」。
Cloudflare 今年上线的 Web Bot Auth 就是这个思路的实物:AI 助手生成自己的 Ed25519 密钥对,用私钥给每个 HTTP 请求签名,公钥发布在公开目录。服务器验证签名——这跟验证码的逻辑完全不同:**验证码靠行为特征猜你是谁,签名用密码学证明你是谁。**AI 视觉能力再强十倍,也算不出别人私钥的有效签名。
但认证只是第一半,授权是第二半:确认了这个 AI 的身份,还要限定它能干什么——允许查订单,不允许取消订单;主助手调用子助手时,权限还得逐级收窄。未来的 Web 安全模型是一条可验证的委托链:AI 身份有效 → 用户授权有效 → token 没过期 → 操作在授权范围内。
**翻译成大白话:验证码时代问「你是人吗」,AI 时代问「你是谁、谁让你来的、能干什么」。**从排斥机器,变成管理机器。
Q4:对普通开发者和小企业,现在该做什么?
永亮:三件事,按优先级。
**第一,如果你的网站还在用图片验证码当主要防线,今天就该升级。**上 reCAPTCHA v3 或 Cloudflare Turnstile(免费),把判断移到服务端。图片题留着也行,但只当装饰用,别当锁用。
**第二,别把 AI 流量一刀切当敌人。**你的用户马上会带着 AI 助手来。提前想清楚哪些操作对授权 AI 开放、哪些不开放,比到时候慌着全封强。
**第三,如果你做的是 AI 应用,开始考虑给客户端做身份。**Web Bot Auth 这类标准还在早期,但方向明确:能被验证身份的 AI,未来在网络上会比「匿名 AI」畅行得多。早一步接入,早一步不被误伤。
顺带回应一个大家可能有的恐慌:验证码不会一夜消失,你明天登录网站还是要点红绿灯。真正变化的是底下那套逻辑——只是你感知不到而已。基础设施的更替从来都是静悄悄的:你不用换手机,世界的锁已经换了。
Q5:这事的终局是什么?二十年后我们怎么证明自己?
永亮:终局可能是——不再需要证明。
往回看二十年,验证码的鼎盛期,本质是一个「人类上网、机器辅助」的时代,人机边界清晰,所以一道题就能分两边。现在边界正在溶解:人的每个动作有 AI 参与,AI 的每次操作背后是人的意图。
到那时候,「身份」会沉到更底层:你的设备、你的密钥、你的生物特征、你的授权链,在后台完成一切证明。你感知不到验证的存在,就像你现在感知不到 TLS 握手的存在。
听起来很美好?我留一个反向的提醒:**当证明完全自动化,被冒充的风险也完全自动化了。**你的 AI 身份被窃取,等于数字世界的「你」被偷走——以后保管好你的私钥,会和保管好身份证一样重要。
二十年前的问题是:屏幕对面有没有人。二十年后的问题是:屏幕对面有十个身份,哪个真正代表你。
尾声
拾闻:最后,用一句话总结这期? 永亮:AI 通关的不是验证码,是「人机必须分边站」的旧世界——以后的安全不靠考倒机器,靠管好机器。 拾闻:这句话,送给大家。下期见。
【技术纵深】现代反机器人体系的三层防线,长什么样?
这期反复说「防线搬家」,给技术读者拆一下现在真实的分层(以 Cloudflare 体系为例)。
**第一层:客户端挑战。**页面加载后,一段轻量 JavaScript 在浏览器里跑:计算挑战(给你一道算不开销很大的题)、Web API 探测(这个浏览器有没有正常浏览器该有的接口)、环境一致性检查(屏幕尺寸、字体、时区对不对得上)。人无感知,秒级完成。产出是一个短期一次性 token——注意,改前端代码伪造「通过」没有意义,因为 token 要拿到服务端兑付验证。
**第二层:网络层指纹。**TLS 握手时,客户端会暴露加密套件偏好、扩展顺序等特征(JA3/JA4 指纹)——真实 Chrome 和 Python 脚本的指纹完全不同。再叠加请求头顺序、HTTP/2 帧行为,服务端在不看内容的情况下就能给连接画像。这就是为什么很多爬虫「还没发请求就被拦了」。
**第三层:服务端风控。**token 验证(有效性、是否用过、时间窗)+ 行为序列分析(这个 IP 最近一小时的请求像不像正常用户)+ 业务规则(下单频率、设备-账号绑定关系)。这一层看到的不是一次请求,是整条时间线。
**正在加的第四层:密码学身份。**Web Bot Auth 用 HTTP Message Signatures 标准:AI 客户端用 Ed25519 私钥对每个请求签名,签名覆盖请求内容(防篡改),带 created/expires 时间窗(防重放),公钥发布在可检索目录。服务器验签的成本是毫秒级,但伪造的难度是密码学级别。
四层叠起来,验证码那张九宫格图片,在整个体系里的真实角色是:给真实用户一个「我在被保护」的仪式感。门锁早就换到你看不见的地方了。