![]()
GUI 已难拦机器,防线转向身份与权限校验。
作者丨郑佳美
编辑丨岑 峰
一个 AI,刚刚在网页上证明了自己不是机器人。
9 月 7 日,OpenAI Labs 成员 Sharif Shameem 展示 GPT-6 Astra 连续完成《I’m Not a Robot》全部 48 关。
![]()
前面还是图片识别、文字判断这些熟悉的人机验证,后面很快变成拖拽、停车、视觉搜索、节奏控制和逻辑小游戏。Astra 一路看屏幕、操作鼠标键盘,再根据页面变化继续执行,直到拿到游戏给出的“人类认证”。
这段演示碰到的技术问题,比验证码本身更大。CAPTCHA 过去依赖一种能力差:人能看懂陌生界面、判断空间关系并连续操作,机器很难做到。
Astra 现在开始把视觉理解、GUI 定位、状态保持和动作控制连成稳定闭环,而现实网站的反自动化系统也早已从图片挑战迁移到浏览器环境、服务端风险判断和行为链。
所以 , Astra 究竟跨过了哪一道防线,以及现代 CAPTCHA 还剩下哪些技术壁垒,就要从这两套系统的内部机制往下拆。
01
从视觉模型到闭环控制的门槛
早期 CAPTCHA 可以近似成一次静态推理。模型看到图片,恢复字符或者识别目标,输出答案后任务结束。Computer Use 的输入和输出关系完全不同,因为模型产生的动作会反过来改变下一次输入。
从控制系统的角度看,网页里存在一个内部状态state_t,截图只是这个状态暴露出来的观测obs_t。Astra 在第t步产生点击、拖拽或键盘动作action_t后,网页进入新的状态state_t+1。
模型随后看到新的截图,却无法直接读取浏览器内部完整状态,只能利用当前画面、此前画面和动作历史推断自己现在处在任务的哪个位置。
![]()
停车关卡很能说明这个问题。当前画面里能看到汽车,却看不到模型前几步为什么把汽车开到这里;节奏任务更麻烦,因为环境在模型推理期间仍然可能继续变化。
GUI Agent 因而不是单纯识别屏幕内容,它还需要维护一个隐含的状态估计,把已经执行的动作和新的视觉反馈拼成连续世界。
这也是 GUI grounding 的意义。模型内部理解的是确认按钮、目标车辆或某个图标这样的语义对象,操作系统需要的却是具体鼠标坐标。ScreenSpot-Pro 就是在测这层语义到空间的落地能力,Astra 在无工具条件下达到 92.7%,GPT-5.6 Sol 为 76.9%。
但 grounding 分数高,并不能直接推出长流程稳定。点击一次按钮时,一次定位错误只影响一个动作;连续任务里,一次错误会改变后面的环境。
![]()
Agent 如果把取消点成确认,下一帧页面已经进入另一条状态分支,后续计划即便推理正确,也可能建立在错误前提上。
所以长程 Computer Use 需要一个经常被忽略的模块:动作后的状态校验。模型执行操作以后,需要比较实际页面和预期页面是否一致。
如果预期是弹窗关闭,新的截图里弹窗仍然存在,那么系统应当把这一步判为失败,重新定位或修改策略。没有这一层,单步误差会沿任务链持续放大。
![]()
这里甚至可以解释 Astra 的速度提升为什么具有技术意义。Computer Use 每执行一步,通常要经历重新获取环境、模型推理、生成动作、执行动作,再读取结果。
OpenAI 公布的数据里,Astra 在 OSWorld 2.0 得到 72.6%,GPT-5.6 Sol 为 65.7%;模拟任务耗时从约 75 分钟降到约 40 分钟。
延迟下降影响的不只是等待时间。动态 GUI 存在state staleness:模型依据截图开始推理后,真实页面可能已经继续变化,推理越慢,最终动作作用在过期状态上的概率越高。
![]()
更快的 perception-action loop 可以缩短观测和执行之间的时间差,也允许 Agent 用更高频率重新检查结果。对动态界面而言,速度本身就是控制稳定性的一部分。
因此,48 关透露出的能力变化可以概括得很具体:视觉模型已经开始把语义理解、空间 grounding、历史状态、动作执行和反馈校验接成一个闭环。CAPTCHA 原来利用的机器弱点,恰好落在这条链上。
这里还需要留一个技术边界:Sharif 的公开视频没有披露完整 harness,也没有公开说明整个过程是否严格限制为 pixel-only,是否存在其他页面结构输入。因此 48 / 48 本身不能当成严谨的纯视觉 benchmark。
Astra 在 ScreenSpot-Pro 和 OSWorld 上的正式成绩,才提供了更可比较的 Computer Use 证据。
![]()
02
现代 CAPTCHA
已经不把答案当成完整证据
当视觉 Agent 可以识图、拖拽和操作动态页面,继续把安全性押在一道认知题上会越来越脆弱。Google 和 Cloudflare 的技术路线已经把判断向浏览器和服务器内部迁移。
reCAPTCHA v3 的设计很典型。浏览器针对login、register等action请求 reCAPTCHA,随后把token交给后端验证,服务端得到风险score,并结合当前action决定后续处理。
![]()
Google 没有公开完整风险模型和全部输入特征,因此不能简单把它描述成鼠标轨迹检测器;公开机制能够确认的是,它采用基于交互上下文的score,而不是依赖一次可见图片题的二元结果。
Turnstile 把前端测量和后端决策拆得更清楚。浏览器会执行一组轻量 JavaScript challenge,包括计算挑战、空间证明、Web API 探测、浏览器差异和行为信号。
完成客户端挑战后生成token,网站后端仍然必须调用 Siteverify 验证;token有效期为 300 秒,并且只能兑换一次。Cloudflare 还明确指出,即便 bot 完成 challenge,其他 bot 信号仍可能导致token无效。
![]()
这时的安全架构可能已经发生了根本变化。图片 CAPTCHA 的证据来自答案本身,Turnstile 的token更接近一次由挑战平台签发、需要服务器再次确认的短期证明。
攻击者修改网页 JavaScript 显示验证成功没有意义,因为业务服务器仍然拿不到一个可以通过 Siteverify 的有效结果;截获别人已经使用过的token同样会因为 single-use 机制失败。
![]()
防线继续往下还能进入浏览器和网络层。Cloudflare Bot Management 暴露JA3、JA4等字段,它们来自 TLS 客户端握手特征;JavaScript Detections 又可以持续采集浏览器侧信号。
这样一来,系统能够同时看到页面运行环境和网络连接特征,而视觉 Agent 看到的屏幕只是其中一个层面。
这也解释了为什么 Astra 通关 48 关和攻破现代反机器人系统之间还有很长距离。Astra 擅长的是界面层的 perception 和 action,但服务器还可以观察它看不到的状态:请求来自怎样的 TLS 客户端、JavaScript 环境是否符合预期、token有没有过期、此前请求序列是否异常。
![]()
不过这层防线也不会永久稳定。Computer Use Agent 如果直接运行在完整 Chrome 环境中,它天然会继承真实浏览器的大量协议和运行时特征,和简单的 Selenium 脚本已经不是同一种自动化。
Cloudflare 文档目前仍明确表示,Selenium、Puppeteer、Playwright 等自动化框架不支持用于生产 challenge,但未来 Agent 越来越深地运行在真实浏览器栈里,单纯依赖浏览器指纹区分机器也会越来越困难。
因此现代 bot detection 正在进入一个更棘手的阶段:认知信号正在失效,浏览器信号也可能逐渐趋同,服务器只能把更多证据放进时间序列和业务上下文里联合判断。
![]()
03
Agent 时代,
Web 看的是机器身份和权限
还有一个更深的问题:未来大量机器访问本身就是合法流量。
用户让 Agent 查询航班、填写企业系统、修改 CRM 或跨网站处理任务时,服务器面对的确实是一台机器,但把它拦下来反而会破坏正常功能。传统 CAPTCHA 的 human / bot 二元分类开始失去足够的信息量。
Cloudflare 今年上线的 Web Bot Auth 已经出现了这种转向。它基于 HTTP Message Signatures,让 Agent 生成 Ed25519 密钥,用私钥给 HTTP 请求签名,并通过公开目录发布对应公钥。
![]()
Cloudflare 收到请求后,可以根据公钥验证这次请求确实来自持有该私钥的 Agent,同时检查被签名的请求内容是否被修改。
不过这和 CAPTCHA 还是有一定区别的。CAPTCHA 依靠行为特征做分类,本质上是在估计访问者属于哪一类;请求签名解决的是密码学认证,服务器得到的是可验证的主体身份。模型视觉能力继续提高,并不会让它凭空计算出另一个 Agent 私钥对应的有效 Ed25519 签名。
![]()
Web Bot Auth 还通过created和expires限制签名请求的时间窗口,降低请求被截获后重复提交的价值。Cloudflare 当前文档也说明,它暂未维护完整的nonce重放数据库,因此短有效期仍承担着重要防重放作用。这个细节说明 Agent 身份基础设施还处在快速建设阶段。
但机器身份只是认证,授权是另一层问题。一个服务器确认请求确实来自某个 Agent,并不意味着这个 Agent 可以读取和修改全部资源。
更合理的模型是用户把有限权限委托给 Agent,例如允许读取订单和修改配送日期,同时不开放取消订单;主 Agent 再调用子 Agent 时,下游拿到的权限还应该继续收窄。
![]()
技术上,这会把 Web 安全从 bot classifier 推向一条可验证的委托链。服务器最终判断的条件会更接近:Agent 身份有效、用户委托有效、token尚未过期、资源属于授权范围、当前action没有越界,同时风险系统没有发现异常。
这种结构和 CAPTCHA 差别很大。CAPTCHA 尝试证明机器不在场;Agent 时代的安全体系反而需要承认机器就在这里,然后严格限定它是谁、代表谁、可以做什么。
![]()
04
CAPTCHA 的边界到了协议层
Astra 通关 48 关,其实没有让 reCAPTCHA 或 Turnstile 一夜失效。它削弱的是 CAPTCHA 很早依赖的一层假设:视觉理解、空间判断和连续 GUI 操作足以把机器挡在界面之外。
Computer Use 正在跨过这层门槛。ScreenSpot-Pro 反映 grounding,OSWorld 反映长程交互,Astra 的变化说明屏幕理解、状态估计、动作执行和失败恢复已经开始形成更稳定的闭环。
防御体系则继续向后迁移:从视觉题移动到浏览器信号,从浏览器信号移动到服务端验证,再从人机分类移动到 Agent 的密码学身份和细粒度授权。
二十多年前,CAPTCHA 的问题是屏幕对面到底有没有人。
当机器也能稳定使用这块屏幕后,Web 要解决的问题已经变成:这台机器是谁,谁把权限交给了它,以及这一次请求究竟被允许做到哪里。
参考链接: https://x.com/sharifshameem/status/2096847916837314853
上车,带你看遍全球 AI 顶会精华
可独家畅览:
专家演讲PPT
大会报告全文
热门论文解读
学术新星访谈
未经「AI科技评论」授权,严禁以任何方式在网页、论坛、社区进行转载!
公众号转载请先在「AI科技评论」后台留言取得授权,转载时需标注来源并插入本公众号名片。
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.