Tabbit博客

什么是 CAPTCHA 验证?挑战-响应验证是怎么工作的

CAPTCHA 验证是浏览器必须通过的一次反向图灵测试。这篇文章讲清楚它真正在检查什么、为什么总是反复出现,以及它挡住你的时候该怎么办。

本文目录
  1. 先说结论
  2. 六种主要验证类型一览
  3. 「CAPTCHA」这个缩写到底是什么
  4. 挑战-响应握手是怎么走的
  5. 为什么现代验证很少要你解题
  6. 验证为什么会反复回来
  7. CAPTCHA 解决不了的可用性问题
  8. CAPTCHA 对 AI 智能体做了什么
  9. 验证挡住你时的一个实用选择:Tabbit Browser
  10. 下次被验证挡住时该做什么
  11. 简短的回答
  12. 装上 Tabbit,把需要人的那一步留给人

一位值班工程师打开供应商的网站,迎面是一个 reCAPTCHA。当时他的邮箱和手机都在收告警。这道验证要求他找出楼梯、红绿灯和摩托车。他在 r/sysadmin 上写道:「我正为一次紧急故障收着邮件和电话告警,你却让我花整整五分钟点图片???」

他的时机不太走运,但他的遭遇很常见。Cloudflare 运营着互联网上规模最大的验证网络之一,它给出的估算是,一道 CAPTCHA 平均要占用一个人 32 秒,而大约有 15% 的人会中途放弃。关于这些代价由谁承担,W3C 的说法更重:这类交互任务本身「inherently excludes many people with disabilities, resulting in a denial of service to these users」(W3C)。

CAPTCHA 验证是浏览器必须过的一道关卡,服务器靠它决定要不要把你的请求当作人类发出的。它有三个部件:服务器下发挑战,浏览器作答,服务器拍板。有意思的部分在拍板,因为在大多数现代网站上,被评分的根本不是那道题,而是你的会话。

这个落差解释了 CAPTCHA 让人恼火的大部分原因。一场从头到尾都不考答案的测试,你没法提前复习。下面讲的是:这个缩写是什么意思、这套握手流程实际怎么走、验证为什么会反复回来,以及下一次被挡住时该做什么。最后一部分我们会拿 Tabbit Browser 当例子,因为在这里,AI 浏览器到底是什么 比表面上看起来更要紧。

先说结论

  • CAPTCHA 是「Completely Automated Public Turing test to tell Computers and Humans Apart」的缩写。这个名字描述的是一次反向图灵测试:机器出题,然后指望自己也答不出来。

  • 一次挑战-响应验证包含四个环节:下发、作答、令牌、校验。令牌是一次性的,还有时效,所以刷新页面往往等于从头再来。

  • 现代系统大多在给风险打分,而不是批改一道题。reCAPTCHA v3 返回 0.0 到 1.0 的分数,Cloudflare 也直说,勾选复选框这个动作本身不是信号。

  • 反复出现的验证通常能追到具体原因:时钟或缓存出错、扩展拦住了验证脚本、虚拟专用网络出口、通行 cookie 过期。

  • 按设计,CAPTCHA 对一部分残障用户就是一道屏障。W3C 称之为拒绝服务,Cloudflare 自己的数字还显示,音频回退方案比没用更糟:机器人比人解得还稳。

六种主要验证类型一览

你被要求做过的事,几乎都能归进下面六类。区别它们的不是那道题,而是你在操作的时候,服务器真正在测量什么。

验证类型你要做什么它实际测量什么它在哪里失效
扭曲文字(经典款)输入被扭曲的字母光学字符识别会不会失败AI 连最难的一种变形都能以 99.8% 的准确率解出之后,Google 把它下线了
图片网格(reCAPTCHA v2、hCaptcha)把所有含公交车、楼梯、红绿灯的格子选出来在你点击之前和点击过程中采集的行为与环境数据图片模糊、边界有歧义,而且不告诉你哪一格算对
复选框组件(reCAPTCHA v2、Turnstile Managed)勾选一个方框浏览器特征、原生 API,以及轻量的工作量证明脚本被拦截、缓存不当或者系统时钟漂移时会陷入循环
评分或隐形(reCAPTCHA v3、Turnstile Non-Interactive)界面上什么都不用做根据请求上下文算出的风险评分你永远不知道分数为什么低,怎么处理由网站决定
工作量证明等上几秒你的浏览器是否真的为一道题花掉了 CPU设备慢就等得久,JavaScript 被拦截页面就直接停住
隐私通行令牌界面上什么都不用做是否有签发方为你的设备背书只在支持该令牌的平台和浏览器上有效

