///
如何识别不同类型的验证码
Ekaterina Yanchuk
Ekaterina Yanchuk
技术文章作者
May 6, 2025
5 分钟

如何识别不同类型的验证码 

 

 

robots
立即开始自动化您的工作流 reCAPTCHA v2

什么是验证码

 

验证码(英文 CAPTCHA)是一种用于网站安全的技术。它用于保护网站免受垃圾信息、数据盗取、DDoS 攻击以及其他恶意自动化行为的影响。

 

验证码不断更新和优化,越来越能够阻止可能带来风险的脚本运行。为了验证网站访问者是人类还是机器人,开发者设计了各种验证方法和完整的安全系统来保护数据。用户可能会被要求输入文本、选择图片、完成拼图或识别被扭曲的音频。现代技术也越来越注重减少对真实用户的干扰,允许在后台进行验证,无需用户操作,仅在检测到自动化行为时才触发验证。

 

本文将帮助您通过在 HTML 代码中查找特定元素来识别网站的保护类型,并理解其基本工作机制。

 

验证码通常是如何工作的

 

验证码是保障网站安全的一种有效方式。目标网站中安全系统的一般工作流程如下:

 

  1. CAPTCHA 会生成需要解决的任务。这可能是扭曲的文本、一组图片、音频,或类似滑块的交互元素。为了增加机器人识别难度,文本可能被扭曲,音频也可能加入噪声干扰。

  2. 验证码以可见元素的形式添加到网页中,例如文本输入框、图片或滑块。对于某些验证码(如 Google reCAPTCHA),脚本会从服务器加载并实时渲染。

  3. 用户与 CAPTCHA 进行交互——输入文本、选择图片或移动滑块。任务完成后,答案会发送到服务器进行验证。

  4. 服务器会检查答案是否正确,以及交互是否符合规则。现代验证码还会分析用户行为:请求频率、是否使用 JavaScript、鼠标移动方式以及输入行为等。

  5. 验证结果:

成功:如果答案正确或行为看起来正常,则允许访问。

失败:如果答案错误或行为可疑,验证码可能会要求重新验证或阻止访问。

 

安全系统检测方法

 

机器人开发者也在不断进步,简单的文本验证码已经不再总是能够有效区分真实用户和自动化系统。现代技术也在持续发展,提供越来越复杂和组合式的网站防护方法。下面我们来简单了解这些方式:

 

1. HTTP 请求与响应分析

  • 分析请求和响应头,例如 User-Agent、Referer、Accept-Language 和 Cookies。 缺少标准值可能表明存在自动化行为。

  • 检查 URL 和 POST 请求参数中是否存在可疑或非常规的值。

  • 统计同一 IP 的请求频率。过高的请求频率可能表示存在机器人行为。

  • 检查用于会话识别和防止重复攻击的 cookies 是否存在以及是否有效。

 

2. TCP/IP 分析

  • 分析 TCP 会话建立和断开过程的特征,例如连接时间、请求频率和延迟。与真实用户相比,机器人可能表现出异常行为。

  • 检查数据包传输模式、重复模式或异常延迟,这些都可能表明存在自动化行为。

 

3. TLS 会话分析

  • 检查证书以识别可疑或伪造证书。证书中的异常值可能表明存在绕过防护的尝试。

  • 评估加密使用情况以及数据解码过程的正确性(机器人可能在处理加密时出现问题)。

 

4. 指纹识别(设备指纹)

  • 浏览器画像分析:收集浏览器信息,例如版本、插件、字体和 JavaScript 设置。这有助于区分真实用户与机器人。

  • 分析设备特征,例如屏幕分辨率、操作系统设置和设备类型。机器人通常使用虚拟或异常设备。

  • 评估用户行为,例如鼠标移动、输入速度和交互频率。

 

如何识别任何验证码的名称和类型

 

