> For the complete documentation index, see [llms.txt](https://docs2.anticaptcha.top/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs2.anticaptcha.top/api-giai-captcha/api-giai-captcha-token/amazon-awf.md).

# Amazon AWF

Hướng dẫn sử dụng API giải Captcha Amazon AWF của anticaptcha.top

<figure><img src="https://content.gitbook.com/content/aiWdIa3pJ7tiyJ3OnlF8/blobs/Qck5MYWO5Hqg7WybGPrG/image.png" alt="" width="528"><figcaption></figcaption></figure>

### 1. Tìm các tham số của Captcha Amazon AWF

Mở developer's console của browser và tìm các tham số mà bạn cần

<figure><img src="https://content.gitbook.com/content/aiWdIa3pJ7tiyJ3OnlF8/blobs/GCCLpX0OXQU6lAycTQO4/image.png" alt=""><figcaption></figcaption></figure>

### 2. Tạo yêu cầu/Request

<mark style="color:red;">**POST :**</mark> <mark style="color:red;"></mark><mark style="color:red;">`https://anticaptcha.top/api/captcha`</mark>

**Các tham số Body**:

<table data-header-hidden><thead><tr><th width="193">Tên trường dữ liệu</th><th width="131"></th><th width="105"></th><th></th></tr></thead><tbody><tr><td><strong>Tên trường dữ liệu</strong></td><td><strong>Kiểu dữ liệu</strong></td><td><strong>Bắt buộc</strong></td><td><strong>Mô tả</strong></td></tr><tr><td>apikey</td><td>String</td><td>x</td><td>Key duy nhất để xác định đối tác API</td></tr><tr><td>type</td><td>Interger</td><td>x</td><td>Giá trị: <mark style="color:red;"><strong>25</strong></mark></td></tr><tr><td>pageurl</td><td>String</td><td>x</td><td>url của webpage hiển thị Captcha mà bạn muốn giải<br>Ví dụ: <a href="https://norway-meetup.aws.wslab.no/">https://norway-meetup.aws.wslab.no</a></td></tr><tr><td>websitekey</td><td>String</td><td></td><td>Giá trị của tham số <em>key</em> trong page source<br>Khi truy cập pageurl mà status code trả về là 405, thì sẽ cần truyền tham số này</td></tr><tr><td>context</td><td>String</td><td></td><td>Giá trị của tham số <em>context</em> trong page source<br>Khi truy cập pageurl mà status code trả về là 405, thì sẽ cần truyền tham số này</td></tr><tr><td>iv</td><td>String</td><td></td><td>Giá trị của tham số <em>iv</em> trong page source<br>Khi truy cập pageurl mà status code trả về là 405, thì sẽ cần truyền tham số này</td></tr><tr><td>captcha_script</td><td>String</td><td></td><td>url của <em><code>captcha.js</code></em>script<br>Khi truy cập pageurl mà status code trả về là 405 hoặc 202, thì sẽ cần truyền tham số này</td></tr><tr><td>challenge_script</td><td>String</td><td></td><td>url của <em><code>challenge.js</code></em>script<br>Khi truy cập pageurl mà status code trả về là 405 hoặc 202, thì sẽ cần truyền tham số này</td></tr><tr><td>json</td><td>Integer</td><td></td><td><mark style="color:red;"><strong>0</strong></mark>: server sẽ trả về dạng text (mặc định)<br><mark style="color:red;"><strong>1</strong></mark>: server sẽ trả về dạng JSON</td></tr><tr><td>proxy</td><td>String</td><td></td><td>Định dạng ip:port:username:password<br><em>Nếu truyền dạng này thì ko cần truyền các trường dữ liệu proxy ở dưới nữa</em></td></tr><tr><td>proxyType</td><td>String</td><td></td><td>Kiểu Proxy:<br><strong>http</strong><br><strong>https</strong><br><strong>socks5</strong></td></tr><tr><td>proxyAddress</td><td>String</td><td></td><td>địa chỉ IP hoặc hostname của Proxy<br>Ví dụ: 103.124.95.45</td></tr><tr><td>proxyPort</td><td>String</td><td></td><td>Proxy port<br>Ví dụ: 8686</td></tr><tr><td>proxyLogin</td><td>String</td><td></td><td>Username proxy nếu có</td></tr><tr><td>proxyPassword</td><td>String</td><td></td><td>Password proxy nếu có</td></tr><tr><td>userAgent</td><td>String</td><td></td><td>User-Agent của trình duyệt của bạn sẽ được sử dụng để tải captcha. Chỉ sử dụng User-Agent của các trình duyệt hiện đại</td></tr></tbody></table>

```http
POST HTTP
Url: https://anticaptcha.top/api/captcha
Content-Type: application/json

{
	"apikey": "YOUR_API_KEY",
	"type": 25, // captcha id của Amazon AWF
	"pageurl": "https://norway-meetup.aws.wslab.no/" // thay bằng url của bạn
	//"websitekey": "AQIDAHjcYu/GjX+QlghicBgQ/7bFaQZ+m5FKCMDnO+vTbNg96AELMN914s+NREyTdDq+z5QWAAAAfjB8BgkqhkiG9w0BBwagbzBtAgEAMGgGCSqGSIb3DQEHATAeBglghkgBZQMEAS4wEQQMVlzjBMUDRma8BC83AgEQgDuUR5Y++wlUGjJqHI2OBTqF2S2iH2DWQZZo1TIAFZjova9h/qRPwfsySRco2sTpGUC+k1LbCr9KsBJCLA==", // thay bằng key amazon awf của bạn
	//"context": "eUbRs0dztvKIT9wrTG/8r7ox/cyaWTixaHgTTPhbEtFXMurNl8noKwPWzeNjP6CYZ/sqnftiHcH6RvqJyzC8Uj21nPG3ej8cBSS+xm+qzEJFhDUvvrD2o8HSfbKVXzLidKkG1HmjA5Ymw+z5wld1LOK6Y5wAkVWQiPDEBpN7asbnRs6UZeFvJ6tElh9ID+NvMAn4isDLer6XMn8FTOQR5tFyYKje1sa+xOGHOOG5l5Gy4icXuHDG8wWKjA/o4BHjAWKmH8Tu2tR0j08aUjvtbVfSzQtxtmOBKTNd7Q02VO7LJMdcboyGdD/L07oxJj7f8M2gX2rX6wOtmC4Y7EYI47TQ/TSN", // thay bằng context của bạn
	//"iv": "EkQvKQB+S1AAAAqc", // thay bằng iv của bạn
	//"captcha_script": "https://1127390e2833.de01b5d8.us-west-1.captcha.awswaf.com/1127390e2833/1755d2d50619/cad127e790dc/captcha.js", // thay bằng url captcha_script của bạn
	//"challenge_script": "https://1127390e2833.de01b5d8.us-west-1.token.awswaf.com/1127390e2833/1755d2d50619/cad127e790dc/challenge.js" // thay bằng url challenge_script của bạn
	........ // các trường dữ liệu khác nữa nếu có
}
```

### 3. Nhận kết quả trả về/Response

Kết quả trả về dạng JSON gồm các trường sau

<table data-header-hidden><thead><tr><th width="201"></th><th width="137"></th><th></th></tr></thead><tbody><tr><td><strong>Tên trường dữ liệu</strong></td><td><strong>Kiểu dữ liệu</strong></td><td><strong>Mô tả</strong></td></tr><tr><td>success</td><td>boolean</td><td><p>Mã thông báo xác định kết quả của bước gửi captcha qua POST</p><p><mark style="color:red;"><strong>true</strong></mark>: Thành công<br><mark style="color:red;"><strong>false</strong></mark>: Thất bại</p></td></tr><tr><td>message</td><td>String</td><td>Thông báo tương ứng nếu có</td></tr><tr><td>captcha</td><td>String</td><td>kết quả giải ra = cookie dùng để vượt Amazon AWF captcha</td></tr><tr><td>base64img</td><td>String</td><td>Không dùng đến</td></tr></tbody></table>

{% tabs %}
{% tab title="Thành công" %}

```json
{
	"success": true,
	"message": "Thành công",
	"captcha": "223d1f60-0e9f-4238-ac0a-e766b15a778e:EQoAf0APpGIKAAAA:AJam3OWpff1VgKIJxH4lGMMHxPVQ0q0R3CNtgcMbR4VvnIBSpgt1Otbax4kuqrgkEp0nFKanO5oPtwt9+Butf7lt0JNe4rZQwZ5IrEnkXvyeZQPaCFshHOISAFLTX7AWHldEXFlZEg7DjIc=", //kết quả cookie giải ra
	"base64img": null
}
```

{% endtab %}

{% tab title="Thất bại" %}

```json
{
	"success": false,
	"message": null,
	"captcha": null,
	"base64img": null
}
```

hoặc

```json
{
	"success": false,
	"message": "Số xu không đủ",
	"captcha": ""
}
```

hoặc

```json
{
	"success": false,
	"message": "Api key không chính xác",
	"captcha": ""
}
```

{% endtab %}
{% endtabs %}

### 4. Code mẫu

{% tabs %}
{% tab title="C#" %}

```csharp
public class CatpchaResult
{
    public string log { get; set; }
    public bool status { get; set; }
    public string catcha { get; set; }
}
public class AnticaptchaTopApi
{
    public string apiKey = "";
    public string Post(string url, object data, string method = "POST")
    {
        int num = 0;
        NameValueCollection values;
        while (num < 1)
        {
            try
            {
                using (WebClient webClient = new WebClient())
                {
                    values = new NameValueCollection();
                    if (data != null)
                    {
                        data.GetType().GetProperties().ToList().ForEach(delegate (PropertyInfo pi)
                        {
                            values.Add(pi.Name, (pi.GetValue(data, null) ?? "").ToString());
                        });
                        byte[] bytes = webClient.UploadValues(url, method, values);
                        return Encoding.UTF8.GetString(bytes);
                    }
                    return webClient.DownloadString(url);
                }
             }
            catch
            {                
            }
        }
        return "";
    }
    public CatpchaResult GetCatpcha(int type=25,string websitekey,string pageurl,string context,string iv,string captcha_script,string challenge_script)
    {
        var data = new
        {
            apikey = apiKey,
            type = type,
            websitekey = websitekey,
            pageurl = pageurl,
            context = context,
            iv = iv,
            captcha_script = captcha_script,
            challenge_script = challenge_script
        };
        var rs = new CatpchaResult
        {
            status = false
        };
        try
        {
            var result = JsonConvert.DeserializeObject<dynamic>(Post("https://anticaptcha.top/api/captcha", data));
            if (result.success == true)
            {
                rs.status = true;
                rs.catcha = result.captcha;
                rs.log = result.message;
            }
        }
        catch
        {
        }
        return rs;
    }
}
```

{% endtab %}

{% tab title="PHP Curl" %}

```php
<?php
$curl = curl_init();
curl_setopt_array($curl, array(
  CURLOPT_URL => "https://anticaptcha.top/api/captcha",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 30,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "POST",
  CURLOPT_POSTFIELDS => "------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"apikey\"\r\n\r\n[apikey]\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"type\"\r\n\r\n25\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"websitekey\"\r\n\r\nAQIDAHjcYu/GjX+QlghicB...\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"pageurl\"\r\n\r\n[url chứa amazon awf captcha]\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW--; name=\"context\"\r\n\r\neUbRs0dztvKIT9wrTG...\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW--; name=\"iv\"\r\n\r\nEkQvKQB+S1AAAAqc\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW--; name=\"captcha_script\"\r\n\r\n[url của captcha_script]\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW--; name=\"challenge_script\"\r\n\r\n[url của challenge_script]\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW--",
  CURLOPT_HTTPHEADER => array(
    "cache-control: no-cache",
    "content-type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW"
  ),
));

$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
  echo "cURL Error #:" . $err;
} else {
  echo $response;
}
```

{% endtab %}

{% tab title="Javascript Jquery AJAX" %}

```javascript
var form = new FormData();
form.append("apikey", "[apikey]");
form.append("type", "25");
form.append("websitekey", "AQIDAHjcYu/GjX+QlghicBgQ/7bFaQZ+m5FKCMDnO+...");
form.append("pageurl", "[url chứa amzon awf captcha]");
form.append("context", "eUbRs0dztvKIT9wrTG/8r7ox/cyaWTi...");
form.append("iv", "EkQvKQB+S1AAAAqc");
form.append("captcha_script", "[url của captcha_script]");
form.append("challenge_script", "[url của challenge_script]");

var settings = {
  "async": true,
  "crossDomain": true,
  "url": "https://anticaptcha.top/api/captcha",
  "method": "POST",
  "headers": {
    "cache-control": "no-cache"
  },
  "processData": false,
  "contentType": false,
  "mimeType": "multipart/form-data",
  "data": form
}

$.ajax(settings).done(function (response) {
  console.log(response);
});
```

{% endtab %}
{% endtabs %}

### 5. Sử dụng kết quả nhận được

Sau khi giải captcha thành công, bạn cần tạo cookie aws-waf-token và thêm giá trị cookie mà bạn nhận được từ kết quả vào.

### *<mark style="color:red;">Lưu ý</mark>:* Nên sử dụng phần mềm PostMan để kiểm tra chạy test trước