把这张表再读一遍,结论很清楚。六类里只有两类要求你做点聪明的事,其余四类都只在旁边观察。

「CAPTCHA」这个缩写到底是什么

CAPTCHA 是一个刻意拼出来的缩写:「Completely Automated Public Turing test to tell Computers and Humans Apart」。这个词出自 2003 年的一篇论文,作者是卡内基梅隆大学的 Luis von Ahn、Manuel Blum 和 Nicholas Hopper,以及 IBM Watson 的 John Langford,发表在 EUROCRYPT 上(Springer)。摘要里一句话就说清了整个思路:「any program that has high success over a CAPTCHA can be used to solve an unsolved Artificial Intelligence (AI) problem.」

巧妙的地方在于角色反转。图灵测试问的是机器能不能冒充人类。CAPTCHA 把角色换了过来,让机器当裁判,然后挑一件机器当时做不好的事。任何破解了它的机器人,按定义就等于解决了一个研究者还没解决的问题。

这套设计注定会过时。一道题一旦对机器不再难,它就不再是 CAPTCHA,剩下的人只能继续面对一道对机器已经不难、却还要人类通过的题。Google 在 2014 年用大白话承认了这一点:「today's Artificial Intelligence technology can solve even the most difficult variant of distorted text at 99.8% accuracy. Thus distorted text, on its own, is no longer a dependable test」(Google Security Blog)。

挑战-响应握手是怎么走的

对完整流程讲得最清楚的是 2005 年一篇 USENIX 论文,主题是防御应用层拒绝服务攻击,它描述的交换过程跟今天的组件用的是同一套(USENIX NSDI '05)。服务器下发一道题,外加一个签名令牌。你作答之后,服务器先重新计算令牌哈希,再检查令牌是不是在四分钟以内生成的,最后核对你的答案对不对。三项检查都通过,它才会回传一个有效期 30 分钟的 cookie。

现代系统保留了这套结构,换掉了里面的零件。Cloudflare 的 Turnstile 会注入一个名为 cf-turnstile-response 的令牌,由网站自己的后端来校验,文档说得很明确:「A token can only be validated once, and a token cannot be redeemed twice」(Cloudflare)。

这个顺序里的三项检查,解释了日常挫败感的一大部分。答案对了但令牌过期,失败。cookie 没能落到你的浏览器里,失败。验证脚本压根没跑起来,那就没有令牌可校验。这几种结果长得一模一样,你看到的还是同一个方框。

为什么现代验证很少要你解题

机器能认字母之后,整个行业把考试挪到了一个你没法复习的地方:你的会话。Google 自己对回退何时出现的解释是:「In cases when the risk analysis engine can't confidently predict whether a user is a human or an abusive agent, it will prompt a CAPTCHA to elicit more cues.」

reCAPTCHA v3 把这件事做成了 API。没有界面组件,服务只返回一个分数。Google 记录的原文是「11 levels for scores with values ranging from 0.0 to 1.0」,其中 1.0 代表低风险,0.0 代表高风险(Google Cloud Fraud Defense)。除了分数,Google 还会给出 AUTOMATIONUNEXPECTED_ENVIRONMENTTOO_MUCH_TRAFFICUNEXPECTED_USAGE_PATTERNSLOW_CONFIDENCE_SCORE 这类原因代码。它没有公开的,只是这些代码背后的完整信号清单。

2026 年值得知道的一件事:developers.google.com/recaptcha 下的每个页面现在都挂着一条弃用横幅,指向 Google Cloud Fraud Defense。v3 模型正在被并入另一个产品面,Google 还提醒,一次接入在第一周测到的分数,跟长期生产环境里的表现并不一样。

Cloudflare 的 Turnstile 就复选框讲了同样的道理。它的组件有三种模式(Managed、Non-Interactive、Invisible),Managed 会根据访客风险在复选框和静默检测之间选择,产品说明也直说那个方框是干什么的:「the actual act of checking a box isn't important, it's the background data we're analyzing while the box is checked that matters」(Cloudflare)。

Cloudflare 官方的 Turnstile 示例登录演示,页面上有用户名输入框、密码输入框、一个 Turnstile 组件和一个登录按钮
Cloudflare 公开的 Turnstile 演示。这里没有需要辨认的谜题。组件要么自己完成,要么让你点一下,而判断在后台早就做完了。

所以「图片太模糊了」这个抱怨找错了地方。模糊图片只在风险引擎已经判定需要更多证据时才出现。

验证为什么会反复回来

循环是有文档记录的,并不神秘。Cloudflare 公开了自家组件的失败代码,包括 200100,对应「Clock or cache problem」,也就是时钟不对或者挑战被中间层缓存了,还有 iframe 被拦截时的 200500Cloudflare 错误代码)。同一页还把浏览器扩展列为原因之一:「Some browser extensions, such as ad blockers, may block the scripts Turnstile needs to operate.」

