CAPSOLVER
Blog
Cách xử lý AWS WAF CAPTCHA trên Go với SDK chính thức

Làm thế nào để giải quyết CAPTCHA AWS WAF bằng Go với SDK chính thức

Logo of CapSolver

Anh Tuan

How to use CapSolver

17-Sep-2026

TL;DR

  • SDK Go chính thức có thể gửi một nhiệm vụ được tài liệu hóa AntiAwsWafTask và trả về kết quả CAPTCHA của AWS WAF.
  • Nhiệm vụ này sử dụng URL trang đã sở hữu và proxy; các trường thử thách tùy chọn nên tuân theo tài liệu nhiệm vụ hiện tại.
  • Thiết lập host API SDK thành HTTPS một cách rõ ràng trong phiên bản được sử dụng ở đây, và áp dụng thời gian chờ yêu cầu HTTP.
  • Đọc kết quả thông qua result.Solution.Cookie sau khi kiểm tra lỗi, tình trạng sẵn sàng và giải pháp không trống.
  • Các bài kiểm tra fixture HTTP cục bộ đã xác minh hành vi yêu cầu và phản hồi của ví dụ; việc giải CAPTCHA AWS WAF thực tế và chấp nhận của ứng dụng chưa được kiểm tra.

Một tích hợp CAPTCHA AWS WAF trong Go có hai trách nhiệm riêng biệt: yêu cầu người giải trả về kết quả được tài liệu hóa, sau đó sử dụng kết quả đó đúng cách trong ứng dụng đang được kiểm tra. SDK chính thức xử lý giao tiếp API, nhưng nó không thể quyết định xem ứng dụng của bạn có chấp nhận thử thách hoàn thành hay không.

Hướng dẫn này sử dụng CapSolver để kiểm tra trang AWS WAF đã sở hữu. Nó tập trung vào việc cài đặt module Go, xây dựng nhiệm vụ, xử lý cookie trả về và hiểu cách SDK xử lý giao thông. Hướng dẫn không giả định rằng một token được chấp nhận trên một miền áp dụng cho miền khác.

Go SDK xử lý điều gì?

SDK Go bao bọc việc tạo nhiệm vụ và lấy kết quả phía sau phương thức Solve của nó. Một thư viện API gói các cuộc gọi này thành các phương thức cấp ngôn ngữ, nhưng bạn vẫn cần các tham số nhiệm vụ đúng và logic ứng dụng.

Tài liệu nhiệm vụ AWS WAF chính thức mô tả AntiAwsWafTask và kết quả solution.cookie của nó. SDK Go trình bày phản hồi dưới dạng CapSolverResponse chứa con trỏ Solution. Sự khác biệt này quan trọng: Solve không trả về chuỗi cookie trực tiếp.

Đối với hướng dẫn này, trình tự mong muốn là:

  1. Mở trang kiểm tra đã sở hữu và xác định bối cảnh thử thách AWS WAF.
  2. Cung cấp URL trang đó, proxy cần thiết và khóa API giải.
  3. Gọi SDK và kiểm tra phản hồi trả về.
  4. Truyền giá trị cookie đến ứng dụng kiểm tra được ủy quyền.
  5. Đảm bảo kết quả thực tế của ứng dụng.

AWS mô tả các token của nó như một phần của giải pháp phòng chống mối đe dọa thông minh AWS WAF. Xem kết quả là giá trị liên quan đến một lần thử cụ thể, không phải là quyền truy cập vĩnh viễn vào ứng dụng.

Bước 1: Cài đặt module Go chính thức

Tạo một module Go nhỏ và gán phiên bản SDK được sử dụng cho ví dụ này. Gói được công bố trong kho lưu trữ Go chính thức của CapSolver.

bash Copy
mkdir capsolver-aws-waf-example
cd capsolver-aws-waf-example
go mod init capsolver-aws-waf-example
go get github.com/capsolver/capsolver-go@v0.0.0-20251204081438-e4e07af23eae

Ví dụ này được biên dịch và các bài kiểm tra cục bộ được thực hiện với Go 1.27.1. Phiên bản phụ dài là phiên bản giả của Go xác định một lần commit cụ thể. Gán phiên bản này làm cho mã nguồn SDK có thể tái tạo được; nó không phải là lời khuyên để bỏ qua các sửa chữa từ nguồn gốc.

