AwsWafCaptcha: solving AWS WAF
Create the task with the createTask method and get the result with the getTaskResult method.
The task type types
that we support:
AntiAwsWafTask
this task type require your own proxies.AntiAwsWafTaskProxyLess
this task type don’t require your own proxies.
Create Task
Create a recognition task with the createTask method.
Task Object Structure
Properties | Type | Required | Description |
---|---|---|---|
proxy | String | Optional | Learn Using proxies |
websiteURL | String | Required | The url of the page that returns captcha related information |
awsKey | String | Optional | The key value returned by the captcha page |
awsIv | String | Optional | The iv value returned by the captcha page |
awsContext | String | Optional | The context value returned by the captcha page |
awsChallengeJS | String | Optional | The challenge.js link returned by the captcha page |
awsProblemUrl | String | Optional | The problem endpoint url containing keywords like problem , num_solutions_required , etc. |
If the generated cookie is not available, there may be IP verification, please try AntiAwsWafTask
and submit your own proxy.
If you don’t know which parameters to pass to capsolver, please refer to the following four different situations to pass different parameters. If none of them meet your needs, please contact our customer service.
Situation | Passing Parameters | Prerequisites |
---|---|---|
Situation 1 | websiteURL | The aws captcha page response code may be 405, and the following parameters can be found in the html:window.gokuProps = {"key":"AQID...","iv":"A6we...","context":"rGXm.."} |
Situation 2 | websiteURL awsKey awsIv awsContext awsChallengeJS | Under the precondition of situation 1, if capsolver returns an error message:Captcha render unexpect status code XXX, please pass in the awsKey, awsIv, awsContext and awsChallengeJs parameters , Indicates that the server did not trigger the captcha. Please manually parse the key, iv, and context parameters and pass them to capsolver. |
Situation 3 | websiteURL awsChallengeJS | When the page cannot find key, iv, context, but has challenge.js, pass challenge.js to capsolver as the value of awsChallengeJS. |
Situation 4 | websiteURL awsProblemUrl | In special cases, when the page cannot find key, iv, context, challenge.js, and only has captcha.js, you need to pass the problem endpoint url to capsolver. awsProblemUrl should contain values such as problem and num_solutions_required . These values can be found by searching for visualSolutionsRequired in the page html. awsProblemUrl complete example: 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 |
Example Request
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
}
}
After you submit the task to us, you should receive in the response a ‘taskId’ if it’s successful. Please read errorCode: full list of errors if you didn’t receive the task id. For more information, you can also refer to this blog post How to solve aws amazon captcha token
Example Response
{
"errorId": 0,
"errorCode": "",
"errorDescription": "",
"taskId": "61138bb6-19fb-11ec-a9c8-0242ac110006"
}
Getting Results
After you have the taskId, you need to submit the taskId to retrieve the solution. Response structure is explained in getTaskResult.
Depending on the system load, you will get the results within the interval of 5s
to 30s
Example Request
POST https://api.capsolver.com/getTaskResult
Host: api.capsolver.com
Content-Type: application/json
{
"clientKey": "YOUR_API_KEY",
"taskId": "61138bb6-19fb-11ec-a9c8-0242ac110006"
}
Example Response
{
"errorId": 0,
"taskId": "646825ef-9547-4a29-9a05-50a6265f9d8a",
"status": "ready",
"solution": {
"cookie": "223d1f60-0e9f-4238-ac0a-e766b15a778e:EQoAf0APpGIKAAAA:AJam3OWpff1VgKIJxH4lGMMHxPVQ0q0R3CNtgcMbR4VvnIBSpgt1Otbax4kuqrgkEp0nFKanO5oPtwt9+Butf7lt0JNe4rZQwZ5IrEnkXvyeZQPaCFshHOISAFLTX7AWHldEXFlZEg7DjIc="
}
}
Use SDK Request
# 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"
})
Sample Code
# pip install requests
import requests
import time
api_key = "YOUR_API_KEY" # TODO: your api key of capsolver
site_url = "https://efw47fpad9.execute-api.us-east-1.amazonaws.com/latest" # TODO: page url of your site
def capsolver():
payload = {
"clientKey": api_key,
"task": {
"type": 'AntiAwsWafTaskProxyLess',
"websiteURL": site_url
}
}
res = requests.post("https://api.capsolver.com/createTask", json=payload)
resp = res.json()
task_id = resp.get("taskId")
if not task_id:
print("Failed to create task:", res.text)
return
print(f"Got taskId: {task_id} / Getting result...")
while True:
time.sleep(1) # delay
payload = {"clientKey": api_key, "taskId": task_id}
res = requests.post("https://api.capsolver.com/getTaskResult", json=payload)
resp = res.json()
status = resp.get("status")
if status == "ready":
return resp.get("solution", {}).get('cookie')
if status == "failed" or resp.get("errorId"):
print("Solve failed! response:", res.text)
return
token = capsolver()
print(token)