
Anh Tuan
Data Science Expert
Đã xuất bản Sep 17, 2026
Đã cập nhật Sep 17, 2026 · đọc tối thiểu

AntiAwsWafTask và trả về kết quả CAPTCHA của AWS WAF.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.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.
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à:
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.
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.
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.mod và go.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ế.
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, proxy và ApiKey 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ó.
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.
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
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ộ:
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 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, awsContext và awsChallengeJS 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.
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.
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.

Anh Tuan
Data Science Expert
Turning task outcomes into actionable insights.
GIỚI THIỆU TÁC GIẢ
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.

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.
