Scarnox · Blog

验证码类型详解,以及求解器能处理哪些类型

验证码主要有几种类型。有些要求访客读取或选择某些内容,有些在后台运行检查,还有些将组件与服务端校验结合起来。验证码的类型决定了脚本如何越过它,而求解器支持哪种类型,则决定了你能否使用它。本指南列出主要类型,解释每一种的工作方式,并说明 Scarnox 当前的支持状态。

简而言之:目前 Scarnox 只有一种实时任务类型,即无代理的 PopularCaptcha。其他类型即将推出,下文会说明具体是哪些。

支持状态一览

验证码类型工作方式Scarnox 状态
PopularCaptcha 组件将 token 写入 h-captcha-response 的组件已上线(无代理)
文字和图片挑战识别或选出字符与物体不是实时任务类型
语音挑战转写一段语音片段不是实时任务类型
Google reCAPTCHA v2复选框,被标记时出现图片挑战即将推出
Google reCAPTCHA v3根据行为打分,无挑战即将推出
Cloudflare Turnstile非交互式的浏览器检查即将推出
Arkose Labs(FunCaptcha)游戏式的强制验证挑战即将推出
GeeTest滑块与形状谜题即将推出
AWS WAF 验证码来自 AWS WAF 的谜题挑战即将推出

在针对任何类型进行开发之前,请查阅验证码求解 API 指南和 API 参考文档。本表反映的是撰写本文时的状态。

文字验证码

文字验证码会显示扭曲的字符,要求访客输入。扭曲的目的是让简单的光学字符识别失效。这是最古老的一类,在大型网站上现在已相当少见,但在小型表单和老旧系统中仍然能够见到。

图片验证码

图片验证码要求访客选出所有包含某种物体的图块,例如红绿灯、人行横道或商店门面。这种挑战本质上是分类任务,较复杂的版本还可能要求多轮选择。爬虫和自动化工具在访问高流量网站时经常会遇到它们。图片与文字验证码 OCR 指南介绍了其中的识别部分。

语音验证码

语音验证码会播放一段口述的数字或单词序列,通常作为一种无障碍选项。声音中混有噪声使其变得难以辨认。它们主要是为无法看清视觉挑战的用户而设的替代方案,这也是为什么应当与无障碍替代方案一同提供,而不是被自动化绕过。

谜题验证码

谜题验证码要求类似实物操作的动作:把一块拼图滑入缺口、把图片旋转到正立,或拖动某个形状。滑块谜题很常见,而 GeeTest 是这类谜题的知名服务商。答案取决于位置或角度,而挑战通常还会检查拖动的方式,而不仅仅是最终停在哪里。

无感与基于评分的验证码

有些验证码在没有可见挑战的情况下运行。浏览器在后台完成检查,网站根据结果决定是否显示挑战。这就是人们所说的“无感验证码”。reCAPTCHA v3 更进一步,它返回的是一个分数,而不是通过或不通过。无感验证码指南解释了无感模式如何影响求解器的集成,reCAPTCHA v3 评分指南则详细介绍了评分机制。

Token 组件

token 组件是页面中的一个组件,它完成自身的检查后,会把一个 token 写入一个隐藏的表单字段。网站再把该 token 发送给服务商,或发送给自己的后端进行校验。PopularCaptcha、reCAPTCHA v2 和 Cloudflare Turnstile 都采用这种模式。

这是求解器无需接触可视挑战就能处理的类型。求解器生成 token,你的代码把它写入表单。这也是为什么 PopularCaptcha 的集成只需要几行代码。使用 Python 求解验证码指南展示了具体流程。

强制验证挑战

一些大型网站使用强制验证挑战,将风险评分与游戏式谜题结合起来。Arkose Labs(常被称为 FunCaptcha)是最知名的例子。谜题经常变化,风险引擎也因网站而异,因此很难用通用方法应对。

类型为什么对你的代码很重要

每种类型都需要不同的求解器:

如果一个求解器声称能够处理“所有验证码”,就值得打个问号。请询问它实时支持哪些类型,以及对于不支持的类型它会怎么做。

遇到不支持的类型时怎么办

如果你需要的验证码不在实时支持列表中,实际可行的选择有三种:

  1. 减少触发它的频率,参考如何避免爬虫遇到验证码中的方法。
  2. 如果该验证码保护的是你自己的系统,使用测试密钥或预发布环境。
  3. 向网站所有者申请 API、白名单或无障碍替代方案。

即将推出的类型仍在开发中。注册账户,即可获得免费试用额度,无需信用卡,届时你就能在类型上线时立即使用。

下一步