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

AwsWafCaptcha: Giải quyết AWS WAF

TIP

Tạo nhiệm vụ bằng cách sử dụng phương pháp createTask và nhận kết quả bằng cách sử dụng phương pháp getTaskResult.

Chúng tôi hỗ trợ các loại nhiệm vụ sau:

  • AntiAwsWafTask - Loại nhiệm vụ này yêu cầu bạn sử dụng proxy của riêng bạn.
  • AntiAwsWafTaskProxyLess - Loại nhiệm vụ này không yêu cầu bạn sử dụng proxy của riêng bạn.

Tạo Nhiệm Vụ

Tạo nhiệm vụ nhận diện bằng cách sử dụng phương pháp createTask.

Cấu trúc Đối tượng Nhiệm vụ

Thuộc tínhKiểuBắt buộcMô tả
typeStringRequiredAntiAwsWafTask
AntiAwsWafTaskProxyLess
proxyStringRequiredTìm hiểu cách sử dụng proxy
websiteURLStringRequiredQuay lại URL trang của captcha cho thông tin liên quan
awsKeyStringOptionalGiá trị key được trả về bởi trang captcha
awsIvStringOptionalGiá trị iv được trả về bởi trang captcha
awsContextStringOptionalGiá trị context được trả về bởi trang captcha
awsChallengeJSStringOptionalLiên kết challenge.js được trả về bởi trang captcha
awsApiJsStringOptionalLiên kết jsapi.js được trả về bởi trang captcha
awsProblemUrlStringOptionalproblem giao diện url chứa các từ khóa như problem, num_solutions_required
awsApiKeyStringOptionalgiá trị api_key của giao diện `problem
awsExistingTokenStringOptionalaws-waf-token được sử dụng để xác thực lần trước
Tôi nên truyền những tham số nào?

Nếu bạn không biết nên truyền những tham số nào cho capsolver, hãy tham khảo những trường hợp khác nhau sau đây để truyền những tham số khác nhau, nếu không có trường hợp nào phù hợp với bạn, hãy liên hệ với bộ phận chăm sóc khách hàng của chúng tôi để xử lý.

Trường hợpTruyền tham sốĐiều kiện tiên quyết
Trường hợp 1websiteURLMã phản hồi của trang captcha AWS 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.."}
Trường hợp 2websiteURL
awsKey
awsIv
awsContext
awsChallengeJS
Theo tiền đề của trường hợp 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 đó có nghĩa là 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, ivcontext và truyền chúng cho capsolver.
Đặc biệt chú ý
Nếu bạn nhận được timeout metering, your parameters have expired, please update awsKey, awsIv, awsContext or awsChallengeJS. Khi lỗi xảy ra, có nghĩa là bốn tham số mà bạn truyền không tương ứng với nhau, hoặc đã hết hạn, đề nghị mỗi yêu cầu đều phân tích tất cả các tham số trong thời gian thực.
Trường hợp 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.
Trường hợp 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 biên dịch từ mã của jsapi.js, thì jsapi.js có thể được truyền trực tiếp đến capsolver dưới dạng giá trị của awsApiJs.
Trường hợp 4websiteURL
awsProblemUrl
Phiên bản đặc biệt, khi trang không tìm thấy key, iv, context, challenge.js và chỉ tìm thấy captcha.js, bạn cần truyền url giao diện problem cho capsolver, awsProblemUrl phải chứa các giá trị như problemnum_solutions_required, có thể tìm thấy bằng cách tìm kiếm visualSolutionsRequired trong html của trang.

awsProblemUrl ví dụ đầy đủ: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
Trường hợp 5websiteURL
awsApiKey
awsApiJs
awsExistingToken
Thông thường xảy ra trong trường hợp cần xác thực 2 bước, problem giao diện chứa một api_key (giá trị của mỗi trang web thường không thay đổi) như awsApiKey, trang có một jsapi.js như awsApiJs, aws-waf-token xác thực lần trước được truyền đến capsolver như 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", // Required
        "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 nhiệm vụ cho chúng tôi, bạn nên nhận được ‘ID nhiệm vụ’ trong phản hồi nếu nó thành công. Xin đọc errorCode: danh sách đầy đủ các lỗi nếu bạn không nhận được ID nhiệm vụ.

Ví dụ Phản hồi

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

Lấy Kết quả

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

Tùy thuộc vào tải của hệ thống, bạn sẽ nhận kết quả trong khoảng 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"
})