在访问网站时,用户经常会遇到验证码,但并不总是知道它的类型和名称。要识别验证码类型,可以使用 开发者工具(DevTools) 并按照以下步骤操作:

  • 打开开发者工具:按 Ctrl+Shift+I(Mac 上为 Cmd+Option+I),或右键点击页面选择“查看代码”。

  • 进入 Elements(元素)标签页:查看 HTML 结构并定位验证码元素。

  • 使用元素选择工具(左上角箭头)选中验证码区域并查看 HTML 代码。

  • 分析 HTML 属性:检查 class 或 id,例如 reCAPTCHA 的 class="g-recaptcha"。

  • 打开 Network(网络)或 Sources(源代码)标签页,查找加载验证码的脚本或 API 请求,以获取更多信息。

 

请大胆使用这些工具进行分析与实验。通过实践,你不仅可以识别验证码类型,还能更深入理解网页安全机制的运行方式。

CapMonster Cloud 支持的验证码与其他验证类型及其识别方法

 

对于人类来说,通过 CAPTCHA 通常并不困难,但对于机器人而言,这却是一个重要的障碍。尽管许多自动化系统并非用于恶意用途,而是用于网站测试、安全抓取以及重复性任务的自动化处理,但防护机制仍然会降低并复杂化其运行效率。这些机制的处理通常需要额外的适配时间与开发成本。服务 CapMonster Cloud 极大简化了这一过程,为大多数常见验证类型提供了解决方案:

 

为了将验证码任务发送到 CapMonster Cloud 服务器,必须了解其类型及准确版本。

 

接下来我们将更详细地分析每种验证码类型、其特点以及如何识别其标识信息,以便在处理网页时能够快速识别并通过 CapMonster Cloud 进行解决:

 

reCAPTCHA

 

reCAPTCHA 由 Google 开发。该技术通过分析浏览器历史记录、用户行为、IP 地址等多种信号来区分人类与机器人。如果系统检测到可疑行为,可能会要求用户完成验证测试以证明其“人类身份”。现代 reCAPTCHA 主要包括: 

reCAPTCHA v2:在此模式下,用户需要勾选“我不是机器人”复选框,或完成选择图片任务(如选择所有包含汽车、摩托车或红绿灯的图片)。也可能提供音频验证码作为替代方案。

image.png

image.png

 

reCAPTCHA v3:该版本无需用户交互。它会分析用户在页面上的行为并给出评分(score):1.0 表示很可能是真人,0.0 表示很可能是机器人。当分数较低时,系统可能触发额外验证。

 

image.png

Invisible reCAPTCHA:属于 v2,但没有可见的复选框。与 v3 类似,它在后台运行,仅在检测到可疑行为时才触发用户交互。从视觉上看与 v3 几乎没有区别。

 

reCAPTCHA Enterprise:用于网站安全保护的增强版本。

 

如何区分 reCAPTCHA v2 Invisible、reCAPTCHA v3 和 reCAPTCHA Enterprise?

 

可见的 reCAPTCHA v2 可以通过复选框和验证任务轻松识别。对于不可见版本,可以通过以下特征进行判断:

  • reCAPTCHA v2 Invisible 通常包含带有 data-sitekeydata-callback 属性的元素:

 

  • reCAPTCHA v3 — 在 网络(Network) 标签中,可以看到包含 “render” 关键词的请求:

 

  • reCAPTCHA Enterprise(v2 和 v3)可以通过请求中的 “enterprise” 关键词识别:


GeeTest

 

GeeTest 提供交互式谜题,例如按特定顺序选择对象、通过拖动滑块完成拼图,或在指定位置进行点击。GeeTest 使用自适应技术,在尽量减少真实用户不便的同时,提高对自动化系统的难度。

 

该类型验证码分为两个版本:v3 和 v4(Adaptive CAPTCHA)。第四个版本具有更高的灵活性——它可以自动调整任务难度。对于真实用户来说,验证码保持简单且易于完成,但如果系统怀疑存在自动化行为,难度将相应提高。与许多其他验证码类型一样,也提供音频模式作为替代验证方式。

 

GeeTest v3 

该版本支持多种验证码模式:智能模式、滑块验证码、图标验证码以及空间验证码。下面展示了不同类型任务界面的示例:

Slide CAPTCHA

滑块验证码 

Icon CAPTCHA