Giữ lại tệp go.modgo.sum đã tạo cùng với ví dụ. Tài liệu quản lý phụ thuộc của Go giải thích các tệp này và lựa chọn phiên bản. Khi nâng cấp SDK, chạy lại các bài kiểm tra bao phủ các trường yêu cầu và xử lý phản hồi.

Việc cài đặt này chuẩn bị thư viện khách hàng. Nó không cung cấp trang kiểm tra AWS WAF, mua tín dụng giải, hoặc cấu hình proxy. Những điều này là các điều kiện tiên quyết riêng biệt cho một giải pháp thực tế.

Bước 2: Chuẩn bị ba cài đặt cần thiết

Ví dụ đọc URL trang đã sở hữu, chuỗi proxy và khóa API giải từ các biến môi trường.

Biến Giá trị cần cung cấp
OWNED_WAF_URL URL của trang AWS WAF bạn sở hữu hoặc được ủy quyền kiểm tra
CAPSOLVER_PROXY Proxy được định dạng theo tài liệu nhiệm vụ
CAPSOLVER_API_KEY Khóa API giải cho tài khoản CapSolver của bạn

Tên biến này thuộc về ví dụ; chúng không phải là trường nhiệm vụ API bổ sung. Mã Go ánh xạ chúng thành websiteURL, proxyApiKey của client SDK.

Sử dụng quản lý bí mật thông thường hoặc môi trường phát triển để cung cấp thông tin xác thực. Không dán khóa thực tế vào mã được ghi lại, và không thay thế khóa quản lý nội dung cho khóa giải. Thông tin xác thực proxy nên được xử lý tương tự.

Chọn URL đã sở hữu cụ thể tạo ra thử thách. Trang chủ tổng quát có thể không cung cấp bối cảnh cần thiết cho kiểm tra một tuyến đường khác. Giữ cấu hình phiên bản ứng dụng và mạng nhất quán với thiết kế kiểm tra thay vì xem kết quả giải như tách rời khỏi yêu cầu cần nó.

Bước 3: Thiết lập HTTPS và gửi nhiệm vụ

Lưu mã sau dưới dạng main.go. Bản đồ nhiệm vụ và lời gọi Solve tuân theo SDK và ví dụ nhiệm vụ chính thức. Các kiểm tra biến môi trường, gán HTTPS, thời gian chờ và kiểm tra cookie sẵn sàng là các bổ sung cho chương trình nhỏ này. Các fixture HTTP cục bộ đã kiểm tra SDK; một giải pháp thực tế yêu cầu khóa giải, proxy và trang đã sở hữu, và chưa được thực hiện.

go Copy
package main

import (
    "errors"
    "fmt"
    "log"
    "net/http"
    "os"
    "time"

    capsolver_go "github.com/capsolver/capsolver-go"
)

func solveAWS(pageURL, proxy, key string) (*capsolver_go.CapSolverResponse, error) {
    if pageURL == "" || proxy == "" || key == "" {
        return nil, errors.New("set OWNED_WAF_URL, CAPSOLVER_PROXY and CAPSOLVER_API_KEY")
    }
    client := capsolver_go.CapSolver{ApiKey: key}
    result, err := client.Solve(map[string]any{
        "type": "AntiAwsWafTask",
        "websiteURL": pageURL,
        "proxy": proxy,
    })
    if err != nil {
        return nil, err
    }
    if result == nil || result.Status != "ready" ||
        result.Solution == nil || result.Solution.Cookie == "" {
        return nil, errors.New("no ready AWS WAF cookie result")
    }
    return result, nil
}

func main() {
    capsolver_go.ApiHost = "https://api.capsolver.com"
    http.DefaultClient.Timeout = 20 * time.Second
    result, err := solveAWS(
        os.Getenv("OWNED_WAF_URL"),
        os.Getenv("CAPSOLVER_PROXY"),
        os.Getenv("CAPSOLVER_API_KEY"),
    )
    if err != nil {
        log.Fatal(err)
    }
    fmt.Println("AWS WAF result status:", result.Status)
    // result.Solution.Cookie thuộc về lần thử kiểm tra được ủy quyền này.
}

Trong nguồn SDK được gán phiên bản, host mặc định sẽ quay về URL HTTP. Gán rõ ràng capsolver_go.ApiHost chọn https://api.capsolver.com trước khi yêu cầu mang theo thông tin xác thực giải của bạn.

