跳转到主要内容
本文将介绍一种 Recaptcha2 协议识别 API 对接说明,它可让用户无需识别和点选 Recaptcha2 验证码图片,仅需通过提交 Website Key 即可实现后台自动解码,完成验证。

申请流程

要使用 Recaptcha2 协议识别 API,首先到 Ace Data Cloud 控制台 获取您的 API Token,留作备用。 如果你尚未登录或注册,会自动跳转到登录页面邀请你注册和登录,完成后会自动返回当前页面。 一个 API Token 即可调用平台所有服务,无需为每个服务单独申请。 首次申请会赠送免费额度,可免费体验;额度不足时可在 控制台 充值通用余额。
📘 完整文档:Recaptcha2 协议识别 API →

基本使用

首先先了解下基本的使用方式,就是输入需要处理验证码的网站URL,便可获得处理后的结果,首先需要简单地传递一个 website_url 字段,我们的示例网站是:https://www.google.com/recaptcha/api2/demo,我们需要在 website_url页面中获取 website_key,首先需要打开这个网页,按F12进入控制台,最后在Element页面进行全局搜索 recaptcha-demo,我们可以得到下面的结果:

其中 data-sitekey 对应的一串字符串便是 website_key的值,下面是具体的参数结果:

可以看到这里我们设置了 Request Headers,包括:
  • accept:想要接收怎样格式的响应结果,这里填写为 application/json,即 JSON 格式。
  • authorization:调用 API 的密钥,申请之后可以直接下拉选择。
另外设置了 Request Body,包括:
  • website_url:需要处理验证码的网站URL。
  • website_key:在Recaptcha2中的网站密钥标识符。
  • proxy:可选,自带代理(Bring Your Own Proxy)。设置后服务会通过你提供的代理 IP 去解验证码,用于控制出口 IP 质量(例如避免因公共代理 IP 被目标站点拦截而返回 410 Gone)。格式为 scheme://[user:pass@]host:port,scheme 支持 http/https/socks4/socks5,例如 http://user:pass@1.2.3.4:8080。不填则使用平台默认代理。
选择之后,可以发现右侧也生成了对应代码,如图所示:

点击「Try」按钮即可进行测试,如上图所示,这里我们就得到了如下结果:
返回结果一共有多个字段,介绍如下:
  • token,此次 Recaptcha2验证码 任务处理后验证结果。
  • started_at、finished_at:本次请求开始处理与产出结果的时间,Unix 时间戳(秒,浮点)。
  • elapsed:本次处理的总耗时(秒)。
可以看到我们得到了处理 Recaptcha2验证码 的验证结果,然后我们可以用于POST或模拟提交给目标网站,一次性使用,有效期120s,建议在60s内使用,接下来将提供一段Python版本将处理后token提交到目标网站来通过Recaptcha2验证码。 首先我们需要获取网站是如何发送POST请求,这样我们才能将生成的token传入进去,我们需要先打开F12控制台,然后人工先通过一下,最后我们可以看到网站发送了一个POST请求,我们只需要查看这次的POST请求构造,具体的过程如下:
  • 先人工通过验证,具体的如下图:

  • 再点击submit,观看控制台的network变化,具体的如下图:

  • 分析此次提交的POST请求构造,最后可以右键该请求复制CURL的代码,具体的如下图:

由上图分析可知,此次POST请求的URL为:https://www.google.com/recaptcha/api2/demo,我们仅需要提交参数 g-recaptcha-response,然后我们只需要将处理后的token传入下面的data中即可,调用token进行验证的具体的CURL代码如下:
调用token验证所对应的Python代码如下:
然后我们运行后代码观察控制台变得了这样的结果:

最后我们就通过了Recaptcha2验证码的协议验证。 另外如果想生成对应的对接代码,可以直接复制生成,例如 CURL 的代码如下:
Python 的对接代码如下:

异步模式(async)

默认情况下 API 是同步阻塞的:一次请求会一直等待,直到 token 处理完成才返回。如果你在做多打码器轮换(multi-solver rotation),希望「提交任务后立即拿到 task_id,先去调度其他打码器,稍后再回来读取结果」,可以在请求体中传入 async: true。 传入 async: true 后,接口会立即返回一个 task_id,而不会阻塞等待:
如需主动查看进度,可使用该 task_id 查询 POST /captcha/tasks(建议每 3~5 秒一次)。本接口不会触发或推进任务处理;即使不查询、断网或退出客户端,服务器仍会继续处理:
处理中会返回 status: processing:
处理完成会返回 status: ready 和 token:
计费说明:异步模式下,创建任务和读取「处理中」状态都不计费;客户端首次读取成功结果时计费一次(与现有行为及同步模式价格一致)。服务器会自主推进任务,但不会因为后台先完成就提前扣费。任务在 120 秒内未成功会终止为 HTTP 504 timeout,不计费。/captcha/tasks 不负责推进任务。

错误处理

在调用 API 时,如果遇到错误,API 会返回相应的错误代码和信息。例如:
  • 400 token_mismatched:Bad request, possibly due to missing or invalid parameters.
  • 400 api_not_implemented:Bad request, possibly due to missing or invalid parameters.
  • 401 invalid_token:Unauthorized, invalid or missing authorization token.
  • 429 too_many_requests:Too many requests, you have exceeded the rate limit.
  • 500 api_error:Internal server error, something went wrong on the server.

错误响应示例

结论

通过本文档,您已经了解了如何使用 Recaptcha2 协议识别 API 让用户无需识别和点选 Recaptcha2 验证码图片,仅需通过提交 Website Key 即可实现后台自动解码,完成验证。希望本文档能帮助您更好地对接和使用该 API。如有任何问题,请随时联系我们的技术支持团队。