
Nikolai Smirnov
Software Development Lead

如果您曾经构建过网页表单、登录页面或结账流程,您几乎肯定遇到过 reCAPTCHA。Google 的 reCAPTCHA 是互联网上部署最广泛的 CAPTCHA 系统,保护数百万网站免受自动化滥用。但 reCAPTCHA v2 和 v3 的区别不仅仅是版本号——这两个系统基于根本不同的原理运作,服务于不同的用户体验目标,并需要不同的实现策略。
本文以技术术语简明解释 reCAPTCHA v2 与 v3 的区别:每个版本的功能、其内部工作原理、何时选择其中一个以及开发人员在构建自动化或数据管道时需要了解的内容。
reCAPTCHA 是 Google 提供的一项免费服务,旨在区分人类用户和自动化机器人。它最初于 2009 年从卡内基梅隆大学收购,并在此之后经历了多次重大迭代。
根据 Google 的官方 reCAPTCHA 文档,当前活跃的版本是 v2(包含两个子类型)和 v3,每个版本针对安全性和用户体验之间的不同平衡。第四层级——reCAPTCHA Enterprise——在 v3 的基础上增加了额外的风险信号,面向大规模商业部署。
理解 reCAPTCHA v2 和 v3 的区别,首先要了解每个版本设计解决的问题。
reCAPTCHA v2 是大多数用户所熟悉的版本。它在表单提交前呈现一个显式的挑战。
当用户访问受 reCAPTCHA v2 保护的页面时,小部件会加载并分析被动信号——鼠标移动、浏览历史、Cookie。如果系统确信用户是人类,可能会自动通过。否则,会显示一个挑战。
reCAPTCHA v2 有两种子类型:
1. 复选框(“我不是机器人”)
用户点击复选框。如果被动信号不足,会显示图像网格挑战(例如,“选择所有交通灯”)。这是 reCAPTCHA v2 最为人熟知的形式。
2. 不可见 reCAPTCHA v2
不显示复选框。当用户提交表单时,挑战会自动触发。如果风险评分过低,会显示视觉挑战。这种变体减少了干扰,同时保持了 v2 的挑战机制。
| 属性 | reCAPTCHA v2 复选框 | reCAPTCHA v2 不可见 |
|---|---|---|
| 用户交互 | 始终可见 | 仅在触发时显示 |
| 挑战类型 | 图像网格/音频 | 图像网格/音频 |
| 令牌有效期 | 2 分钟 | 2 分钟 |
| 实现复杂度 | 低 | 中等 |
| 用户体验干扰 | 高 | 中等 |
成功完成 v2 挑战生成的令牌会发送到您的服务器,并通过 Google 的 siteverify API 验证。响应是二进制的:有效或无效。没有评分。
reCAPTCHA v3 采用完全不同的方法。它永远不会向用户显示挑战。相反,它在后台持续运行,收集行为信号并返回一个 0.0 到 1.0 之间的风险评分。
您在每页想要监控的页面上嵌入 reCAPTCHA v3 脚本。该脚本收集信号——交互模式、时间、设备指纹——当您调用 grecaptcha.execute() 时,它会返回一个令牌。您的服务器将该令牌发送到 Google 的 siteverify 端点,并收到包含以下内容的 JSON 响应:
login、checkout)根据 Google 的 reCAPTCHA v3 文档,0.5 是默认推荐的阈值,但 Google 明确表示您应根据自己的流量数据调整此阈值。
评分不是通过/失败的判断。它是一个风险信号。您的应用程序决定如何处理:
这种灵活性很强大,但也意味着 reCAPTCHA v3 比 v2 需要更多的服务器端逻辑。
以下是两个版本在实现决策中最重要的维度上的结构化对比。
| 维度 | reCAPTCHA v2 | reCAPTCHA v3 |
|---|---|---|
| 用户可见挑战 | 是(复选框/图像网格) | 否 |
| 输出 | 二进制(通过/失败令牌) | 评分(0.0–1.0) |
| 用户体验干扰 | 高 | 无 |
| 误报风险 | 低(明确通过) | 中等(需要评分调整) |
| 实现工作量 | 低 | 中等–高 |
| 需要的服务器端逻辑 | 最小 | 必须 |
| 适用于高风险操作 | 是 | 通过仔细调整阈值 |
| 适用于被动监控 | 否 | 是 |
| 令牌有效期 | 2 分钟 | 2 分钟 |
| 无需用户交互即可工作 | 否(v2 不可见:部分) | 是 |
reCAPTCHA v2 和 v3 的核心区别在于 决策是在哪里做出的。在 v2 中,Google 做出判断并在需要时显示挑战。在 v3 中,Google 提供一个信号,而您的应用程序做出判断。
当以下情况发生时,reCAPTCHA v2 是正确选择:
复选框变体特别适合用户正在暂停填写字段的表单。在该上下文中,CAPTCHA 挑战的额外干扰更不显眼。
当以下情况发生时,reCAPTCHA v3 是正确选择:
许多生产系统使用 reCAPTCHA v3 作为第一层,并在评分低于阈值时回退到 reCAPTCHA v2。这种混合方法在 Google 的 reCAPTCHA FAQ 中明确推荐。
了解 reCAPTCHA v2 与 v3 也意味着知道开发人员常犯的错误。
错误 1:使用固定 v3 阈值而没有调整
Google 的默认值 0.5 是一个起点,而不是通用规则。具有异常流量模式的网站(例如,大量移动用户、国际受众)可能需要显著调整。
错误 2:将 v3 视为 v2 的直接替代品
它们解决不同的问题。在没有添加服务器端评分处理的情况下,将 v2 替换为 v3 会在高风险表单上造成安全漏洞。
错误 3:不验证操作标签
reCAPTCHA v3 令牌包含您定义的操作名称。如果您不验证操作是否与预期匹配,一个页面生成的令牌可能被重用于另一个页面。
错误 4:缓存或重复使用令牌
v2 和 v3 令牌都是单次使用且在两分钟后过期。重复使用令牌将始终导致验证失败。
构建网络爬虫、自动化测试套件、RPA 流程或数据收集工具的开发人员经常在目标网站上遇到 reCAPTCHA v2 和 v3。这两种版本旨在检测非人类交互模式,这意味着标准自动化框架通常会触发挑战或收到低 v3 评分。
对于合法的自动化用例——例如 自动化测试您自己的网页应用、用于市场研究的网络爬虫 或 SEO 排名跟踪——CapSolver 提供了一个程序化 API,可以处理 reCAPTCHA v2 和 v3 的令牌生成。
CapSolver 使用人工智能驱动的识别返回有效的令牌,可以提交到目标网站的验证端点。这对于在自动化管道中 解决 reCAPTCHA v2 挑战 或处理 reCAPTCHA v3 评分要求 特别有用。
与 CapSolver API 集成的 reCAPTCHA v2 基本示例如下(来自 CapSolver 官方文档的 Python 示例):
import capsolver
capsolver.api_key = "YOUR_API_KEY"
solution = capsolver.solve({
"type": "ReCaptchaV2Task",
"websiteURL": "https://example.com",
"websiteKey": "YOUR_SITE_KEY",
})
print(solution["gRecaptchaResponse"])
对于 reCAPTCHA v3,任务类型更改为 ReCaptchaV3Task,并提供 pageAction 参数以匹配目标页面上定义的操作。始终确保您的自动化用例符合目标网站的使用条款和适用的数据法规。
领取您的 CapSolver 奖励代码
立即提升您的自动化预算!
在充值 CapSolver 账户时使用奖励代码 CAP26,每次充值可获得额外 5% 的奖励——无限制。
现在在您的 CapSolver 仪表板 中领取
这是一个常见问题,答案是复杂的。
reCAPTCHA v2 提供了更严格的门禁——机器人必须解决视觉或音频挑战才能继续。这更能抵御简单的脚本攻击。然而,它对合法用户更具干扰性,且可以被专门的服务解决。
reCAPTCHA v3 提供了更广泛的覆盖——它监控整个会话的行为,而不仅仅是在单个表单提交点。一个经过 v2 挑战的高级机器人只需一次通过;在 v3 保护的网站上运行的机器人必须持续保持类似人类的行为。
实际上,USENIX Security 2023 的安全研究人员发现,当正确调整时,像 v3 这样的行为 CAPTCHA 系统在对抗大规模自动化攻击时更有效,但更容易受到模仿人类行为模式的针对性攻击。
最强大的部署同时使用两者:v3 用于被动监控,v2 作为当评分低于可接受阈值时的升级挑战。
reCAPTCHA v2 和 v3 的区别不在于哪个版本更新或更好——而在于哪种模型适合您的安全架构。reCAPTCHA v2 提供了一个清晰的二进制门禁,带有用户可见的挑战。reCAPTCHA v3 提供了一个连续的风险信号,没有用户中断,但需要更复杂的服务器端处理。
对于大多数生产应用,答案不是 reCAPTCHA v2 与 v3,而是 reCAPTCHA v2 和 v3 协同工作。使用 v3 进行监控和评分,并在风险信号要求更严格的挑战时回退到 v2。
如果您正在构建需要与任一版本交互的自动化工具——用于测试、数据收集或工作流自动化——CapSolver 的 API 支持 reCAPTCHA v2 和 v3 的任务类型,具有快速的响应时间和简单的集成。您可以在 capsolver.com 探索完整的文档。
Q1: 可以不使用回退机制直接使用 reCAPTCHA v3 吗?
可以,但不推荐用于高风险操作。没有回退机制时,收到低评分的用户将被静默阻止或标记,无法证明他们是人类。v2 回退为合法用户提供了前进的路径。
Q2: reCAPTCHA v3 会减慢您的网站吗?
reCAPTCHA v3 脚本会为每个加载它的页面添加少量 JavaScript。Google 报告该脚本大小约为 35KB。对于大多数网站,性能影响可以忽略不计,但在加载时间至关重要的页面上,值得测量。
Q3: reCAPTCHA v2 不可见版和 reCAPTCHA v3 有什么区别?
两者都避免在不需要时显示挑战,但它们的工作方式不同。reCAPTCHA v2 不可见版仍然使用 v2 的挑战机制——如果被动信号不足,会显示图像网格。reCAPTCHA v3 永远不会显示挑战;它只返回一个评分。关于如何处理低评分的决定完全取决于您的应用程序。
Q4: 如何选择正确的 v3 评分阈值?
从 Google 推荐的 0.5 阈值开始,然后分析 1-2 周的流量数据。查看已知良好用户(登录、验证账户)与匿名流量的评分分布。根据您的特定用户群调整阈值以最小化误报。
Q5: reCAPTCHA v3 是否符合 GDPR?
reCAPTCHA v3 会收集行为数据并将其发送到 Google 的服务器,这在 GDPR 下引发了数据隐私考虑。您应在隐私政策中披露 reCAPTCHA 的使用情况,并根据所在司法管辖区的要求,在加载脚本前可能需要获取用户的同意。请咨询您的法律团队以获得针对您部署情况的具体指导。