通行这一侧有自己的计时器。cf_clearance cookie 证明访客通过了验证,「securely tied to the specific visitor and device it was issued to」,默认有效期 30 分钟,另外还有「a few extra minutes to account for clock skew」。它还带了一条比计时器更要紧的提醒:「The visitor may be re-challenged, even if the cookie has not expired」(Cloudflare)。

Google 给出的同类清单讲的是网络,不是浏览器。它的帮助文档列出了撞上「automated queries」这堵墙的三类常见触发条件:「a shared network that has been abused; your ISP may have recently assigned you a suspicious IP address; the site you're trying to visit may be under heavy attack right now」(Google FAQ)。这三件事都不是一道题能解决的,也都不是你的错。

网络这一侧的原因,也是虚拟专用网络常常变成 CAPTCHA 生成器的原因。Cloudflare 的观察是,「privacy-focused users often ask their browsers to go beyond standard practices… changing their user-agent… and preventing third-party scripts from executing entirely」,这句话精确描述了一套加固过的配置在一场它从未被设计来通过的考试里失败。如果你想看单家厂商的详细排查过程,我们的 Cloudflare 验证循环指南 一步步走完了那个案例,为什么隐私保护有时会弄坏网站 讲的是更普遍的模式。

这些重复验证还有一个安全代价,而且跟题目没什么关系。2026 年 8 月,一位管理员在一个小型企业网站上放了一个仿冒 reCAPTCHA 的东西,点击之后会把一条 PowerShell 命令复制到剪贴板。他要说的是疲劳,不是天真:「we and our staff are being so bombarded by these prove your human bots why wouldn't you click the do what it says」(r/sysadmin)。帖子最高赞的回复点出了这个手法的名字,ClickFix,其他评论者则讲了自家网络上的几次险情。一堵所有人都被训练成不读内容就照做的验证墙,本身就是个钓鱼面。

CAPTCHA 解决不了的可用性问题

W3C 在这件事上的措辞少见地直接。要求「users who are blind, visually impaired or dyslexic to identify textual characters in a distorted graphic is asking them to perform a task they are intrinsically least able to accomplish」(W3C)。同一份文档还记录到,reCAPTCHA v2 的音频替代方案有时干脆不再提供,取而代之的是「Your computer or network may be sending automated queries」这个页面。

WCAG 2.2 要求任何 CAPTCHA 都提供两种不同模态,指南还特别说明,这项例外「applies only to the content of the CAPTCHA」,不包括它周围的那张表单。它还承认了天花板:「Every type of CAPTCHA will be unsolvable by users with certain disabilities」(W3C WCAG 2.2)。

音频回退并不像看上去那样是张安全网。Cloudflare 测量过自家的音频验证,发现「only 31.2% of audio challenges resulting in a three-person agreement on what the correct solution actually is」,而「bots can accurately solve audio CAPTCHAs in over 85% of attempts」。当人类无法就答案达成一致而机器可以时,这个模态的方向就是反的。

