Memecahkan PopularCaptcha tak terlihat: bedanya dan apa yang dikirim
PopularCaptcha tak terlihat tampak seperti tidak ada captcha sama sekali. Tidak ada kotak "Saya bukan robot". Situs memanggil PopularCaptcha dari JavaScript-nya sendiri, biasanya saat pengunjung menekan tombol kirim, dan hanya menampilkan tantangan jika ia ragu tentang pengunjung tersebut. Bagi skrip otomatisasi, widget ini lebih sulit dikenali, tetapi solve-nya tetap hanya satu request.
Scarnox memecahkan PopularCaptcha saat ini, termasuk varian yang tak terlihat. Anda mengatur satu flag, is_invisible, dan mengirim request yang sama seperti untuk widget yang terlihat. Jenis captcha lain akan segera hadir.
Cara mengetahui bahwa captcha itu tak terlihat
- Widget memiliki
data-size="invisible". - Situs memanggil fungsi
execute()dari widget di dalam kodenya sendiri. - Ada sitekey di halaman, tetapi tidak ada kotak centang yang terlihat di mana pun.
Konfigurasi pada sitekey yang menentukannya, bukan tampilan halaman. Jika Anda ragu, temukan sitekey dan periksa opsi widget di JavaScript halaman.
Apa yang dikirim
Gunakan endpoint dan jenis tugas yang sama, dan tambahkan is_invisible dengan nilai true:
{
"captcha_type": "PopularCaptchaTaskProxyless",
"site_key": "10000000-ffff-ffff-ffff-000000000001",
"site_url": "https://example.com/login",
"is_invisible": true
}
Kirim dengan kunci Anda di header Authorization: Bearer, seperti pada setiap contoh lain. Panggilan ini akan menunggu sampai token siap, tanpa polling. Gunakan timeout sekitar 185 detik.
Mengembalikan token
Integrasi tak terlihat hampir selalu menggunakan callback, bukan field form. Situs memberikan nama fungsi ke widget, baik lewat atribut data-callback maupun melalui opsi yang diberikan ke render(). Panggil fungsi itu dengan token, dan kode situs akan berlanjut seolah-olah pengunjung sudah melewati tantangan:
await page.evaluate((t) => {
document.querySelectorAll('[name="h-captcha-response"]').forEach((el) => { el.value = t; });
const cb = document.querySelector("[data-sitekey]")?.dataset.callback;
if (cb && typeof window[cb] === "function") window[cb](t);
}, token);
Mengisi field tersembunyi juga tidak masalah, dan ini membantu untuk situs yang membaca field tersebut saat pengiriman.
Waktu sangat penting
Dengan widget tak terlihat, situs yang memutuskan kapan tantangan dijalankan, dan biasanya itu adalah saat pengunjung mengirim form. Jadi lakukan solve tepat pada saat itu, bukan lebih awal. Pola termudah adalah memicu solve tepat sebelum skrip Anda menekan tombol, lalu memanggil callback dan mengirim form.
Token kedaluwarsa dalam sekitar dua menit. Token yang diambil saat halaman dimuat lalu dipakai satu menit kemudian kemungkinan besar akan ditolak.
Kesalahan umum
Mengirim sitekey tak terlihat sebagai tugas biasa yang terlihat bisa menghasilkan token yang ditolak situs. Jika API mengembalikan token tetapi situs menolaknya, periksa hal-hal ini secara berurutan:
- Apakah
is_invisiblesudah diatur ketrue? - Apakah situs memanggil callback, dan apakah itu dilakukan sebelum form dikirim?
- Apakah
site_urladalah halaman tempat widget tak terlihat itu berjalan? - Jika situs masih menolak token, masalahnya mungkin terkait dengan IP yang melakukan solve. Bandingkan dengan solve dengan proxy versus proxyless.
Menguji alur tak terlihat dengan aman
Widget tak terlihat sulit diuji secara manual, karena tantangannya hanya berjalan saat pengiriman dan sebagian besar waktu lolos tanpa menampilkan apa pun. Uji dengan urutan ini:
- Pastikan solve mengembalikan token dengan
is_invisiblediatur ketrue, menggunakan smoke test dari panduan uji coba gratis. - Picu callback situs sendiri di console browser dengan token tersebut, dan perhatikan apakah form berlanjut.
- Kirim form dari skrip Anda, lalu periksa halaman berikutnya.
- Ulangi dari jaringan kedua, jika memungkinkan, untuk memastikan token tidak terikat pada IP yang melakukan solve.
Jalankan pengujian pada form milik Anda sendiri, atau salinan staging situs yang Anda boleh uji. Jangan pernah menjalankan alur tak terlihat pada akun aktif yang bukan milik Anda.
Urutan kejadian dalam satu pengiriman tak terlihat
Integrasi yang berfungsi mengikuti urutan ini:
- Pengunjung, atau skrip Anda, mengisi form.
- Skrip Anda membaca sitekey dan URL halaman dari halaman.
- Skrip Anda memanggil endpoint solve dengan
is_invisiblediatur ketruedan menunggu token. - Skrip Anda menuliskan token ke field respons dan memanggil callback situs.
- Kode situs mengirim form dengan token yang disertakan.
Jika langkah 3 terjadi jauh lebih awal daripada langkah 5, token mungkin sudah kedaluwarsa sebelum form dikirim. Jaga agar jedanya sependek mungkin.
Ketika situs menolak token tak terlihat
Penolakan tidak selalu disebabkan oleh token. Periksa hal-hal ini sebelum Anda mengubah request solve:
- Callback dijalankan sebelum form dikirim, bukan sesudahnya.
- Form membaca token dari field tempat skrip Anda menuliskannya. Beberapa situs menggunakan field berbeda untuk widget tak terlihat.
- Request yang membawa token berasal dari sesi yang sama dengan yang memuat halaman. Cookie dari sesi lain tidak cocok.
- Halaman tidak dimuat ulang antara solve dan pengiriman, karena itu akan membuang token.
Hanya setelah pemeriksaan ini, Anda beralih ke pertanyaan tentang proxy. Sebagian besar penolakan berasal dari callback atau sesi, bukan dari IP.
Langkah selanjutnya
- Cara memecahkan PopularCaptcha dengan Python
- Memecahkan PopularCaptcha di Playwright dan Puppeteer
- Retry dan penanganan error yang tahan di produksi
- Uji coba gratis solver captcha
Mulai dengan kredit uji coba gratis, tanpa kartu: buat akun dan uji sitekey tak terlihat di halaman milik Anda sendiri.