reCAPTCHA 求解 API 与 siteverify 不同

作者:solvethree阅读需 1 分钟

不能——Google 的 siteverify 端点无法签发 reCAPTCHA 响应令牌。它用于验证客户端提供的令牌。Enterprise 评估同样用于评估现有令牌;这两个端点都不会根据站点密钥生成令牌。

本页内容

根据所需任务选择 API

令牌生成与验证是不同的操作。
令牌生成与验证是不同的操作。
API你提供的内容获得的结果
Google siteverify现有的响应令牌验证结果
Google Enterprise 评估现有的响应令牌对该令牌的评估
solvethree 任务受支持站点的主机名、操作和代理配置一个就绪结果中包含解决方案令牌的任务

在 Google 的 reCAPTCHA v3 流程中,客户端 SDK 生成响应令牌,网站所有者的后端通过 siteverify 验证该令牌。在 Enterprise 流程中,客户端 SDK 生成令牌,后端创建评估。

如果你要为自己的网站添加验证,请使用相应的 Google 流程。如果你需要为受支持的目标使用解题服务,请使用 solvethree 的任务 API。解题服务提供令牌供目标评估,并不取代目标的验证。

实际的解题请求是什么样的

首先,确保目标网站有一个当前工作区可用的有效站点配置。发送主机名和操作名称不会创建配置。如果尚未满足此前提条件,请参阅站点配置设置。

在 solvethree API 上通过 POST /v1/tasks 创建任务,使用 Authorization: Bearer,后接工作区 API 密钥。请将该密钥保留在服务器端。

reCAPTCHA Enterprise · 请求结构
{
  "site": "accounts.example.com",
  "action": "login",
  "proxy": "http://user:[email protected]:8080",
  "requestId": "example_login_001"
}

将示例中的主机名、操作名称和代理替换为目标请求所用的值。site 是主机名,而不是完整 URL。reCAPTCHA 请求必须提供 proxy 或 proxyCandidates,且只能二选一;不要添加 type 或 url。此示例使用默认的 recaptchaType,即 enterprise-v3;网关也接受 v3。

通过 GET /v1/tasks/:id 获取任务。当状态为 pending 或 solving 时,继续轮询。只有 ready 状态才包含可用的解题结果。如果状态变为 failed,请停止轮询并检查 errorCode 和 error。

不要将 Enterprise 令牌消耗在测试评估上

Google 文档说明,Enterprise 网站响应令牌在两分钟后过期,并且只能评估一次。请在即将发送受保护请求时请求解题。仅为检查令牌是否可用而创建评估,可能会在预期目标使用令牌之前将其消耗。

向预期目标提交 solution.token,而不是任务 ID。使用返回的 userAgent 和 secChUa 浏览器身份,以及解题时成功使用的代理。切换代理或混用无关的浏览器请求头可能导致后续请求失败。

任务状态为 ready 表示解题结果已可用,并不表示目标已接受你的应用请求。应根据目标的响应判断请求是否被接受,而不是根据任务是否已创建或就绪。

运行您的第一个任务。

使用 $5 工作区额度开始体验。

创建工作区
reCAPTCHA 求解 API 与 siteverify 不同 · solvethree