CAPTCHA (验证码)
阅读时间约 5 分钟
最后更新: 2026-09-01
什么是 CAPTCHA
CAPTCHA (Completely Automated Public Turing test to tell Computers and Humans Apart,全自动区分计算机和人类的公开图灵测试) 是一种用于判断网站访问者是人类还是机器人的验证测试。该概念由卡内基梅隆大学的 Luis von Ahn 等人于 2000 年正式提出,广泛应用于防止垃圾表单提交、暴力破解攻击导致的账户被盗以及自动抢票机器人等场景。
早期的 CAPTCHA 采用扭曲文字识别方式,但随着文字识别精度的提升,「只有人类才能读懂」这一前提已不再成立。截至 2026 年,主流做法不是对所有访问都出示挑战,而是先推测访问的风险,只在可疑时才要求进行额外验证。
reCAPTCHA 的演进 - 从 v1 到 v3
Google 提供的 reCAPTCHA 是 CAPTCHA 的代表性实现。其各个版本的变迁,正好勾勒出机器人对抗技术在哪里遇到瓶颈、又转向了何处。
有一种说法广为流传:reCAPTCHA v2 让用户选择红绿灯和人行横道,是在为 Google 的自动驾驶收集训练数据。但我们找不到能够佐证这一说法的一手资料。可以确定的只是,与 v1 结合书籍数字化的做法一样,用户的回答会作为图片的标签被积累下来,至于其用途并未公开。
CAPTCHA 的技术原理
CAPTCHA 系统主要通过三种方法来区分机器人和人类。
- 挑战式:向用户展示扭曲文字输入、图片分类或拼图滑块等任务,这些任务对人类来说很简单但对机器人来说很困难。主要缺点是增加用户摩擦,提高跳出率。
- 行为分析式:不向用户出示任务,而是根据用户在网站上的操作情况推测风险,只在可疑时才要求进行额外验证。reCAPTCHA v3 采用此方法。用户在多数情况下不会意识到 CAPTCHA 的存在,但各服务并未公开自己使用了哪些信号。
- 工作量证明式:要求浏览器解决轻量级计算任务,提高机器人大量发送请求的成本。Cloudflare 对 Turnstile 的说明是,它会组合运行工作量证明、空间证明以及检测 Web API 是否存在等一系列非交互式挑战。单次请求的负担很小,但对于发送数千、数万次请求的一方来说会不断累积。
实际的 CAPTCHA 不依赖单一技术,而是组合多种判断材料来推测风险。各服务并未公开其具体构成,但访问来源的 IP 地址,以及可作为浏览器指纹读取的浏览器环境信息,在机制上必然会传到服务器端。
无障碍访问的挑战
CAPTCHA 旨在证明用户是人类,但并非所有人都能以相同方式完成验证。视觉障碍用户无法完成图片选择挑战,听觉障碍用户无法使用语音 CAPTCHA,运动障碍用户可能难以进行鼠标或触摸操作。
W3C 的 Web 内容无障碍指南 (WCAG) 要求在使用 CAPTCHA 时,提供说明其用途的文本,并准备面向不同感官 (视觉、听觉等) 的替代形式。reCAPTCHA v2 提供语音挑战作为备选方案,但随着语音识别精度的提升,语音 CAPTCHA 也越来越容易被自动破解。
reCAPTCHA v3 和 Cloudflare Turnstile 等「隐形 CAPTCHA」不要求用户操作,因此可以避免挑战本身带来的障碍。但既然要依据操作情况来判断,使用屏幕阅读器或仅使用键盘操作的用户被误判为「类似机器人」的风险依然存在。
AI 破解与 CAPTCHA 的未来
CAPTCHA 的根本前提是「某些任务对人类容易但对 AI 困难」,然而 AI 能力的快速提升正在动摇这一前提。
- 图像识别 AI:选择红绿灯和人行横道的任务,正是通用目标检测模型日常处理的工作,把图片分类当作「只有人类才能完成的任务」这一设计前提已经站不住脚。
- CAPTCHA 破解服务:既有人工解决验证挑战的「CAPTCHA 农场」,也有将机器处理与人工结合的破解服务。单次破解的价格会淹没在攻击整体的费用之中,对僵尸网络运营者来说很难构成障碍。
- 浏览器自动化工具:Puppeteer 和 Playwright 等浏览器自动化框架能够驱动真实浏览器,重现人类的操作方式。即便是观察操作情况的方式,也难以轻易分辨。
由于单靠 CAPTCHA 进行防御存在极限,现实的做法是组合多层防御,例如 WAF 的速率限制、设备认证以及通行密钥身份验证。此外,无需出示 CAPTCHA 的方向也在推进标准化,用令牌证明设备或账户正当性的机制 (Privacy Pass) 已于 2024 年 6 月作为 RFC 9576 公开。CAPTCHA 的角色正在从「完全排除机器人」的工具,转变为「提高机器人成本」的工具。
常见误解
- 部署 CAPTCHA 就能完全阻止机器人
- 由于存在 CAPTCHA 破解服务和 AI 绕过技术,没有任何 CAPTCHA 能 100% 阻止机器人。CAPTCHA 提高了自动化攻击的成本,但必须与速率限制、IP 信誉检查和 WAF 规则配合使用才能实现有效防御。
- 图片 CAPTCHA 只有一个明确的正确答案
- reCAPTCHA v2 的图片挑战中混杂着「明确的正确答案」和「灰色地带」的图片。比如是否应该选择只拍到红绿灯灯杆的图片,连人类的判断也会出现分歧,边界图片的选法稍有不同也可能通过验证。至于把哪些范围视为正确答案,官方并未公开。
- CAPTCHA 只在可疑流量时才会出现
- 触发挑战的条件并未公开,机器人嫌疑也不是唯一条件。实际上,通过 VPN 或代理访问,或者从平时不用的环境访问,也可能出现验证,合法用户反复被要求完成 CAPTCHA 并不罕见。