指南
任务(令牌)
reCAPTCHA v2

ReCaptchaV2 协议接口

TIP

通过 createTask 创建任务, 然后通过 getTaskResult 获取识别结果

任务类型type如下

  • ReCaptchaV2Task 必须传入代理
  • ReCaptchaV2EnterpriseTask 必须传入代理
  • ReCaptchaV2TaskProxyLess 无需代理或已内置代理
  • ReCaptchaV2EnterpriseTaskProxyLess 无需代理或已内置代理

创建任务

通过 createTask 创建任务

在创建任务前,你可以学习下面的内容

如果获得了无效的token,你可以学习下面的内容

参数结构

PropertiesTypeRequiredDescription
typeStringRequiredReCaptchaV2Task
ReCaptchaV2TaskProxyLess
websiteURLStringRequiredreCaptcha 网页地址,一般是固定值
websiteKeyStringRequiredreCaptcha 网站密钥,固定值
proxyStringOptional学习如何使用代理
pageActionStringOptional对于 v2 站点:在 anchor 请求中如果有 sa 参数,则传递该参数
对于 v3 站点:搜索 grecaptcha.execute 可找到 action 参数
enterprisePayloadObjectOptional企业版搜索 grecaptcha.enterprise.render,传递其中的 s 参数
isInvisibleBoolOptional没有“我不是机器人”复选框,但还是会出现挑战的情况下,请传递 true,通常在 v2 隐形模式下需要
isSessionBoolOptionalsession 模式,启用后会返回一个 recaptcha-ca-t 值,作为 cookie 使用,通常在 v3 中出现

注:有的网站需要 recaptcha-ca-e 值,通常在 v2 中出现,若有该值会自动返回,不需要其他额外参数设置
apiDomainStringOptional加载验证码的域名,通常情况下不需要传递此参数
http://www.google.com/
http://www.recaptcha.net/
WARNING

如果您不清楚应该怎么传递参数,请参考我们的博客使用 capsolver 扩展自动获取参数。

如果您发现得到的 token 评分较低,请将扩展获取的 json 数据发送给客服进行优化。

请求示例

POST https://api.capsolver.com/createTask
Host: api.capsolver.com
Content-Type: application/json
{
  "clientKey": "YOUR_API_KEY",
  "task": {
    "type": "ReCaptchaV2Task",
    "websiteURL": "https://www.google.com/recaptcha/api2/demo",
    "websiteKey": "6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-",
    "enterprisePayload": {
      "s": "SOME_ADDITIONAL_TOKEN" // Optional
    },
    "isInvisible": false, // Optional
    "pageAction": "submit", // Optional
    "apiDomain": "", // Optional
    "proxy": "http:ip:port:user:pass", // socks5:ip:port:user:pass, Optional
  }
}

响应示例

{
    "errorId": 0,
    "errorCode": "",
    "errorDescription": "",
    "taskId": "61138bb6-19fb-11ec-a9c8-0242ac110006" // 请记录此 ID
}

获取结果

使用 getTaskResult 方法获取识别结果

根据系统负载,您将在 1s20s 的时间间隔内得到结果

请求示例

POST https://api.capsolver.com/getTaskResult
Host: api.capsolver.com
Content-Type: application/json
 
{
    "clientKey": "YOUR_API_KEY",
    "taskId": "61138bb6-19fb-11ec-a9c8-0242ac110006"
}

响应示例

{
    "errorId": 0,
    "errorCode": null,
    "errorDescription": null,
    "solution": {
        "userAgent": "xxx", // User-Agent
        "createTime": 1671615324290, // token 生成时间
        "gRecaptchaResponse": "3AHJ......", // 响应 token
        "recaptcha-ca-t": "AbEM......", // 部分 v3 网站有 session 模式,启用 isSession 后会返回此参数,作为 cookie 使用
        "recaptcha-ca-e": "Abp_......" // 部分 v2 网站有该参数,作为 cookie 使用,若有该值会自动返回
    },
    "status": "ready"
}

使用 SDK 请求

# pip install --upgrade capsolver
# export CAPSOLVER_API_KEY='...'
 
import capsolver
 
# capsolver.api_key = "..."
solution = capsolver.solve({
    "type": "ReCaptchaV2TaskProxyLess",
    "websiteURL": "https://www.google.com/recaptcha/api2/demo",
    "websiteKey": "6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-",
})