图标验证码 

Intelligent mode

智能模式 

 

GeeTest v4 

与第三代版本类似,它也包含多种主要的验证模式:Slide CAPTCHA、Icon CAPTCHA、IconCrush CAPTCHA、Image CAPTCHA、Gobang CAPTCHA、NoCAPTCHA 。下面展示了不同类型任务界面的示例:

Slide CAPTCHA

滑块验证码 

Icon CAPTCHA

图标验证码 

NoCAPTCHA

NoCAPTCHA 

对用户来说最简单的模式:只需点击“Click to verify”按钮。如果后台检测确认当前操作为真人行为,则会显示“Verification Success”提示。 

GeeTest v3 与 v4 的区别 

通过 开发者工具(DevTools) 可以根据请求结构、使用参数以及加载的脚本来区分不同版本的 GeeTest。 

GeeTest v3 

  • 使用两个主要初始化参数:gt(GeeTest ID)和 challenge(会话唯一标识)。

  • 验证脚本通常从包含 /gt.js 路径的 URL 加载。

  • 向服务器发送的请求路径通常为 /validate.php/get.php

image.png

GeeTest v4 

  • v4 版本的脚本和请求通常包含 v4 路径或相关标识。

  • 使用 captcha_id 代替 gt 参数。

  • 相关参数通常可以在网络请求或验证码初始化配置中找到。

image.png

Cloudflare Turnstile 与 Challenge

 

Cloudflare 提供现代化的用户验证机制,无需传统的图片 CAPTCHA。验证可以通过点击 “Verify you are human” 按钮完成,也可以完全在后台运行——基于浏览器参数、用户行为以及网络信号进行判断。如果验证成功,将允许访问网站;否则请求可能被限制或阻止。 

 

Cloudflare 的主要验证机制包括:TurnstileChallenge Page。 

 

Turnstile

 

Turnstile 是集成在网站中的用户验证组件。根据网站设置以及请求可信度,Cloudflare 会使用不同的验证模式: 

  • 非交互式验证 — 完全自动执行,无需用户任何操作。 

  • 非侵入式交互验证 — 在可疑行为情况下可能需要最少的用户交互。 

  • 隐形验证 — 在后台运行,不显示任何界面元素。 

 

非交互式验证

 

非侵入式交互验证

非交互式验证

 

Turnstile 示例

非侵入式交互验证

 

Challenge Page

 

Turnstile 不同,Challenge Page 会在访问目标网站之前打开一个单独的验证页面。用户可能需要等待自动验证完成、等待几秒钟,或点击 “Verify you are human” 按钮进行确认。 

 

该机制更具侵入性,因为它会在验证完成前暂时限制对网站的访问。 

 

Challenge Page 的主要验证类型: 

  • Managed Challenge — Cloudflare 自动选择最优验证方式。 

  • JS Challenge — 通过 JavaScript 自动执行验证。 

  • 交互式验证 — 需要用户与验证页面元素进行交互。 

 

Cloudflare Challenge Page

Cloudflare Challenge 独立验证页面示例

 

在使用 DevTools 分析时,可以通过以下方式识别 Challenge Page:首次访问目标网站的请求通常返回 HTTP 状态码 403,随后会被重定向到验证页面。 

 

Cloudflare 403 Challenge

HTTP 403 并重定向到 Cloudflare Challenge


文本验证码(ImageToText)

这是一种验证码类型,在验证过程中会要求用户识别并输入图像中显示的文本。内容可以由字母、数字、单词或特殊符号组成。过去这是最常见的防机器人方式之一,但如今由于更现代的解决方案出现,它的使用频率正在逐渐减少。

ImageToText example 1 ImageToText example 2

可以通过以下特征识别 ImageToText CAPTCHA:

  • 包含显示 CAPTCHA 文本的图片

  • 用于输入识别文本的输入框

  • 使用 <img><input type="text"> 标签

HTML CAPTCHA structure CAPTCHA layout example DevTools CAPTCHA example

要在 CAPTCHA 页面中查找加载验证码图片的 <img> 元素,可以在控制台中使用 JavaScript:

