
Lucas Mitchell
Automation Engineer

Agen browser AI harus memilih formulir yang diinginkan terlebih dahulu, mengidentifikasi widget CAPTCHA saat ini, dan mempertahankan asosiasi ini selama penyelesaian dan verifikasi aplikasi.
Bayangkan portal dukungan yang dikelola sendiri dengan dua formulir di halaman yang sama: permintaan dukungan dan umpan balik produk opsional. Seorang agen QA yang diizinkan sedang menguji permintaan dukungan. Menyelesaikan CAPTCHA umpan balik tidak akan memenuhi tugas, meskipun kedua formulir menggunakan penyedia yang sama dan terlihat mirip.
Sebuah solver CAPTCHA seperti CapSolver [https://www.capsolver.com/?utm_source=offcial&utm_medium=blog&utm_campaign=multiple-captcha-widgets-ai-browser-agents] harus ditempatkan setelah agen telah menentukan tantangan yang didukung yang dibutuhkan formulir yang diinginkan. Solver memberikan jawaban untuk tugas CAPTCHA yang dipilih; integrasi aplikasi tetap bertanggung jawab untuk mengarahkan jawaban tersebut secara benar.
Ini adalah panduan alur kerja dan desain QA untuk halaman yang dimiliki tim Anda atau diizinkan untuk diuji. Menjelaskan catatan, batas tahap, dan pemeriksaan yang diperlukan untuk widget banyak. Tidak menyatakan bahwa menyediakan integrasi SDK yang sudah diuji untuk halaman arbitrer.
Alur kerja yang andal memerlukan skop tugas yang jelas, pemetaan formulir ke widget yang dimiliki, dan cara untuk memeriksa hasil verifikasi aplikasi.
Mulai dengan halaman uji yang memiliki variasi tata letak yang sebenarnya yang didukung aplikasi Anda. Catat formulir yang diinginkan dan operasi yang diizinkan. Agen tidak boleh mengasumsikan bahwa setiap tombol kirim yang terlihat merupakan bagian dari tugasnya.
Pemilik halaman harus mengekspos identifikasi formulir yang stabil dan mempertahankan handle widget yang dibuat oleh integrasi publik penyedia. Untuk reCAPTCHA, handle ini merupakan bagian dari siklus hidup sisi klien. Mereka berbeda dari peran umum layanan dalam memeriksa interaksi otomatis.
Anda juga memerlukan tugas solver yang didukung, kredensial yang disimpan di luar konten halaman, kebijakan menunggu yang terbatas, dan backend hasil yang dapat diamati oleh harness QA. Jika aplikasi Anda menggunakan format CAPTCHA yang tidak didukung oleh jalur solver yang dipilih, berhenti di batas ini alih-alih menebak tugas alternatif.
Lebih baik menggunakan fasilitas pengujian yang dikendalikan pemilik untuk logika formulir biasa. Di mana pengujian yang diizinkan secara khusus mengevaluasi jalur solver nyata, label pengujian tersebut secara terpisah agar hasil CAPTCHA yang disimulasikan tidak disalahartikan sebagai verifikasi layanan end-to-end.
Tahap pertama mengubah tindakan yang diminta agen menjadi asosiasi formulir dan widget yang jelas.
Inputnya adalah operasi yang diizinkan, seperti mengirimkan permintaan dukungan sintetis di portal staging. Operasi ini mengidentifikasi formulir dukungan melalui identifikasi stabil aplikasi dan memperoleh referensi widget yang dipertahankan oleh komponen tersebut. Outputnya adalah referensi formulir ditambah instance widget saat ini, bukan hanya "CAPTCHA ada."
Dokumentasi tampilan reCAPTCHA v2 Google menunjukkan rendering eksplisit dan banyak widget. Rendering mengembalikan ID widget; metode seperti getResponse dan reset menerima ID widget, dan mengabaikannya menggunakan widget pertama secara default. Default ini bisa salah untuk halaman yang tindakan yang diinginkan termasuk formulir lain.
Panduan rendering sisi klien Turnstile Cloudflare juga menjelaskan rendering widget eksplisit dan manajemen siklus hidup. Gunakan API penyedia yang sesuai dan handle yang disimpan alih-alih mentransfer asumsi metode antar penyedia.
Jika lebih dari satu widget terpeta ke formulir, atau pemetaannya hilang, tahap ini harus gagal dengan diagnostik yang dapat tindak lanjuti. Urutan DOM bukanlah bukti yang cukup untuk kepemilikan. Simpan referensi formulir, generasi halaman, dan hasil pemetaan untuk pemeriksaan; jangan simpan nilai token dalam catatan diagnostik.
Tahap kedua memberikan setiap identifikasi satu makna sehingga pekerjaan asinkron tidak dapat mengacaukan komponen halaman dengan tugas solver jarak jauh.
| Identifikasi | Yang diwakili | Yang tidak boleh digantikan |
|---|---|---|
| Referensi formulir | Operasi aplikasi yang dimiliki | ID tugas penyedia |
| ID kontainer DOM | Elemen halaman yang berisi widget | Handle widget penyedia saat runtime |
| ID widget penyedia | Instance widget yang dirender | Kunci situs CAPTCHA |
| Kunci situs | Konfigurasi integrasi penyedia | Identitas unik dari usaha formulir |
| ID tugas solver | Permintaan penyelesaian jarak jauh, ketika dikembalikan | Elemen browser atau identifikasi formulir |
| Referensi usaha aplikasi | Satu eksekusi dari operasi yang diinginkan | Setiap retry berikutnya di halaman yang sama |
Label ini membentuk catatan aplikasi yang direkomendasikan, bukan skema respons penyedia. Pertahankan nilai dan tipe asli setiap handle alih-alih menyederhanakan setiap identifikasi menjadi string yang bisa dipertukarkan.
Dua widget dapat berbagi konfigurasi dan tetap termasuk dalam formulir yang berbeda. Dengan demikian, memilih hanya berdasarkan kunci situs tidak cukup ketika halaman yang dimiliki secara sengaja menggunakan konfigurasi tersebut. Aplikasi membutuhkan asosiasi formulir yang telah ditetapkan di tahap sebelumnya.
Lampirkan generasi halaman atau komponen ke catatan. Sebuah dialog dapat ditutup dan dibuka kembali dengan instance widget baru sambil mempertahankan judul yang terlihat. Generasi memungkinkan tahap berikutnya mendeteksi bahwa formulir yang terlihat mirip bukan lagi instance yang memulai usaha penyelesaian.
Tahap ketiga mengubah asosiasi widget yang dipilih menjadi informasi solver yang didukung sambil mempertahankan koneksi ke formulir yang diinginkan.
Referensi SDK Inti CapSolver membedakan beberapa operasi: detect(page) mengembalikan jenis CAPTCHA, get_captcha_info(page) mengembalikan catatan informasi CAPTCHA, dan solve(info) mengembalikan solusi. Cakupan mode token yang terdokumentasi mencakup reCAPTCHA v2, reCAPTCHA v3, dan Turnstile; tidak mencakup mengklik grid gambar atau menarik slider.
Referensi ini juga menjelaskan metadata pengisian ulang browser seperti container_id, callback, dan binded_button_id. Pertimbangkan ini sebagai bukti untuk diselaraskan dengan pemetaan formulir yang dimiliki. Jenis yang dideteksi saja bukanlah jumlah instance widget, dan entri pertama daftar bukanlah bukti bahwa itu milik tugas agen.
Periksa informasi yang tersedia di halaman Anda sendiri, termasuk frame dan perilaku renderingnya. Jika detektor tidak mengekspos cukup bukti untuk memilih satu widget yang diinginkan, hentikan untuk perbaikan integrasi. Jangan secara diam-diam memperluas tugas ke semua tantangan di halaman.
Output tahap ini adalah satu catatan informasi yang dipilih ditambah asosiasi aplikasi yang menjelaskan mengapa dipilih. Batas kegagalannya adalah ambiguitas atau cakupan yang tidak didukung. Bukti yang berguna termasuk jenis penyedia yang dipilih dan keputusan pemetaan, dengan rahasia dan token solusi dihilangkan.
Klaim Kode Bonus CapSolver Anda
Tingkatkan anggaran otomasi Anda secara instan!
Gunakan kode bonus CAP26 saat menambahkan dana akun CapSolver Anda untuk mendapatkan tambahan 5% bonus pada setiap penambahan dana — tanpa batas.
Klaim sekarang di Dashboard CapSolver Anda
Tahap keempat menerima hasil solver hanya saat asosiasi formulir dan widget yang dipilih tetap terkini.
Sebelum meminta solusi, tandai usaha sebagai menunggu pada informasi CAPTCHA yang dipilih. Ketika operasi asinkron kembali, periksa kembali generasi halaman dan asosiasi widget. Jika dialog dukungan ditutup atau CAPTCHA-nya diperbarui, hasil asli tidak boleh dialihkan ke formulir umpan balik.
CapSolver mendokumentasikan solve_on_page sebagai pipeline tingkat halaman yang mengembalikan hasil yang mencakup informasi, solusi, status pengisian, dan kesalahan. Opsi yang tercantum tidak mencakup pemilih widget. Jangan menggambarkan metode ini sebagai operasi berbasis formulir kecuali integrasi yang diverifikasi sendiri menetapkan skop yang diperlukan. Tahap solve(info) manual mengembalikan solusi; pengiriman hasil sendiri tidak menetapkan bahwa formulir yang benar telah diisi.
Di aplikasi yang dimiliki, arahkan jawaban melalui integrasi komponen yang sudah memiliki widget. Pertahankan langkah khusus aplikasi ini terpisah dari deteksi penyedia. Variabel "token terbaru" global membuat sulit menjelaskan ke formulir mana hasil tersebut miliknya dan dapat menyembunyikan kesalahan lintas formulir.
Output tahap ini adalah disposisi: diberikan ke komponen yang diinginkan saat ini, tidak lagi diperlukan, atau ditolak karena asosiasi berubah. Catat disposisi mana yang terjadi sebelum bergerak ke pengiriman. Kesalahan solver harus meninggalkan widget umpan balik yang tidak terkait tidak tersentuh.
Tahap terakhir memverifikasi permintaan dukungan itu sendiri dan mencatat cukup konteks untuk membedakan kegagalan solver, pengiriman, dan aplikasi.
Panduan verifikasi respons server Google memerlukan verifikasi token respons dan menyatakan bahwa token hanya digunakan sekali dan habis masa berlakunya setelah dua menit. Aturan ini tidak boleh disalahartikan dengan jendela pemulihan hasil solver yang terpisah. Aplikasi yang dimiliki harus melakukan verifikasi backend spesifik penyedia.
Harnes QA kemudian harus memeriksa sinyal penyelesaian aplikasi yang sebenarnya. Untuk portal dukungan, itu mungkin referensi permintaan uji yang dikembalikan oleh backend yang dimiliki. Hanya widget hijau atau bidang respons yang terisi tidak dapat menegaskan bahwa permintaan dukungan yang benar diterima.
Simpan hasil yang ringkas yang mencakup referensi kasus uji, referensi formulir, generasi widget, disposisi solver, disposisi verifikasi backend, dan hasil operasi yang diinginkan. Ini adalah bidang aplikasi yang direkomendasikan. Hindari menyimpan token solusi mentah, konten pesan dukungan nyata, atau kredensial dalam log rutin.
Ketika uji gagal, pertahankan tahap terakhir yang berhasil. "Pemetaan widget hilang," "solver mengembalikan kesalahan," dan "aplikasi menolak pengiriman" memerlukan perbaikan berbeda. Riwayat tahap ini membuat investigasi lebih berguna daripada satu kesalahan CAPTCHA yang tidak terbedakan.
Matriks uji yang berguna mengubah urutan widget dan siklus hidup sambil menjaga operasi formulir yang diinginkan tetap konstan.
| Kasus uji halaman yang dimiliki | Perilaku alur kerja yang diharapkan |
|---|---|
| Widget umpan balik muncul sebelum widget dukungan | Agen tetap memilih widget formulir dukungan |
| Kedua formulir berbagi kunci situs | Pemetaan formulir menentukan pemilihan |
| Dialog dukungan ditutup selama penyelesaian | Hasil dicatat sebagai tidak lagi diperlukan |
| Widget dukungan diperbarui selama penyelesaian | Hasil lama tidak dialihkan ke pengganti |
| Widget yang tidak terkait melaporkan kesalahan | Agen tidak beralih ke operasi yang diinginkan |
| Formulir yang diinginkan tidak memiliki pemetaan widget unik | Alur kerja berhenti sebelum permintaan solver |
| Backend menolak respons yang dikirimkan | Uji melaporkan kegagalan verifikasi, bukan keberhasilan |
Jalankan matriks ini dengan fixture yang dikendalikan terlebih dahulu, lalu uji integrasi nyata yang didukung secara terpisah. Uji fixture menetapkan perilaku routing lokal; mereka tidak membuktikan bahwa layanan solver atau verifikasi penyedia eksternal berfungsi.
Masalah ini berbeda dari menjalankan beberapa tugas solver yang independen secara bersamaan. Panduan yang ada tentang menangani tantangan reCAPTCHA yang bersamaan menutupi pemrosesan tugas bersamaan. Di halaman dengan beberapa widget, persyaratan yang lebih sulit adalah mempertahankan hubungan antara satu tindakan yang diinginkan dan widget spesifiknya.
Susun alur kerja dalam urutan ini: pilih formulir, pertahankan asosiasi widgetnya, pilih informasi solver yang didukung, arahkan hasilnya, dan verifikasi hasil aplikasi. Tambahkan CapSolver di tahap solver setelah pemeriksaan kepemilikan jelas dan dapat diuji.
P: Apakah mendeteksi reCAPTCHA memberi tahu agen ke formulir mana harus mengirimkan?
Deteksi tidak menetapkan formulir yang diinginkan. Agen membutuhkan skop tugas aplikasi dan pemetaan formulir ke widget yang jelas sebelum meminta solusi atau mengirimkan apa pun.
P: Dapatkah dua widget di halaman yang sama berbagi kunci situs?
Halaman dapat mereutilisasi konfigurasi integrasi di antara widget, jadi kunci situs tidak boleh dianggap sebagai identifikasi unik usaha formulir. Gunakan instance widget dan pemetaan formulir yang dimiliki bersama.
P: Dapatkah saya memilih catatan informasi CAPTCHA pertama?
Pilih catatan pertama hanya jika pemetaan halaman yang dimiliki memverifikasi bahwa itu adalah widget yang diinginkan. Posisi dalam daftar tidak menetapkan kepemilikan, dan perubahan halaman dapat mengubah komponen mana yang muncul terlebih dahulu.
P: Haruskah agen AI menyelesaikan semua CAPTCHA yang ditemukan?
Agen harus menyelesaikan hanya tantangan yang didukung yang diperlukan oleh operasi yang diizinkan. Widget yang tidak terkait tetap di luar tugas ini, bahkan ketika mereka terlihat di halaman yang sama.
P: Apa yang harus terjadi ketika halaman berubah saat menyelesaikan?
Alur kerja harus memeriksa kembali asosiasi halaman dan widget sebelum menggunakan hasilnya. Jika komponen asli diganti atau usaha berakhir, catat hasilnya sebagai tidak digunakan dan hentikan usaha tersebut alih-alih mengarahkannya ke tempat lain.
Pilih antara agen AI, skrip, dan otomatisasi web hibrid berdasarkan ketidakpastian tugas, kemampuan pengujian, biaya, dan kontrol yang diperlukan untuk eksekusi yang andal.

Pasang Server MCP CapSolver dari PyPI dan berikan agen AI yang kompatibel lima alat untuk penanganan CAPTCHA yang diizinkan melalui Protokol Konteks Model.
