Scarnox · Blog

Görünmez PopularCaptcha çözme: nasıl farklı ve ne gönderilmeli

Görünmez PopularCaptcha hiç captcha yokmuş gibi görünür. "Ben insanım" kutusu yoktur. Site PopularCaptcha'yı kendi JavaScript'inden çağırır, genellikle ziyaretçi gönder düğmesine bastığında, ve ziyaretçi hakkında emin olmadığında yalnızca bir challenge gösterir. Bir otomasyon betiği için widget'ı fark etmek daha zordur, ama çözüm yine tek bir istektir.

Scarnox bugün PopularCaptcha'yı çözer; görünmez varyant dahil. Tek bir bayrak ayarlarsınız, is_invisible, ve görünür bir widget için göndereceğiniz isteğin aynısını gönderirsiniz. Diğer captcha tipleri yakında geliyor.

Görünmez olduğunu nasıl anlarsınız?

Karar, sayfanın görünümüne değil sitekey üzerindeki yapılandırmaya bağlıdır. Emin değilseniz sitekey'i bulun ve sayfanın JavaScript'indeki widget seçeneklerini kontrol edin.

Ne göndermelisiniz?

Aynı endpoint'i ve aynı görev tipini kullanın, is_invisible alanını true olarak ekleyin:

{
  "captcha_type": "PopularCaptchaTaskProxyless",
  "site_key": "10000000-ffff-ffff-ffff-000000000001",
  "site_url": "https://example.com/login",
  "is_invisible": true
}

Anahtarınızı diğer tüm örneklerde olduğu gibi Authorization: Bearer başlığında gönderin. Çağrı token hazır olana kadar bloklanır, yoklama yapılmaz. Yaklaşık 185 saniyelik bir zaman aşımı kullanın.

Token'ı geri verme

Görünmez entegrasyonlar neredeyse her zaman bir form alanı yerine bir callback kullanır. Site, widget'a bir fonksiyon adı verir; ya data-callback özniteliğinde ya da render() içine verilen seçeneklerde. Bu fonksiyonu token ile çağırırsınız ve sitenin kendi kodu, ziyaretçi challenge'ı geçmiş gibi devam eder:

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);

Gizli alanı da ayarlamak zararsızdır ve alanı gönderimde okuyan siteleri de kapsar.

Zamanlama her zamankinden önemlidir

Görünmez bir widget'ta challenge'ı siteyi kararlaştırır ve bu genellikle ziyaretçinin gönder düğmesine bastığı andır. Bu yüzden çözümü daha önce değil, tam o anda yapın. En kolay kalıp, betiğinizde düğmeye basmadan hemen önce çözümü tetiklemek, sonra callback'i çağırıp göndermektir.

Token'lar yaklaşık iki dakika içinde sona erer. Sayfa yüklenirken alınan ve bir dakika sonra kullanılan bir token büyük olasılıkla reddedilir.

Yaygın hata

Görünmez bir sitekey'i normal, görünür bir görev gibi göndermek, sitenin reddettiği bir token üretebilir. API bir token döndürdüğü halde site onu reddediyorsa, şunları sırayla kontrol edin:

  1. is_invisible değeri true olarak ayarlı mı?
  2. Site callback'i çağırıyor mu ve bunu form gönderilmeden önce mi yapıyor?
  3. site_url, görünmez widget'ın çalıştığı sayfa mı?
  4. Site hâlâ token'ı reddediyorsa, sorun çözümü yapan IP ile bağlantılı olabilir. Proxy ile proxysiz çözme ile karşılaştırın.

Görünmez akışı güvenle test etmek

Görünmez widget'ları elle test etmek zordur, çünkü challenge yalnızca gönderimde çalışır ve çoğu zaman hiçbir şey göstermeden geçer. Şu sırayla test edin:

  1. Ücretsiz deneme rehberindeki duman testini kullanarak, is_invisible true iken çözümün bir token döndürdüğünü doğrulayın.
  2. Bu token ile tarayıcı konsolunda sitenin callback'ini kendiniz tetikleyin ve formun devam edip etmediğini izleyin.
  3. Formu betiğinizden gönderin ve bir sonraki sayfayı kontrol edin.
  4. Mümkünse ikinci bir ağdan tekrarlayın; token'ın çözümü yapan IP'ye bağlı olmadığından emin olun.

Testi yalnızca sahibi olduğunuz bir formda ya da test etmeye izniniz olan bir staging kopyasında yapın. Kontrol etmediğiniz canlı bir hesapta görünmez bir akışı asla çalıştırmayın.

Tek bir görünmez gönderimde olayların sırası

Çalışan bir entegrasyon şu sırayı izler:

  1. Ziyaretçi veya betiğiniz formu doldurur.
  2. Betiğiniz sitekey'i ve sayfa URL'sini sayfadan okur.
  3. Betiğiniz is_invisible true ile çözüm endpoint'ini çağırır ve token'ı bekler.
  4. Betiğiniz token'ı yanıt alanına yazar ve sitenin callback'ini çağırır.
  5. Sitenin kodu formu token ekli olarak gönderir.
  1. adım 5. adımdan çok daha önce olursa, form gönderilmeden token sona erebilir. Aradaki boşluğu olabildiğince kısa tutun.

Site bir görünmez token'ı reddettiğinde

Reddetme her zaman token ile ilgili bir sorun değildir. Çözüm isteğini değiştirmeden önce şunları kontrol edin:

Bu kontrollerden sonra ancak proxy sorusuna geçin. Reddetmelerin çoğu IP'den değil, callback'ten ya da oturumdan kaynaklanır.

Sonraki adımlar

Ücretsiz deneme kredisiyle başlayın, kart gerekmez: hesap oluşturun ve kendi sahip olduğunuz bir sayfada görünmez bir sitekey'i test edin.