Tasks
Updated 8/6/2026
Aws Waf Solver API
Solve AWS WAF CAPTCHA challenges with the Solverify AWS WAF Solver API. Create a task with the protected page URL and AWS WAF challenge script, then retrieve the aws-waf-token from both solution.value and solution.cookies.
The solver serves a synthetic page containing the supplied AWS WAF script instead of loading the full target page. This keeps the task focused on challenge execution and avoids loading unrelated page resources.
AWS WAF Solver Endpoint
POST https://solver.solverify.net/createTask
The AWS WAF integration follows the standard Solverify task workflow:
- Capture the protected page URL and
WafScriptUrl. - Create an
awswaftask, preferably with a replayable proxy. - Store the returned
taskId. - Poll
POST /getTaskResultuntil processing completes. - Read the token and solver user-agent from
solution. - Replay the token from the same proxy IP.
Request Parameters
| Field | Type | Required | Description |
|---|---|---|---|
clientKey | string | Yes | Your private Solverify API key. |
task.type | string | Yes | Must be awswaf. |
task.websiteURL | string | Yes | Full URL of the AWS WAF-protected target page. Maximum 2,048 characters. |
task.WafScriptUrl | string | Yes | Full AWS WAF challenge script URL. Maximum 4,096 characters. |
task.proxyType | string | No | Proxy type. Only http is accepted. Defaults to http when address and port are supplied. |
task.proxyAddress | string | No | Proxy IP address or hostname. Maximum 256 characters. |
task.proxyPort | string | No | Proxy port as a numeric string containing 1 to 5 digits. |
task.proxyLogin | string | No | Username for an authenticated proxy. |
task.proxyPassword | string | No | Password for an authenticated proxy. |
WafScriptUrl is case-sensitive. It is the src attribute of the <script id="awsThreatDetection"> element injected by the AWS WAF interstitial. Typical paths end in challenge.compact.js or challenge.js:
https://<id>.edge.sdk.awswaf.com/<id>/<id>/challenge.compact.js
Create AWS WAF Task Request
{
"clientKey": "YOUR_API_KEY",
"task": {
"type": "awswaf",
"websiteURL": "https://www.example.com/",
"WafScriptUrl": "https://c6572918bc10.edge.sdk.awswaf.com/c6572918bc10/a3b0bb466576/challenge.compact.js",
"proxyType": "http",
"proxyAddress": "1.1.1.1",
"proxyPort": "8080",
"proxyLogin": "username",
"proxyPassword": "password"
}
}
Omit proxy credentials when authentication is not required. Do not add userAgent or useragent to new task requests.
AWS WAF Solver Code Examples
These examples create an AWS WAF task and print the returned task ID.
curl --request POST \
--url https://solver.solverify.net/createTask \
--header "Content-Type: application/json" \
--data '{
"clientKey": "YOUR_API_KEY",
"task": {
"type": "awswaf",
"websiteURL": "https://www.example.com/",
"WafScriptUrl": "https://c6572918bc10.edge.sdk.awswaf.com/c6572918bc10/a3b0bb466576/challenge.compact.js",
"proxyType": "http",
"proxyAddress": "1.1.1.1",
"proxyPort": "8080"
}
}'
Create Task Response
{
"errorId": 0,
"taskId": "UUID"
}
Completed AWS WAF Result
{
"errorId": 0,
"status": "completed",
"solution": {
"value": "9ca6746d-a4b3-4b59-8e6f-617d0953e07d:DgoAeTZXYcQbAAAA:WbbRM2s4jeEh9BVUTuw2UG5TDZx7S4+...",
"cookies": {
"aws-waf-token": "9ca6746d-a4b3-4b59-8e6f-617d0953e07d:DgoAeTZXYcQbAAAA:WbbRM2s4jeEh9BVUTuw2UG5TDZx7S4+..."
},
"useragent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36"
},
"errorCode": null,
"errorDescription": null
}
Solution Fields
| Field | Description |
|---|---|
value | AWS WAF token value. |
cookies.aws-waf-token | Token formatted as the cookie required by follow-up requests. |
useragent | Actual pooled-browser user-agent used while generating the token. |
Replaying the AWS WAF Token
Send the token as the aws-waf-token cookie from the same proxy IP used by the solver:
Cookie: aws-waf-token=<token_value>
Also match the user-agent returned in solution.useragent when making the follow-up request.
AWS WAF Timeout
AWS WAF tasks can run for up to approximately 100 seconds before timing out internally. Configure an overall polling deadline and stop when the API returns an error.
AWS WAF API Errors
| Error code | Description |
|---|---|
ERROR_INVALID_REQUEST | The top-level request is missing or contains invalid JSON. |
ERROR_INVALID_TASK | The target URL, challenge script URL, or supplied proxy settings are invalid. |
ERROR_INSUFFICIENT_BALANCE | The account balance is too low to create the task. |
ERROR_NO_CAPACITY | AWS WAF solver capacity is temporarily unavailable. |
ERROR_TASK_FAILED | The challenge script did not produce a usable AWS WAF token. |
ERROR_TIMEOUT | Solving exceeded the allowed processing time. |
For recovery guidance and every supported response, see Solverify API Error Codes.
Next Steps
After creating an AWS WAF task, poll the Get Task Result API every 2 to 3 seconds with the returned taskId. Stop polling after completion or failure.
Frequently Asked Questions
What does the AWS WAF Solver API return?
It returns the AWS WAF token in solution.value, the aws-waf-token cookie in solution.cookies, and the actual solver user-agent in solution.useragent.
How do I find WafScriptUrl?
Inspect the AWS WAF challenge page for <script id="awsThreatDetection"> and copy its complete src URL. The script usually ends in challenge.compact.js or challenge.js.
Is a proxy required?
The API permits proxyless tasks, but if the token is IP-bound supply a proxy for a token that your backend can replay from the same IP.
Can I set a custom user-agent?
Not in the current solver. Use the actual browser user-agent returned in solution.useragent.
Why is my token rejected during replay?
Confirm that the follow-up request uses the same proxy IP, solution.useragent, and complete aws-waf-token value generated by the solve.