社区报告和这项测量吻合。在 r/Blind 上,一位用户描述了自己跟那个本该豁免屏幕阅读器用户的可用性 cookie 斗争的过程:「Had a hell of a time getting their service to even allow that cookie to appear in my cookie jar when I checked the box… they have a separate option for a text-base captcha which is supposed to be more accessible but it was like trying to do a Caesar cipher in real time in your head」(r/Blind)。

一位开发者问该怎么服务盲聋用户。这些用户使用盲文显示器,既看不见也听不见验证,他一句话说清了这个设计缺陷:「Traditional captcha fails because it assumes you can either see or hear」(r/webdev)。OWASP 的指南指向同一个方向,并附带了自己的提醒,指出强制要求 JavaScript「will reduce the accessibility of the website, especially to visitors who use screen readers」,并建议优先采用多因素认证,把 CAPTCHA 留给可疑或高风险的登录场景(OWASP)。

CAPTCHA 对 AI 智能体做了什么

这场军备竞赛有了新参与者。2025 年的一项基准测试 Open CaptchaWorld 用 20 种 CAPTCHA 测试多模态模型智能体,报告称「humans consistently achieve near-perfect scores, state-of-the-art MLLM agents struggle significantly, with success rates at most 40.0% by Browser-Use Openai-o3, far below human-level performance, 93.3%」(arXiv:2505.24878)。论文把这道验证墙称为「a critical bottleneck for deploying web agents in real-world applications」。

人们已经在绕开它了,有时候是把人类的那部分再交回给模型。一位用户描述自己连续三次没通过红绿灯网格验证,于是截了图,把图片粘进一个聊天模型,「told it to take over my computer and handle it」,结果第一次就通过了(X,@alt_w_v_g,597 likes)。一段讲同样烦恼的视频下面,有评论者点破了这个模式:「asking the actual robot to complete captcha instead of you is peak of irony and comedy」(YouTube,365 likes)。

验证行业知道这一点。Cloudflare 应对智能体流量的办法是一套签名方案,而不是把题出得更难:Web Bot Auth 使用 Ed25519 HTTP Message Signatures,再加一个公开的密钥目录,网站据此就能区分签过名的智能体和匿名脚本(Cloudflare)。Visa 和 Mastercard 在 2025 年 10 月宣布了建立在其上的智能体商务协议。经过验证的机器人分类体系现在会把「Agent」和「Training」爬虫分开。

对读到这里的人来说,方向比细节更重要。当智能体能靠密码学证明自己是谁,验证墙就不再是一道技术测试,而成了一项政策决定:网站愿意放哪些签过名的智能体进来。这个结局比一段模糊的楼梯图片要好,不过它还剩一个问题没解决:在还没接入这套机制的网站上,智能体浏览器 依然会撞墙。

验证挡住你时的一个实用选择:Tabbit Browser

验证把你卡住的时候,有三个问题决定你会被卡多久:这是哪一类检查、页面到底在告诉你什么、哪一条有文档记录的原因符合你的环境。这三个问题都不需要你解题,需要的是阅读和诊断,而这正是一个内置模型的浏览器能发挥作用的地方。

Tabbit Browser 是一款基于 Chromium 的浏览器,AI 层做在外壳里,而不是作为扩展外挂上去。其中有三部分跟这里相关。

第一,读懂那堵墙。在 Tabbit 的 Omnibox 里输入 @ 就能把某个东西引用为上下文:当前标签页、整个标签页组、一张截图、一个书签,或者一个本地文件。把它指向正在拦截你的页面,问这是哪一类验证、页面上说了什么。AI 读的是你已经打开的那个页面,你不需要把错误文字复制到另一个窗口。这一点对那些没东西可复制的界面尤其有用,比如只有一句「Performing security verification」,或者一段埋在控制台里的 200100 代码。

第二,把被拦住的东西和你手头的事隔开。Tabbit 的 Agent Mode 会让委派出去的任务跑在自己的标签页组里,所以一个要遍历网站表单或后台的任务,不会接管你正在读的页面。委派任务进行到一半冒出验证墙时,它出现在那个任务的组里。你回来自己完成需要人的那一步,你自己的标签页还停在原来的位置。