SDK sử dụng client HTTP mặc định của Go. Thiết lập http.DefaultClient.Timeout do đó áp dụng thời gian chờ yêu cầu cho ví dụ độc lập này. Nó cũng thay đổi client này trên toàn bộ quá trình: nếu bạn tích hợp SDK vào ứng dụng lớn hơn, hãy xem xét tác động đến người dùng khác của client mặc định.

Giá trị 20 giây là cài đặt ví dụ, không phải cam kết dịch vụ hoặc thời hạn cho toàn bộ nhiệm vụ. SDK có thể thực hiện nhiều yêu cầu HTTP khi lấy kết quả. Mỗi yêu cầu có thời gian chờ không làm cho cuộc gọi Solve hoàn tất là 20 giây.

Tài liệu Go net/http mô tả hành vi thời gian chờ của client. Bao bọc không hiển thị tham số hủy bỏ dựa trên ngữ cảnh vì phương thức SDK được hiển thị ở đây không nhận một tham số như vậy.

Nhận mã thưởng CapSolver của bạn

Tăng ngân sách tự động hóa của bạn ngay lập tức!
Sử dụng mã thưởng CAP26 khi nạp tiền vào tài khoản CapSolver để nhận thêm 5% thưởng trên mỗi lần nạp — không giới hạn.
Nhận mã thưởng ngay trong Bảng điều khiển CapSolver
Mã thưởng

Bước 4: Chạy chương trình và kiểm tra kết quả

Chạy chương trình sau khi cung cấp ba cài đặt môi trường. Lệnh này vẫn cần xác minh với trang đã sở hữu của bạn; các bài kiểm tra ghi lại sử dụng fixture HTTP cục bộ:

bash Copy
go run .

Khi SDK trả về phản hồi sẵn sàng với cookie không trống, chương trình in trạng thái phản hồi. Nó cố ý không in chính cookie. Giá trị có sẵn tại result.Solution.Cookie cho phần kiểm tra đã sở hữu của bạn tiếp tục luồng ứng dụng.

Có ba kiểm tra riêng biệt trong solveAWS. Lỗi Go làm thất bại cuộc gọi. Phản hồi thiếu hoặc không sẵn sàng làm thất bại kiểm tra sẵn sàng của bao bọc. Giải pháp nil hoặc cookie trống làm thất bại kiểm tra nội dung kết quả. Điều này ngăn mã gọi tiếp tục chỉ vì một con trỏ được trả về.

In trạng thái không phải là khẳng định thành công của ứng dụng. Thêm kiểm tra cuối cùng trong trình chạy kiểm tra sau khi sử dụng giá trị trả về trong phiên bản phù hợp. Nếu trang vẫn hiển thị thử thách, giữ lại giai đoạn quan sát và thông tin lỗi của nhà cung cấp thay vì xem trạng thái in ra là bằng chứng trang đã chấp nhận thử thách.

Ví dụ không triển khai jar cookie HTTP hoặc lớp tự động hóa trình duyệt. Những điều này phụ thuộc vào cách ứng dụng của bạn tạo và duy trì phiên kiểm tra. Tránh thêm cookie miền đoán hoặc tiêu đề toàn cục áp dụng giá trị cho các yêu cầu không liên quan.

Các trường AWS WAF tùy chọn cần thiết khi nào?

Các trường tùy chọn quan trọng khi bối cảnh thử thách thực tế và tài liệu nhiệm vụ hiện tại yêu cầu chúng. Hướng dẫn nhiệm vụ AWS WAF bao gồm các trường như awsKey, awsIv, awsContextawsChallengeJS cho các tình huống được tài liệu hóa.

Bắt đầu với yêu cầu phù hợp với trang của bạn và loại nhiệm vụ được hỗ trợ. Nếu dịch vụ báo cáo rằng bối cảnh cần thiết bị thiếu, kiểm tra thử thách hiện tại trên trang đã sở hữu và tuân theo tài liệu tương ứng. Không chèn giá trị mẫu vào mỗi trường tùy chọn chỉ để JSON trông đầy đủ.

Dữ liệu thử thách nên thuộc về lần thử hiện tại. Kết hợp URL trang từ một bài kiểm tra với tham số thử thách lưu từ trang hoặc thời điểm khác làm cho yêu cầu khó suy luận hơn. Một yêu cầu có thể hợp lệ về mặt cú pháp nhưng các đầu vào mô tả bối cảnh không tương thích.

Hướng dẫn CAPTCHA AWS WAF tổng quát giải thích gia đình nhiệm vụ. Ví dụ Go này thêm xử lý đặc trưng ngôn ngữ của bao bọc phản hồi và hành vi HTTP; nó không thay đổi thông tin thử thách cần thiết.

