
Emma Foster
Machine Learning Engineer
Diterbitkan Sep 17, 2026
Diperbarui Sep 17, 2026 ยท min baca

AntiAwsWafTask dan mengembalikan hasil CAPTCHA AWS WAF.result.Solution.Cookie setelah memeriksa kesalahan, kesiapan, dan solusi yang tidak kosong.Integrasi CAPTCHA AWS WAF dalam Go memiliki dua tanggung jawab terpisah: meminta solusi dari penyelesaian yang didokumentasikan, lalu menggunakan hasil tersebut secara benar dalam aplikasi yang diuji. SDK resmi menangani pertukaran API, tetapi tidak dapat memutuskan apakah aplikasi Anda menerima upaya yang selesai.
Tutorial ini menggunakan CapSolver untuk halaman uji AWS WAF yang dimiliki. Fokusnya pada instalasi modul Go, konstruksi tugas, penanganan kuki yang dikembalikan, dan memahami perilaku transport SDK. Panduan ini tidak mengasumsikan bahwa token yang diterima di satu domain berlaku untuk domain lain.
SDK Go mengemas pembuatan tugas dan pengambilan hasil di balik metode Solve-nya. Perpustakaan API mengemas pemanggilan ini menjadi metode tingkat bahasa, tetapi Anda tetap memerlukan parameter tugas yang benar dan logika aplikasi.
Dokumentasi tugas AWS WAF resmi menjelaskan AntiAwsWafTask dan hasil solution.cookie-nya. SDK Go mengekspos respons sebagai CapSolverResponse yang berisi pointer Solution. Perbedaan ini penting: Solve tidak mengembalikan string kuki secara langsung.
Untuk tutorial ini, urutan yang diinginkan adalah:
AWS menggambarkan tokennya sebagai bagian dari mitigasi ancaman cerdas AWS WAF. Anggap hasilnya sebagai nilai yang terkait dengan upaya tertentu, bukan sebagai izin permanen untuk mengakses aplikasi.
Buat modul Go kecil dan tetapkan versi SDK yang digunakan dalam contoh ini. Paket ini dipublikasikan di repo Go CapSolver resmi.
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
Contoh ini dikompilasi dan uji lokal dijalankan dengan Go 1.27.1. Versi dependensi panjang adalah versi pseudo Go yang mengidentifikasi komit tertentu. Menetapkan versi ini membuat sumber SDK dapat direproduksi; bukan rekomendasi untuk mengabaikan perbaikan di masa depan.
Simpan file go.mod dan go.sum yang dihasilkan bersama contoh. Dokumentasi standar manajemen dependensi Go menjelaskan file-file ini dan pemilihan versi. Saat memperbarui SDK, jalankan kembali uji yang menutupi bidang permintaan dan penanganan respons.
Instalasi ini mempersiapkan pustaka klien. Ini tidak menyediakan halaman uji AWS WAF, membeli kredit penyelesaian, atau mengonfigurasi proxy. Semua ini adalah prasyarat terpisah untuk solusi nyata.
Contoh ini membaca URL halaman yang dimiliki, string proxy, dan kunci API penyelesaian dari variabel lingkungan.
| Variabel | Nilai yang disediakan |
|---|---|
OWNED_WAF_URL |
URL halaman AWS WAF yang Anda miliki atau diizinkan untuk diuji |
CAPSOLVER_PROXY |
Proxy yang diformat sesuai dokumentasi tugas |
CAPSOLVER_API_KEY |
Kunci API penyelesaian untuk akun CapSolver Anda |
Nama variabel ini milik contoh; bukan bidang tugas API tambahan. Kode Go memetakan mereka ke websiteURL, proxy, dan ApiKey klien SDK.
Gunakan manajer rahasia biasa atau lingkungan pengembangan Anda untuk menyediakan kredensial. Jangan tempel kunci nyata ke sumber yang dikirim, dan jangan substitusi kredensial manajemen konten untuk kunci penyelesaian. Kredensial proxy harus diperlakukan dengan perhatian yang sama.
Pilih URL yang spesifik yang menghasilkan tantangan. Halaman beranda umum mungkin tidak menyediakan konteks yang diperlukan untuk uji rute yang berbeda. Pertahankan sesi aplikasi dan konfigurasi jaringan yang konsisten dengan desain uji, bukan menganggap hasil penyelesaian sebagai terpisah dari permintaan yang membutuhkannya.
Simpan kode berikut sebagai main.go. Peta tugas dan panggilan Solve-nya mengikuti contoh SDK dan tugas resmi. Pemeriksaan lingkungan, host HTTPS eksplisit, timeout, dan pemeriksaan kuki siap adalah penambahan untuk program kecil ini. Fixture HTTP lokal menguji SDK; solusi langsung memerlukan kunci penyelesaian Anda, proxy, dan halaman yang dimiliki, dan tidak dilakukan.
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("Status hasil AWS WAF:", result.Status)
// result.Solution.Cookie milik upaya uji yang diotorisasi ini.
}
Dalam sumber SDK yang ditetapkan, host default kembali ke URL HTTP. Penetapan eksplisit ke capsolver_go.ApiHost memilih https://api.capsolver.com sebelum permintaan membawa kredensial penyelesaian Anda.
SDK menggunakan klien HTTP default Go. Menetapkan http.DefaultClient.Timeout dengan demikian menerapkan waktu habis permintaan untuk contoh ini. Hal ini juga mengubah klien ini secara keseluruhan: jika Anda menyematkan SDK dalam aplikasi yang lebih besar, tinjau dampaknya pada pengguna lain dari klien default.
Nilai 20 detik adalah pengaturan contoh, bukan jaminan keberhasilan layanan atau tenggat waktu untuk seluruh tugas. SDK dapat membuat beberapa permintaan HTTP saat mengambil hasil. Setiap permintaan memiliki waktu habis, tetapi tidak membuat seluruh panggilan Solve menjadi operasi 20 detik.
Dokumentasi Go net/http menjelaskan perilaku klien timeout. Wrapper tidak mengekspos parameter pembatalan berbasis konteks karena metode SDK yang ditunjukkan di sini tidak menerima satu.
Klaim Kode Bonus CapSolver Anda
Tingkatkan anggaran otomasi Anda secara instan!
Gunakan kode bonus CAP26 saat menambahkan saldo akun CapSolver Anda untuk mendapatkan tambahan 5% bonus pada setiap penyetoran โ tanpa batas.
Klaim sekarang di Dasbor CapSolver Anda
Jalankan program setelah menyediakan tiga pengaturan lingkungan. Perintah ini masih memerlukan validasi dengan halaman yang dimiliki; uji yang direkam menggunakan fixture HTTP lokal:
go run .
Ketika SDK mengembalikan respons siap dengan kuki yang tidak kosong, program mencetak status respons. Program sengaja tidak mencetak kuki itu sendiri. Nilai tersedia di result.Solution.Cookie untuk bagian uji yang dimiliki Anda yang melanjutkan alur aplikasi.
Ada tiga pemeriksaan berbeda dalam solveAWS. Kesalahan Go menghentikan pemanggilan. Respons yang hilang atau tidak siap gagal dalam pemeriksaan kesiapan wrapper. Solusi yang kosong atau kuki kosong gagal dalam pemeriksaan konten hasil. Ini mencegah kode pemanggil dari terus berjalan hanya karena pointer dikembalikan.
Pencetakan status bukanlah penegasan keberhasilan aplikasi. Tambahkan pemeriksaan akhir dalam pengujian Anda setelah menggunakan nilai yang dikembalikan dalam sesi yang tepat. Jika halaman masih menampilkan tantangan, pertahankan tahap yang diamati dan informasi kesalahan penyedia yang relevan, bukan menganggap status yang dicetak sebagai bukti bahwa halaman menerima upaya tersebut.
Contoh ini tidak mengimplementasikan jar kuki HTTP atau lapisan otomasi browser. Hal ini bergantung pada cara aplikasi Anda menciptakan dan mempertahankan sesi uji. Hindari menambahkan domain kuki yang ditebak atau header global yang menerapkan nilai ke permintaan yang tidak terkait.
Bidang opsional relevan ketika konteks tantangan yang sebenarnya dan dokumentasi tugas saat ini memerlukannya. Panduan tugas AWS WAF mencakup bidang seperti awsKey, awsIv, awsContext, dan awsChallengeJS untuk situasi yang didokumentasikan.
Mulailah dengan permintaan yang sesuai dengan halaman Anda dan jenis tugas yang didukung. Jika layanan melaporkan bahwa konteks yang diperlukan hilang, periksa tantangan saat ini di halaman yang dimiliki dan ikuti dokumentasi yang sesuai. Jangan masukkan nilai placeholder ke setiap bidang opsional hanya untuk membuat JSON terlihat lengkap.
Data tantangan harus milik upaya saat ini. Menggabungkan URL halaman dari satu uji dengan parameter tantangan yang disimpan dari halaman atau waktu yang berbeda membuat permintaan lebih sulit untuk dipahami. Permintaan dapat secara sintaksis valid sementara inputnya menggambarkan konteks yang tidak kompatibel.
Panduan CAPTCHA AWS WAF yang lebih luas menjelaskan keluarga tugas. Contoh Go ini menambahkan penanganan spesifik bahasa untuk envelope respons dan perilaku HTTP; tidak mengubah informasi tantangan yang diperlukan.
Aplikasi seharusnya hanya menggunakan hasil dalam konteks uji yang diotorisasi untuk mana hasil tersebut diperoleh. AWS mendokumentasikan domain token dan daftar domain, yang memengaruhi di mana token dapat diterima.
Untuk uji integrasi yang dimiliki, catat host target dan upaya yang terkait dengan hasil tersebut. Biarkan klien atau lapisan browser aplikasi yang spesifik mengelola domain kuki yang dimaksud. Jangan mengasumsikan bahwa string yang dikembalikan harus dicopy ke setiap host yang dikunjungi crawler atau agen.
Pemeriksaan penerimaan yang berguna menjawab dua pertanyaan: apakah penyedia mengembalikan bentuk hasil yang diharapkan, dan apakah aplikasi menerima operasi berikutnya? Pertahankan kedua hasil tersebut. Jika yang pertama berhasil dan yang kedua gagal, selidiki domain, sesi, waktu, dan respons aplikasi, bukan menandai setiap penolakan sebagai kegagalan transport SDK.
SDK tidak mengimplementasikan kebijakan akses AWS atau mengubah web ACL Anda. Konfigurasi WAF aplikasi Anda tetap mengontrol penanganan permintaan.
Contoh ini dijalankan terhadap fixture HTTP lokal menggunakan SDK yang ditetapkan. Uji memeriksa peta tugas keluaran, respons siap langsung, respons create-then-poll, kesalahan penyedia, JSON yang rusak, kuki yang hilang, dan pengaturan yang hilang.
Permukaan uji ini lebih sempit daripada solusi langsung. Fixture menyediakan nilai kuki sendiri, dan tidak ada halaman AWS WAF nyata yang menerimanya. Uji menetapkan bahwa wrapper Go berinteraksi dengan SDK yang terpasang dan menangani bentuk respons tersebut. Mereka tidak menetapkan kompatibilitas layanan langsung atau tingkat keberhasilan solusi.
Satu detail sumber layak diperhatikan saat memperluas klien: SDK yang ditetapkan mengserialisasi kredensialnya menggunakan ClientKey, sementara contoh REST menunjukkan clientKey. Fixture lokal mencatat apa yang sebenarnya dikirim SDK; tidak membuktikan casing apa yang diterima endpoint langsung. Pertahankan perbedaan ini saat mendiagnosis permintaan nyata, dan konsultasikan dukungan upstream sebelum mengubah inti SDK.
Untuk pemeriksaan langsung pertama, gunakan satu halaman yang dimiliki yang representatif, kunci penyelesaian yang valid, dan pengaturan proxy yang didokumentasikan. Verifikasi kuki yang dikembalikan dan hasil akhir aplikasi. Coba CapSolver untuk pemeriksaan tugas khusus sebelum memperluas integrasi ke halaman tambahan.
P: Apa jalur impor Go yang benar?
Gunakan github.com/capsolver/capsolver-go. Contoh ini menetapkan alias lokal capsolver_go dan menetapkan versi dependensi yang ditunjukkan dalam perintah instalasi.
P: Apakah Solve mengembalikan kuki AWS WAF secara langsung?
Tidak. Ia mengembalikan envelope respons. Setelah memeriksa kesalahan, status respons, dan solusi, akses kuki melalui result.Solution.Cookie.
P: Mengapa host API harus diatur secara eksplisit?
Sumber SDK yang ditetapkan memiliki host fallback HTTP. Contoh ini memilih endpoint API HTTPS sebelum mengirim kredensial. Periksa perilaku ini kembali saat mengubah versi dependensi.
P: Apakah timeout HTTP merupakan tenggat waktu untuk seluruh solusi?
Tidak. SDK dapat mengeluarkan beberapa permintaan saat mengambil hasil. Timeout per permintaan tidak menerapkan batas yang sama pada seluruh operasi atau menetapkan pembatalan jarak jauh.
P: Apakah ini diuji terhadap halaman AWS WAF langsung?
Tidak. Kode Go dijalankan terhadap fixture HTTP lokal dengan SDK yang sebenarnya. Kunci penyelesaian langsung dan halaman uji AWS WAF yang dimiliki masih diperlukan untuk memvalidasi perilaku layanan dan penerimaan aplikasi.

Emma Foster
Machine Learning Engineer
Where machine learning meets practical AI tooling.
TENTANG PENULIS
Bangun alur kerja AWS WAF LangChain yang terotorisasi dengan alat CapSolver, deteksi respons, penghalang kebijakan, penanganan sesi, pengulangan, dan verifikasi.

Selesaikan CAPTCHA AWS WAF dalam pengambilan data web dengan CapSolver. Tingkatkan efisiensi, selesaikan tantangan, dan pastikan data mengalir secara mulus.
