指南
任务(令牌)
AWS WAF

AwsWafCaptcha: 解决 AWS WAF

TIP

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

任务类型type如下:

  • AntiAwsWafTask 需要转入你自己的代理
  • AntiAwsWafTaskProxyLess 无需代理或已内置代理

创建任务

通过 createTask 创建任务

Task Object Structure

PropertiesTypeRequiredDescription
typeStringRequiredAntiAwsWafTask
AntiAwsWafTaskProxyLess
proxyStringOptional学习使用 Using proxies
websiteURLStringRequired返回 captcha 相关信息的页面 url
awsKeyStringOptionalcaptcha 页面返回的 key
awsIvStringOptionalcaptcha 页面返回的 iv
awsContextStringOptionalcaptcha 页面返回的 context
awsChallengeJSStringOptionalcaptcha 页面返回的 challenge.js 链接
awsProblemUrlStringOptional包含 problemnum_solutions_required 等关键字的 problem 接口 url
WARNING

如果返回的 cookie 不可用,可能是有 IP 校验,请尝试 AntiAwsWafTask 并提交你自己的 proxy。

WARNING

如果你不知道应该传递哪些参数给 capsolver,请参考以下四种不同情况来传递不同参数,如果没有满足你的情况,请联系我们客服处理。

情况传递参数前提条件
情况一websiteURLaws captcha 页面响应码可能是 405,且能够在 html 里找到以下参数:
window.gokuProps = {"key":"AQID...","iv":"A6we...","context":"rGXm.."}
情况二websiteURL
awsKey
awsIv
awsContext
awsChallengeJS
在情况一的前提条件下,如果 capsolver 返回错误提示:Captcha render unexpect status code XXX, please pass in the awsKey, awsIv, awsContext and awsChallengeJs parameters,表示服务端没有触发 captcha,请手动解析 keyivcontext 参数传递给 capsolver。
情况三websiteURL
awsChallengeJS
当页面找不到 keyivcontext,但有 challenge.js 时,将 challenge.js 作为 awsChallengeJS 的值传递给 capsolver。
情况四websiteURL
awsProblemUrl
特殊版本,当页面找不到 keyivcontextchallenge.js,只有 captcha.js 时,需要将 problem 接口 url 传递给 capsolver,awsProblemUrl 应该包含 problemnum_solutions_required 等值,这些值可以在页面 html 里面搜索 visualSolutionsRequired 找到。

awsProblemUrl 完整示例:https://ait.2608283a.us-east-1.captcha.awswaf.com/ait/ait/ait/problem?kind=visual&domain=www.amazon.com&locale=en-us&problem=gridcaptcha-5-0.15-0&num_solutions_required=2

请求示例

POST https://api.capsolver.com/createTask
Host: api.capsolver.com
Content-Type: application/json
 
{
    "clientKey": "YOUR_API_KEY",
    "task": {
        "type": "AntiAwsWafTask", // Required
        "websiteURL": "https://efw47fpad9.execute-api.us-east-1.amazonaws.com/latest", // Required
        "awsKey": "AQIDAHjcYu/GjX+QlghicBg......shMIKvZswZemrVVqA==",  // Optional
        "awsIv": "CgAAFDIlckAAAAid",  // Optional
        "awsContext": "7DhQfG5CmoY90ZdxdHCi8WtJ3z......njNKULdcUUVEtxTk=",  // Optional
        "awsChallengeJS": "https://41bcdd4fb3cb.610cd090.us-east-1.token.awswaf.com/41bcdd4fb......a6c832/challenge.js",  // Optional
        "awsProblemUrl": "https://ait...awswaf.com/ait/ait/ait/problem?kind=visual&...&problem=gridcaptcha-5-0.1-0&num_solutions_required=2",  // Optional
        "proxy": "http:ip:port:user:pass" // socks5:ip:port:user:pass 
    }
}

响应示例

{
    "errorId": 0,
    "errorCode": "",
    "errorDescription": "",
    "taskId": "61138bb6-19fb-11ec-a9c8-0242ac110006"
}

获取结果

使用 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,
  "taskId": "646825ef-9547-4a29-9a05-50a6265f9d8a",
  "status": "ready",
  "solution": {
    "cookie": "223d1f60-0e9f-4238-ac0a-e766b15a778e:EQoAf0APpGIKAAAA:AJam3OWpff1VgKIJxH4lGMMHxPVQ0q0R3CNtgcMbR4VvnIBSpgt1Otbax4kuqrgkEp0nFKanO5oPtwt9+Butf7lt0JNe4rZQwZ5IrEnkXvyeZQPaCFshHOISAFLTX7AWHldEXFlZEg7DjIc="
  }
}

使用 SDK 请求

# pip install --upgrade capsolver
# export CAPSOLVER_API_KEY='...'
 
import capsolver
 
# capsolver.api_key = "..."
solution = capsolver.solve({
    "type": "AntiAwsWafTask",
    "websiteURL": "https://efw47fpad9.execute-api.us-east-1.amazonaws.com/latest",
    "proxy": "ip:port:user:pass",
})