Ứng dụng chỉ nên sử dụng kết quả trong bối cảnh kiểm tra được ủy quyền mà nó được thu thập. AWS tài liệu các miền token và danh sách miền, ảnh hưởng đến nơi token có thể được chấp nhận.

Đối với kiểm tra tích hợp đã sở hữu, ghi lại máy chủ đích và lần thử liên quan đến kết quả. Cho lớp client hoặc trình duyệt cụ thể của ứng dụng quản lý phạm vi cookie mong muốn của nó. Không giả định rằng chuỗi trả về nên được sao chép vào mọi máy chủ mà bot hoặc đại lý truy cập.

Một kiểm tra chấp nhận hữu ích trả lời hai câu hỏi: nhà cung cấp có trả về hình dạng kết quả mong đợi không, và ứng dụng có chấp nhận thao tác tiếp theo không? Giữ lại cả hai kết quả. Nếu lần đầu thành công và lần sau thất bại, hãy điều tra miền, phiên bản, thời gian và phản hồi ứng dụng thay vì gán mọi từ chối là lỗi giao thông SDK.

SDK không triển khai chính sách truy cập AWS hoặc thay đổi web ACL của bạn. Cấu hình WAF của ứng dụng bạn vẫn kiểm soát xử lý yêu cầu.

Các bài kiểm tra cục bộ đã xác minh điều gì?

Ví dụ được chạy trên fixture HTTP cục bộ sử dụng SDK được gán phiên bản thực tế. Các bài kiểm tra kiểm tra bản đồ nhiệm vụ đầu ra, phản hồi sẵn sàng trực tiếp, phản hồi tạo rồi kiểm tra, lỗi nhà cung cấp, JSON không đúng định dạng, cookie thiếu và cài đặt thiếu.

Bề mặt kiểm tra này hẹp hơn so với giải pháp thực tế. Fixture cung cấp giá trị cookie riêng của nó, và không có trang AWS WAF thực tế nào chấp nhận nó. Các bài kiểm tra xác nhận rằng bao bọc Go tương tác với SDK đã cài đặt và xử lý các hình dạng phản hồi đó. Chúng không xác minh tính tương thích dịch vụ thực tế hoặc tỷ lệ giải thành công.

Một chi tiết nguồn đáng chú ý khi mở rộng client: SDK được gán phiên bản mã hóa thông tin xác thực bằng ClientKey, trong khi các ví dụ REST hiển thị clientKey. Fixture cục bộ ghi lại điều SDK thực sự gửi; nó không chứng minh cách gõ nào endpoint thực tế chấp nhận. Giữ sự khác biệt này rõ ràng khi chẩn đoán yêu cầu thực tế, và tham khảo hỗ trợ thượng nguồn trước khi thay đổi nội bộ SDK.

Đối với kiểm tra thực tế đầu tiên, sử dụng một trang đã sở hữu đại diện duy nhất, khóa giải hợp lệ và cài đặt proxy được tài liệu hóa. Xác minh cookie trả về và kết quả ứng dụng cuối cùng. Thử CapSolver cho kiểm tra cụ thể này trước khi mở rộng tích hợp sang các trang khác.

FAQ

Câu hỏi: Đường dẫn nhập Go đúng là gì?

Sử dụng github.com/capsolver/capsolver-go. Ví dụ này gán nó với tên gọi địa phương capsolver_go và gán phiên bản phụ thuộc được hiển thị trong lệnh cài đặt.

Câu hỏi: Phương thức Solve có trả về cookie AWS WAF trực tiếp không?

Không. Nó trả về bao bọc phản hồi. Sau khi kiểm tra lỗi, trạng thái phản hồi và giải pháp, truy cập cookie thông qua result.Solution.Cookie.

Câu hỏi: Tại sao phải thiết lập host API một cách rõ ràng?

SDK được gán phiên bản có host dự phòng HTTP. Ví dụ chọn điểm cuối API HTTPS trước khi gửi thông tin xác thực. Kiểm tra hành vi này lại khi thay đổi phiên bản phụ thuộc.

Câu hỏi: Thời gian chờ HTTP có phải là thời hạn cho toàn bộ giải không?

Không. SDK có thể gửi nhiều yêu cầu khi lấy kết quả. Thời gian chờ mỗi yêu cầu không áp đặt giới hạn tương tự cho toàn bộ thao tác hoặc thiết lập hủy bỏ từ xa.

