AwsWafCaptcha: 解决 AWS WAF
TIP
通过 createTask 创建任务, 然后通过 getTaskResult 获取识别结果
任务类型type
如下:
AntiAwsWafTask
需要转入你自己的代理AntiAwsWafTaskProxyLess
无需代理或已内置代理
创建任务
通过 createTask 创建任务
Task Object Structure
Properties | Type | Required | Description |
---|---|---|---|
type | String | Required | AntiAwsWafTask AntiAwsWafTaskProxyLess |
proxy | String | Optional | 学习使用 Using proxies |
websiteURL | String | Required | 返回 captcha 相关信息的页面 url |
awsKey | String | Optional | captcha 页面返回的 key 值 |
awsIv | String | Optional | captcha 页面返回的 iv 值 |
awsContext | String | Optional | captcha 页面返回的 context 值 |
awsChallengeJS | String | Optional | captcha 页面返回的 challenge.js 链接 |
awsProblemUrl | String | Optional | 包含 problem 、num_solutions_required 等关键字的 problem 接口 url |
WARNING
如果返回的 cookie 不可用,可能是有 IP 校验,请尝试 AntiAwsWafTask
并提交你自己的 proxy。
WARNING
如果你不知道应该传递哪些参数给 capsolver,请参考以下四种不同情况来传递不同参数,如果没有满足你的情况,请联系我们客服处理。
情况 | 传递参数 | 前提条件 |
---|---|---|
情况一 | websiteURL | aws 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,请手动解析 key ,iv ,context 参数传递给 capsolver。 |
情况三 | websiteURL awsChallengeJS | 当页面找不到 key ,iv ,context ,但有 challenge.js 时,将 challenge.js 作为 awsChallengeJS 的值传递给 capsolver。 |
情况四 | websiteURL awsProblemUrl | 特殊版本,当页面找不到 key ,iv ,context ,challenge.js ,只有 captcha.js 时,需要将 problem 接口 url 传递给 capsolver,awsProblemUrl 应该包含 problem 、num_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 方法获取识别结果
根据系统负载,您将在 1s
到 20s
的时间间隔内得到结果
请求示例
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",
})