Web 安全

CAPTCHA (验证码)

阅读时间约 5 分钟

什么是 CAPTCHA

CAPTCHA (Completely Automated Public Turing test to tell Computers and Humans Apart,全自动区分计算机和人类的公开图灵测试) 是一种用于判断网站访问者是人类还是机器人的验证测试。该概念由卡内基梅隆大学的 Luis von Ahn 等人于 2000 年正式提出,广泛应用于防止垃圾表单提交、暴力破解攻击导致的账户被盗以及自动抢票机器人等场景。

早期的 CAPTCHA 采用扭曲文字识别方式,但随着 OCR 技术和机器学习的进步,破解率持续上升。如今的 CAPTCHA 已演进为基于用户行为模式分析的风险评估方式。

reCAPTCHA 的演进 - 从 v1 到 v3

Google 提供的 reCAPTCHA 是事实上的 CAPTCHA 标准,被数百万网站采用。其版本迭代反映了机器人检测技术的整体演进。

reCAPTCHA v1 (2007-2018)
显示扭曲的文字图片让用户输入。同时兼作书籍数字化工具,将 OCR 无法识别的单词交由人类解读。到 2014 年左右,AI 的文字识别准确率已超过人类,其安全价值大幅下降。
reCAPTCHA v2 (2014-)
引入「我不是机器人」复选框。在后台分析鼠标移动轨迹、浏览器环境和 Cookie 历史记录,仅在风险评分较高时才显示图片选择挑战 (选择红绿灯、人行横道、公交车等图片)。
reCAPTCHA v3 (2018-)
完全不需要用户操作。在后台进行行为分析并返回 0.0 到 1.0 的评分。网站管理员自行决定触发额外验证的阈值。消除了用户摩擦,但阈值的调优是运营中的主要挑战。

reCAPTCHA v2 中让用户选择红绿灯和人行横道的图片挑战,据称同时为 Google 的自动驾驶项目 (Waymo) 收集训练数据。这延续了 v1 书籍数字化的设计理念 - 将人类智能二次利用于其他目的。

CAPTCHA 的技术原理

现代 CAPTCHA 系统主要通过三种方法来区分机器人和人类。

  • 挑战式:向用户展示扭曲文字输入、图片分类或拼图滑块等任务,这些任务对人类来说很简单但对机器人来说很困难。主要缺点是增加用户摩擦,提高跳出率。
  • 行为分析式:检测鼠标轨迹、按键时间间隔、滚动模式、触摸压力等人类特有的行为模式。reCAPTCHA v3 和 hCaptcha 采用此方法。用户甚至可能意识不到 CAPTCHA 的存在。
  • 工作量证明式:要求浏览器执行轻量级计算任务,提高机器人大量请求的成本。Cloudflare Turnstile 采用此方法。单个人类用户的计算仅需几毫秒,但机器人发送数千个请求时计算成本会显著累积。

现代 CAPTCHA 不依赖单一技术,而是将浏览器指纹、IP 信誉、Cookie 存在性和 JavaScript 执行环境等多个信号组合成综合风险评分进行判定。

无障碍访问的挑战

CAPTCHA 旨在证明用户是人类,但并非所有人都能以相同方式完成验证。视觉障碍用户无法完成图片选择挑战,听觉障碍用户无法使用语音 CAPTCHA,运动障碍用户可能难以进行鼠标或触摸操作。

W3C 的 Web 内容无障碍指南 (WCAG) 建议为 CAPTCHA 提供替代验证方式。reCAPTCHA v2 提供语音挑战作为备选方案,但语音识别 AI 的进步使得语音 CAPTCHA 也越来越容易被自动破解。

reCAPTCHA v3 和 Cloudflare Turnstile 等「隐形 CAPTCHA」由于不需要用户操作,大幅缓解了无障碍访问问题。但依赖行为分析意味着使用屏幕阅读器或仅使用键盘操作的用户,其行为模式可能被误判为「类似机器人」,导致误报。

AI 破解与 CAPTCHA 的未来

CAPTCHA 的根本前提是「某些任务对人类容易但对 AI 困难」,然而 AI 能力的快速提升正在动摇这一前提。

  • 图像识别 AI:截至 2023 年,研究表明 AI 模型破解图片分类 CAPTCHA 的准确率已超过人类。识别红绿灯和人行横道对现代目标检测模型来说已是轻而易举的任务。
  • CAPTCHA 破解服务:「CAPTCHA 农场」雇佣低薪工人手动解决验证挑战,混合型服务则将 AI 与人工结合。每千次破解仅需几美元,对僵尸网络运营者来说成本微不足道。
  • 浏览器自动化工具:Puppeteer 和 Playwright 等无头浏览器能够高精度地模拟人类的鼠标移动和按键操作,有可能绕过行为分析式 CAPTCHA。

未来,CAPTCHA 作为独立防御手段将面临极限,取而代之的是结合 WAF 速率限制、设备认证和通行密钥身份验证的多层防御方案。CAPTCHA 的角色正在从「阻止机器人」转变为「提高机器人的攻击成本」。

常见误解

部署 CAPTCHA 就能完全阻止机器人
由于存在 CAPTCHA 破解服务和 AI 绕过技术,没有任何 CAPTCHA 能 100% 阻止机器人。CAPTCHA 提高了自动化攻击的成本,但必须与速率限制、IP 信誉检查和 WAF 规则配合使用才能实现有效防御。
图片 CAPTCHA 只有一个明确的正确答案
reCAPTCHA v2 的图片挑战故意包含模糊图片 - 比如一根可能属于也可能不属于红绿灯的杆子。Google 通过统计聚合大量用户的回答来确定真实答案,并将这种模糊性作为额外的判断信号。
CAPTCHA 只在可疑流量时才会出现
触发 CAPTCHA 挑战的因素远不止机器人嫌疑:使用 VPN 或代理、清除 Cookie、隐身模式浏览、快速页面导航等都会导致风险评分升高。合法用户也经常因为这些正常行为而遇到 CAPTCHA 验证。
分享

相关术语