Tabbit Browser 正在对一个电子表格执行 Agent Mode 任务,右侧面板里列着任务指令和执行步骤
Agent Mode 在自己的标签页组里处理页面。委派任务期间出现的验证墙会落在那里,而不是盖在你正在读的内容上面。

第三,把排查清单集中在一个地方做完,不用摊在五个排错标签页里。有文档记录的原因数量有限,而且都可验证:检查系统时钟,为这个网站关掉广告和脚本拦截,断开虚拟专用网络,清掉这一个域名的 cookie,然后刷新。配上一个能读页面的助手,这套流程花的是几分钟,而不是一个下午的瞎猜。

Tabbit Browser 打开了一个网页,旁边的 AI 侧边栏正在总结页面内容
侧边栏读的是你打开的那个页面。页面被拦住时,这意味着你可以直接问这道验证在说什么、在检查什么,而不用把错误文字贴到别处。

取舍是真实的,也值得直说。Tabbit 不会替你解 CAPTCHA,不会伪造浏览器指纹,也没法让一个信誉度低的 IP 地址看起来像住宅网络。如果你的出口 IP 在黑名单上,没有哪个浏览器能修好,换网络或者联系网站。验证墙的存在,是为了对你的会话做一个判断。一个悄悄推翻这个判断的浏览器是安全问题,算不上功能。如果某个网站的验证你一次点击就能过,诚实的答案是根本不需要工具。Tabbit 帮的是它周围那部分:读懂发生了什么、让你手头的工作不受影响、把该做的检查跑一遍。

如果真正反复出问题的是浏览器这一层,那是另一个排查方向。浏览器更新为什么会弄坏网站扩展失效了怎么办 讲的是兼容性这一半,如果你在重新考虑整套工具,怎么选对浏览器 讲的是选购决策。

下次被验证挡住时该做什么

先把看到的现象对上原因,再动设置,不要随手乱改。

你看到的现象该怎么做原因
同一个网站反复让你验证检查系统时钟,为这个网站关掉脚本拦截,然后只清掉这个域名的 cookie,再刷新有文档记录的原因就是时钟或缓存漂移、验证脚本被拦截,以及没有留存下来的通行 cookie
隐私窗口里能过,正常配置文件里过不了差异在某个扩展,或者你的配置文件里存的网站数据同一个浏览器、同一个网络,环境不同,所以问题出在本地
开着 VPN 时每个网站都要验证换出口节点,或者断开 VPN 再测一次数据中心地址段自带信誉记录,任何浏览器设置都修不好
复选框变绿了,页面刷新后又变回空框你的浏览器没有保住通行 cookie令牌签发之后被丢弃了,或者还没过期网站就重新验证了你
一个浏览器失败,另一个能过用能过的那个,同时把失败情况反馈给网站单个浏览器失败通常是配置文件层面的问题,不是网站层面的。见 Cloudflare 循环修复
你依赖屏幕阅读器,而音频回退也失败向网站索要非视觉的替代方案,并引用 WCAG两种模态是硬性要求,而音频那一种对人类来说可测量地不可靠
委派出去的智能体任务撞上了墙自己完成那一步,然后让任务继续这次验证要的是人,而面对一个没签名的智能体,网站没有别的办法知道
你必须用的某个网站只在特定浏览器里能用先确认是浏览器的问题,还是门户的政策有些网站是按浏览器检测来放行,而不是按功能。见 为什么患者门户只在 Chrome 里能用

简短的回答

CAPTCHA 验证不是对你的考试。它是关于你这次会话的一个风险判断,披上谜题的外衣,让这个判断看起来像道有答案的题。这就是为什么图片常常看不清,也是为什么循环的成因通常在环境,而不在能力。

所以要修的是环境,不是题。按顺序把有文档记录的原因走一遍:时钟、扩展、网络、cookie。四项都试过之后验证还在反复,剩下的变量就是你地址的信誉,解法是换一条到网站的路径,而不是换一个浏览器。

