Documentation Menu

Tasks

Updated 8/6/2026

Aws Waf Solver API

POST
https://solver.solverify.net/createTask

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:

  1. Capture the protected page URL and WafScriptUrl.
  2. Create an awswaf task, preferably with a replayable proxy.
  3. Store the returned taskId.
  4. Poll POST /getTaskResult until processing completes.
  5. Read the token and solver user-agent from solution.
  6. Replay the token from the same proxy IP.

Request Parameters

FieldTypeRequiredDescription
clientKeystringYesYour private Solverify API key.
task.typestringYesMust be awswaf.
task.websiteURLstringYesFull URL of the AWS WAF-protected target page. Maximum 2,048 characters.
task.WafScriptUrlstringYesFull AWS WAF challenge script URL. Maximum 4,096 characters.
task.proxyTypestringNoProxy type. Only http is accepted. Defaults to http when address and port are supplied.
task.proxyAddressstringNoProxy IP address or hostname. Maximum 256 characters.
task.proxyPortstringNoProxy port as a numeric string containing 1 to 5 digits.
task.proxyLoginstringNoUsername for an authenticated proxy.
task.proxyPasswordstringNoPassword 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

FieldDescription
valueAWS WAF token value.
cookies.aws-waf-tokenToken formatted as the cookie required by follow-up requests.
useragentActual 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 codeDescription
ERROR_INVALID_REQUESTThe top-level request is missing or contains invalid JSON.
ERROR_INVALID_TASKThe target URL, challenge script URL, or supplied proxy settings are invalid.
ERROR_INSUFFICIENT_BALANCEThe account balance is too low to create the task.
ERROR_NO_CAPACITYAWS WAF solver capacity is temporarily unavailable.
ERROR_TASK_FAILEDThe challenge script did not produce a usable AWS WAF token.
ERROR_TIMEOUTSolving 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.