Hướng dẫn
Nhiệm vụ (Token)
AWS WAF

AwsWafCaptcha: giải AWS WAF

TIP

Tạo tác vụ bằng phương thức createTask và nhận kết quả bằng phương thức getTaskResult.

Các loại tác vụ types mà chúng tôi hỗ trợ:

  • AntiAwsWafTask loại tác vụ này yêu cầu proxy của riêng bạn.
  • AntiAwsWafTaskProxyLess loại tác vụ này không yêu cầu proxy của riêng bạn.

Tạo tác vụ

Tạo một tác vụ nhận diện bằng phương thức createTask.

Cấu trúc đối tượng tác vụ

Thuộc tínhLoạiBắt buộcMô tả
typeStringBắt buộcAntiAwsWafTask
AntiAwsWafTaskProxyLess
proxyStringTùy chọnTìm hiểu Cách sử dụng proxy
websiteURLStringBắt buộcURL của trang trả về thông tin liên quan đến captcha
awsKeyStringTùy chọnGiá trị key được trả về bởi trang captcha
awsIvStringTùy chọnGiá trị iv được trả về bởi trang captcha
awsContextStringTùy chọnGiá trị context được trả về bởi trang captcha
awsChallengeJSStringTùy chọnLiên kết challenge.js được trả về bởi trang captcha
awsApiJsStringTùy chọnLiên kết jsapi.js được trả về bởi trang captcha
awsProblemUrlStringTùy chọnURL điểm cuối problem chứa các từ khóa như problem, num_solutions_required, v.v.
awsApiKeyStringTùy chọnGiá trị api_key của điểm cuối problem
awsExistingTokenStringTùy chọnaws-waf-token được sử dụng cho lần xác minh cuối cùng
Tôi nên sử dụng những tham số nào?

Nếu bạn không chắc chắn về các tham số cần truyền cho capsolver, vui lòng tham khảo các trường hợp sau đây cho các kết hợp tham số khác nhau. Nếu tình huống của bạn không được đề cập, vui lòng liên hệ với bộ phận chăm sóc khách hàng của chúng tôi để được hỗ trợ.

Tình huốngTruyền tham sốĐiều kiện tiên quyết
Tình huống 1websiteURLMã phản hồi của trang aws captcha có thể là 405, và các tham số sau có thể được tìm thấy trong html:
window.gokuProps = {"key":"AQID...","iv":"A6we...","context":"rGXm.."}
Tình huống 2websiteURL
awsKey
awsIv
awsContext
awsChallengeJS
Với tiền đề của tình huống 1, nếu capsolver trả về thông báo lỗi:Captcha render unexpect status code XXX, please pass in the awsKey, awsIv, awsContext and awsChallengeJs parameters, điều đó cho thấy máy chủ không kích hoạt captcha. Vui lòng phân tích cú pháp thủ công các tham số key, iv và context và truyền chúng cho capsolver.
Lưu ý đặc biệt
Nếu bạn nhận được thông báo lỗi cho biết timeout metering, your parameters have expired, please update awsKey, awsIv, awsContext or awsChallengeJS., điều đó cho thấy bốn tham số bạn cung cấp không tương ứng với nhau hoặc đã hết hạn. Bạn nên phân tích cú pháp tất cả các tham số theo thời gian thực cho mỗi yêu cầu.
Tình huống 3-1websiteURL
awsChallengeJS
Khi trang không tìm thấy key, iv, context, nhưng có challenge.js, hãy truyền challenge.js cho capsolver làm giá trị của awsChallengeJS.
Tình huống 3-2websiteURL
awsApiJs
Dựa trên tình huống 3-1, nếu không rõ challenge.js đến từ đâu, nhưng trang có jsapi.js, điều đó có nghĩa là challenge.js được lắp ráp từ mã của jsapi.js, thì jsapi.js có thể được truyền trực tiếp cho capsolver làm giá trị của awsApiJs.
Tình huống 4websiteURL
awsProblemUrl
Trong các trường hợp đặc biệt, khi trang không tìm thấy key, iv, context, challenge.js, và chỉ có captcha.js, bạn cần truyền url điểm cuối problem cho capsolver. awsProblemUrl nên chứa các giá trị như problemnum_solutions_required. Các giá trị này có thể được tìm thấy bằng cách tìm kiếm visualSolutionsRequired trong html của trang.

Ví dụ hoàn chỉnh về awsProblemUrl: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
Tình huống 5websiteURL
awsApiKey
awsApiJs
awsExistingToken
Điều này thường xảy ra trong các tình huống yêu cầu xác minh thứ cấp. Điểm cuối problem chứa api_key (có giá trị thường không đổi cho mỗi trang web) làm awsApiKey. Trang có jsapi.js làm awsApiJs, và aws-waf-token từ lần xác minh trước được truyền cho capsolver làm awsExistingToken

Ví dụ yêu cầu

POST https://api.capsolver.com/createTask
Host: api.capsolver.com
Content-Type: application/json
 
{
    "clientKey": "YOUR_API_KEY",
    "task": {
        "type": "AntiAwsWafTask", // AntiAwsWafTaskProxyLess
        "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
        "awsApiJs": "https://9175c2fd4189.edge.captcha-sdk.awswaf.com/9175c2fd4189/jsapi.js",  // Optional
        "awsProblemUrl": "https://ait...awswaf.com/ait/ait/ait/problem?kind=visual&...&problem=gridcaptcha-5-0.1-0&num_solutions_required=2",  // Optional
        "awsApiKey": "Sps+L2gV...",  // Optional
        "awsExistingToken": "5na16dg6-216a-...",  // Optional
        "proxy": "http:ip:port:user:pass" // socks5:ip:port:user:pass
    }
}

Sau khi bạn gửi tác vụ cho chúng tôi, bạn sẽ nhận được taskId trong phản hồi nếu thành công. Vui lòng đọc errorCode: danh sách đầy đủ các lỗi nếu bạn không nhận được id tác vụ. Để biết thêm thông tin, bạn có thể tham khảo bài viết blog này Cách giải quyết mã thông báo captcha của AWS Amazon

Ví dụ phản hồi

{
    "errorId": 0,
    "errorCode": "",
    "errorDescription": "",
    "taskId": "61138bb6-19fb-11ec-a9c8-0242ac110006"
}

Lấy kết quả

Sau khi có taskId, bạn cần gửi taskId để truy xuất giải pháp. Cấu trúc phản hồi được giải thích trong getTaskResult.

Tùy thuộc vào tải hệ thống, bạn sẽ nhận được kết quả trong khoảng thời gian từ 5 giây đến 30 giây

Ví dụ yêu cầu

POST https://api.capsolver.com/getTaskResult
Host: api.capsolver.com
Content-Type: application/json
 
{
    "clientKey": "YOUR_API_KEY",
    "taskId": "61138bb6-19fb-11ec-a9c8-0242ac110006"
}

Ví dụ phản hồi

{
  "errorId": 0,
  "taskId": "646825ef-9547-4a29-9a05-50a6265f9d8a",
  "status": "ready",
  "solution": {
    "cookie": "223d1f60-0e9f-4238-ac0a-e766b15a778e:EQoAf0APpGIKAAAA:AJam3OWpff1VgKIJxH4lGMMHxPVQ0q0R3CNtgcMbR4VvnIBSpgt1Otbax4kuqrgkEp0nFKanO5oPtwt9+Butf7lt0JNe4rZQwZ5IrEnkXvyeZQPaCFshHOISAFLTX7AWHldEXFlZEg7DjIc="
  }
}

Sử dụng yêu cầu SDK

# 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"
})

Mã mẫu

# 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)