AWS WAF
AWS WAF shows up as a browser challenge that mints an aws-waf-token cookie, and sometimes as an image-grid puzzle. Use the challenge task for the cookie, and the classification task for the grid.
Challenge vs. grid
The challenge task runs the AWS WAF browser check and returns an aws-waf-token cookie you attach to subsequent requests. When the site ships the SDK build, pass awsApiJs (the jsapi.js URL) so the right challenge.js is resolved from the same directory. The classification task is separate: it takes the nine grid tiles and a prompt and returns which tiles match, solved inline by ML.
AWS WAF Challenge
proxy optionalClears the AWS WAF challenge and returns an aws-waf-token cookie. Use the proxy variant (proxyType/proxyAddress/proxyPort) when the token is IP-bound.
AntiAwsWafTaskProxyLessAntiAwsWafTaskwebsiteURL*The protected URL you want to reach.awsApiJsThe jsapi.js SDK URL, when the site loads the SDK build. We use it to resolve challenge.js from the same directory.the aws-waf-token cookie. Attach it to your follow-up requests.
If the page loads the AWS WAF SDK (jsapi.js) rather than the inline challenge, pass awsApiJs so the correct challenge.js is fetched from the same host and directory.
AWS WAF Grid Classification
Solves the AWS WAF image-grid puzzle. Send the nine tiles and the prompt, and receive the tiles that match. Solved inline by ML, no proxy needed.
AwsWafClassificationimages*The nine grid tiles as base64 images.question*The prompt, in aws:grid:<object> form (e.g. aws:grid:chair).the indexes / coordinates of the matching tiles.
Send decoded tile images. Raw obfuscated tiles pulled straight from the widget will not classify.
Example
A challenge task body using the SDK URL:
{
"clientKey": "capzy_YOUR_KEY",
"task": {
"type": "AntiAwsWafTaskProxyLess",
"websiteURL": "https://example.com/",
"awsApiJs": "https://xxxx.token.awswaf.com/xxxx/jsapi.js"
}
}See Using proxies for the proxy fields, and Getting the result for the polling loop that returns solution.