Scarnox · Blog

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

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:

  1. Apakah is_invisible sudah diatur ke true?
  2. Apakah situs memanggil callback, dan apakah itu dilakukan sebelum form dikirim?
  3. Apakah site_url adalah halaman tempat widget tak terlihat itu berjalan?
  4. 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:

  1. Pastikan solve mengembalikan token dengan is_invisible diatur ke true, menggunakan smoke test dari panduan uji coba gratis.
  2. Picu callback situs sendiri di console browser dengan token tersebut, dan perhatikan apakah form berlanjut.
  3. Kirim form dari skrip Anda, lalu periksa halaman berikutnya.
  4. 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:

  1. Pengunjung, atau skrip Anda, mengisi form.
  2. Skrip Anda membaca sitekey dan URL halaman dari halaman.
  3. Skrip Anda memanggil endpoint solve dengan is_invisible diatur ke true dan menunggu token.
  4. Skrip Anda menuliskan token ke field respons dan memanggil callback situs.
  5. 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:

Hanya setelah pemeriksaan ini, Anda beralih ke pertanyaan tentang proxy. Sebagian besar penolakan berasal dari callback atau sesi, bukan dari IP.

Langkah selanjutnya

Mulai dengan kredit uji coba gratis, tanpa kartu: buat akun dan uji sitekey tak terlihat di halaman milik Anda sendiri.