document.querySelector('img[src*="captcha"]'); 


DataDome

 

与其他类似的高级系统一样,DataDome 使用服务器端和客户端方法来检测机器人。它会分析用户行为、地理位置、网络数据、浏览器指纹等参数,并结合多层机器学习算法进行判断。DataDome 甚至能够识别自动化浏览器(Selenium、Puppeteer、Playwright),并且可能使用 JavaScript 混淆技术来增加代码分析难度。

 

这是一个在自动化场景中较难处理的验证类型,需要采用综合方法进行应对。CapMonster Cloud 是其中一个有效的解决方案!

 

DataDome slider example

DataDome 提供滑块式验证方式

 

可以通过加载 DataDome 的 JavaScript 文件来判断网站是否使用 DataDome 防护:

 

image.png

DataDome 使用特定的 cookies(可以通过页面中的 "document.cookie" 或响应头 Set-Cookie 获取,例如 "datadome=..."),例如: 

 

"datadomeCookie": "datadome=VYUWrgJ9ap4zmXq8Mgbp...64emvUPeON45z"

腾讯验证码(TenDI)

 

TenDI 验证码同样采用先进的综合用户验证方法,包括轨迹分析、特征识别以及其他安全机制。普通用户在访问目标网站时可能不会察觉到验证的存在,但当系统检测到可疑的自动化行为时,就会触发验证码验证。

 

腾讯验证码提供多种验证类型:

滑块验证码

图形验证码

连续验证码 
 

 

此外还支持语音验证,用户需要输入音频中听到的文本内容。同时还使用 Smart 验证 —— 一种智能机制,会分析用户行为,仅在检测到可疑活动时才触发验证。

判断网站是否使用腾讯验证码,可以通过加载 TCaptcha 脚本来识别:

 

image.png 

请求中使用的 URL 为 https://ca.turing.captcha.qcloud.com

 


Amazon CAPTCHA 和 Challenge 

 

来自 AWS WAF(Amazon 的 Web 服务)的 CAPTCHA 和 Challenge 是两种用于保护网站的用户验证机制。它们的区别如下: 

 

CAPTCHA 会要求用户完成一些任务,例如输入文本(较少使用)、滑动滑块、选择图片中的对象,或通过音频听写并输入单词。 

 

Challenge 在后台运行,通过分析会话参数和请求行为(请求频率、JS 执行、鼠标行为、Cookie 等)进行验证。验证成功后用户可继续访问,否则可能会显示 CAPTCHA 或被阻止。 

 

CAPTCHA 可能如下所示: 

在图片中选择对象

滑块

选择/移动对象

音频 CAPTCHA

 

 

在 CAPTCHA 代码中可以看到 window.gokuProps 脚本,以及 challenge.jscaptcha.js 的引用: 

 

 

关于上述所有类型的验证及其使用方式的更多信息,建议查阅官方文档 CapMonster Cloud


结论 

 

因此,我们已经梳理了常见的主要 CAPTCHA 类型、其基本工作原理以及识别方法。当然,现实中还存在更多类似的 CAPTCHA 类型,但基于本文提供的信息,你可以较为轻松地判断它们的类别并继续进行相关分析与工作。每一种 CAPTCHA 都具有独特的防护机制——从传统的文本验证码到现代自适应系统不等。技术世界在不断发展,安全防护手段也在持续演进,因此关注最新变化非常重要。

 

希望本文能够对你有所帮助,并帮助你理解 CAPTCHA 的不同方面及其机制。建议你多多尝试使用 开发者工具,以更好地理解这些系统的运行方式,并使用 CapMonster Cloud 来高效解决与 CAPTCHA 相关的任务! 

 


NB: 请注意,该产品仅用于对您自身拥有合法访问权限的网站和资源进行自动化测试。

ItGuy
geear
面向软件开发者的联盟计划
通过用户识别验证码的消费获取高达 30% 的返佣。
✅ 请求已发送
感谢您对我们的合作伙伴计划感兴趣!我们将在 7 个工作日内与您联系。
请求加入
填写表格以提交申请加入合作伙伴计划。