另外,当智能体在干活时,把需要人的那一步留给人。让任务去做机械的部分,到了要证明你是你的那一刻,自己接手。把这两件事分清楚的 AI 浏览器,在这里比一个承诺伪装得更好的浏览器有用。如果你早就跟这道题和解了,真正的问题是围绕它的那个浏览器,那么 这些才是要紧的特质

装上 Tabbit,把需要人的那一步留给人

Tabbit Browser 在 macOS 和 Windows 上免费,还能一步从 Chrome、Edge 或 Safari 导入书签、历史记录、扩展和已保存的密码,所以试它不等于重建整套环境。安装程序在 tabbit.ai/download

Tabbit Browser 下载页面,显示安装包正在下载
Tabbit 作为一款普通桌面浏览器安装,一步导入你已有的书签、历史记录、扩展和密码。

安装之前先把预期摆清楚。Tabbit 不会替你通过验证,也不会假装可以。在这个具体问题上,它给你的是一个能直接问「眼前这个页面到底说了什么」的地方,以及一套任务模型,让委派出去的工作跑在自己的标签页组里,而不是压在你的阅读之上。其他一切仍然归你,包括勾一个框然后继续往下走这件事。

常见问题

用大白话说,什么是 CAPTCHA 验证?

CAPTCHA 验证是网站挡在你请求之前的一道步骤,用来判断这次请求是人发的还是机器人发的。服务器下发挑战,你的浏览器作答,服务器验证一个签名令牌,验证通过才放行请求。在大多数现代网站上,真正被评估的是浏览器和网络信号,跟那道题本身关系不大。

挑战-响应机制到底是怎么验证我的?

服务器把一道题或者一次看不见的检测,连同签名令牌一起发给你。浏览器把答案和令牌一起送回去,服务器重新计算令牌哈希,检查令牌是否足够新,再核对答案。三项都通过,服务器会下发一个短时效 cookie,在你后续的请求里代表这次验证结果。Cloudflare 的文档写明,Turnstile 令牌只能验证一次。

为什么我在同一个网站上反复遇到 CAPTCHA?

反复出现验证通常有具体原因,而不是针对你个人。Cloudflare 记录了时钟或缓存问题、拦截验证脚本的扩展、虚拟专用网络出口这几类原因,它发放的通行 cookie 默认有效期 30 分钟,到期前也可能被重新验证。Google 列出的是共享网络、你的网络服务商分配了一个可疑地址、目标网站正遭受大规模攻击这三类触发条件。

reCAPTCHA v2 和 v3 有什么区别?

v2 会显示一个复选框,必要时退回到图片验证,v3 完全没有界面组件,只返回 0.0 到 1.0 之间的风险评分。Google 记录了 11 个分数档位,以及 AUTOMATION、TOO_MUCH_TRAFFIC 这类原因代码,但它没有公开评分背后的完整信号列表。v3 把放行还是拒绝的决定权交给网站,所以同一个分数在两个网站上可能得到不同处理。

为什么 CAPTCHA 对屏幕阅读器和盲聋用户是个难题?

W3C 把交互式 CAPTCHA 描述为对许多残障用户的一种拒绝服务,因为这道题本身就预设了你能看见或能听见。WCAG 要求 CAPTCHA 提供两种不同模态,同时也承认,任何类型的 CAPTCHA 都会让某些用户无法完成。Cloudflare 自己的测量显示,人类在音频验证上就正确答案达成一致的比率只有 31.2%,而机器人在超过 85% 的尝试里都能解出音频验证。

AI 智能体或者浏览器能替我解 CAPTCHA 吗?

智能体有时能通过,但并不可靠。2025 年的一项基准测试里,表现最好的被测智能体最多只通过了 40.0% 的验证,而人类是 93.3%。用自动化手段解题,同时也会毁掉网站本来想拿到的那个信号,机器人流量和合法的智能体流量之所以会被混为一谈,源头就在这里。一个声称能替你通过验证的浏览器,值得警惕。

下一步

让 Tabbit 与你并肩工作。

跨标签页调研、自动化重复的浏览器工作,让每一处上下文都触手可及。