Câu hỏi: Bài viết này có được kiểm tra trên trang AWS WAF thực tế không?

Không. Mã Go được thực thi trên fixture HTTP cục bộ với SDK thực tế. Một khóa giải thực tế và trang kiểm tra AWS WAF đã sở hữu vẫn cần thiết để xác minh hành vi dịch vụ và chấp nhận ứng dụng.

Tuyên bố Tuân thủ: Thông tin được cung cấp trên blog này chỉ mang tính chất tham khảo. CapSolver cam kết tuân thủ tất cả các luật và quy định hiện hành. Việc sử dụng mạng lưới CapSolver cho các hoạt động bất hợp pháp, gian lận hoặc lạm dụng là hoàn toàn bị cấm và sẽ bị điều tra. Các giải pháp giải captcha của chúng tôi nâng cao trải nghiệm người dùng trong khi đảm bảo tuân thủ 100% trong việc giúp giải quyết các khó khăn về captcha trong quá trình thu thập dữ liệu công khai. Chúng tôi khuyến khích việc sử dụng dịch vụ của chúng tôi một cách có trách nhiệm. Để biết thêm thông tin, vui lòng truy cập Điều khoản Dịch vụ và Chính sách Quyền riêng tư.

Thêm

Cách giải CAPTCHA AWS WAF bằng Go với SDK chính thức
Làm thế nào để giải quyết CAPTCHA AWS WAF bằng Go với SDK chính thức

Sử dụng SDK Go chính thức cho một nhiệm vụ CAPTCHA của AWS WAF, thiết lập HTTPS rõ ràng, cung cấp các tham số đã được tài liệu hóa và kiểm tra cookie được trả về trước khi tiếp tục.

AWS WAF
Logo of CapSolver

Anh Tuan

17-Sep-2026

Tác nhân LangChain định tuyến quy trình thách thức AWS WAF được ủy quyền thông qua cổng chính sách và công cụ CapSolver
Cách giải quyết AWS WAF trong LangChain với CapSolver

Xây dựng một quy trình AWS WAF LangChain được ủy quyền với công cụ CapSolver, phát hiện phản hồi, cửa soát chính sách, xử lý phiên, thử lại và xác minh.

AWS WAF
Logo of CapSolver

Anh Tuan

23-Jul-2026

Tự động giải AWS WAF CAPTCHA
Giải quyết tự động CAPTCHA của AWS WAF bằng Trình duyệt hoặc Tích hợp API

Học cách tự động giải CAPTCHA AWS WAF bằng cách sử dụng tiện ích mở rộng trình duyệt và tích hợp API. Hướng dẫn này bao gồm nhận dạng hình ảnh, thách thức dựa trên token và giải pháp của CapSolver để tự động hóa mượt mà và quét web.

AWS WAF
Logo of CapSolver

Anh Tuan

21-Apr-2026

Cách giải quyết CAPTCHA của Amazon AWS WAF trong Tự động hóa trình duyệt
Cách giải quyết CAPTCHA WAF của Amazon AWS trong Tự động hóa trình duyệt

Nâng cao kỹ năng giải quyết các thách thức CAPTCHA của Amazon AWS WAF trong tự động hóa trình duyệt với các chiến lược chuyên gia. Học cách tích hợp CapSolver để có các quy trình tự động hóa liền mạch và hiệu quả. Hướng dẫn này bao gồm các giải pháp dựa trên token và phân loại.

AWS WAF
Logo of CapSolver

Aloísio Vítor

24-Mar-2026

Cách giải Captcha / Thách thức của AWS bằng PHP
Cách giải AWS Captcha / Thách thức bằng PHP: Hướng dẫn toàn diện

Một hướng dẫn chi tiết bằng PHP để giải quyết CAPTCHA và thách thức của AWS WAF cho trích xuất dữ liệu và tự động hóa đáng tin cậy

AWS WAF
Logo of CapSolver

Anh Tuan

10-Dec-2025

Cách giải quyết bài kiểm tra Captcha / Thách thức của AWS bằng Python
Cách giải Captcha / Thách thức AWS bằng Python

Một hướng dẫn thực tế về việc xử lý các thách thức của AWS WAF bằng Python và CapSolver, cho phép truy cập mượt mà hơn vào các trang web được bảo vệ

AWS WAF
Logo of CapSolver

Anh Tuan

04-Dec-2025