Scarnox · Blog

reCAPTCHA v2 nasıl çalışır ve nasıl çözülür (yakında)

reCAPTCHA v2, Google'ın klasik captcha'sıdır. "Ben robot değilim" etiketli bir onay kutusu gösterir ve ziyaretçiden emin olamadığında bir resim challenge'ı ekler. Bunun için bir çözücünün, sitenin Google ile doğrulayabileceği geçerli bir yanıt token'ı üretmesi gerekir. Scarnox'ta reCAPTCHA v2 desteği yakında geliyor. Bu rehber widget'ın nasıl çalıştığını, insanların bugün kullandığı genel yaklaşımları ve token tabanlı bir çözücüden ne beklenebileceğini anlatır.

Scarnox reCAPTCHA v2'yi henüz canlı çözmüyor. Bugün canlı olan tek görev tipi, proxysiz PopularCaptcha'dır. Projeniz şimdi reCAPTCHA v2'ye ihtiyaç duyuyorsa, aşağıdaki yaklaşımlar gerçekçi seçeneklerdir.

Widget nasıl çalışır?

Sayfa, bir data-sitekey özniteliği taşıyan bir kapsayıcı öğe içerir. Bu sitekey, siteyi Google'a tanımlar. Widget yüklendiğinde tarayıcıda kontroller yapar; ziyaretçinin davranışına, çerezlerine ve geçmişine bakar ve bir risk değerlendirmesini Google'a gönderir.

Değerlendirme düşük riskliyse onay kutusu kendiliğinden işaretlenir ve widget g-recaptcha-response adlı gizli bir alana bir token yazar. Değerlendirme daha yüksek riskliyse ziyaretçi bir resim challenge'ı görür; örneğin belirli bir nesneyi içeren kareleri seçmek. Challenge'ı geçmek de token'ı yazar.

Sitenin arka ucu daha sonra bu token'ı, site anahtarıyla birlikte Google'ın doğrulama uç noktasına gönderir. Google başarı ya da başarısızlık yanıtı verir. Doğrulama sunucu tarafında yapıldığı için, token'ı Google ile kontrol etmeden kabul eden bir form reCAPTCHA ile korunmuş değildir.

Neden işaretlenir?

Onay kutusu bir bulmaca değil, bir risk kararıdır. Tipik tetikleyiciler şunlardır:

Bu tetikleyicileri anlamak, widget'ın kendisinden daha önemlidir. Trafiğiniz onay kutusunu tetiklemiyorsa, hiç resim challenge'ı görmezsiniz.

Bugün işe yarayan genel yaklaşımlar

Bu yaklaşımlar yaygın olarak kullanılır ve dürüst yaklaşımlardır. Meşru işlerde bir challenge'ın ne sıklıkla çıkacağını azaltırlar.

  1. Gerçek oturumları koruyun. Her sayfada sıfırdan başlamak yerine bir oturum boyunca çerezleri ve tutarlı bir tarayıcı profilini yeniden kullanın.
  2. İsteklerinizi hızlandırmayın. Sabit, yavaş bir hız, bir patlamadan çok daha fazla bir insana benzer.
  3. Widget için gerçek bir tarayıcı kullanın. Normal ayarlarla çalışan tam bir tarayıcı, sade bir headless kurulumdan daha az işaretlenir. Headless tarayıcı tespiti rehberi yaygın sinyalleri listeler.
  4. İstisna ya da test anahtarı isteyin. Siteye sahipseniz, staging'de Google'ın yayımlanmış test anahtarlarını kullanın. Değilseniz, site sahibinden bir izin listesi isteyin.
  5. Döngüde bir insan tutun. Düşük hacimli işler için bir insan onay kutusunu tamamlayıp token'ı aktarabilir. Bu yavaştır ama güvenilirdir.

Bu yaklaşımlar bir challenge'ın hiç çıkmayacağını garanti etmez. Sıklığını azaltırlar; meşru bir işi istikrarlı tutan şey de budur.

Token tabanlı bir çözücü ne yapacak?

Token tabanlı bir reCAPTCHA v2 çözücüsü, bugün PopularCaptcha'nın yaptığını yapar. Sitekey ve sayfa URL'sini alır, geçerli bir g-recaptcha-response token'ı üretir ve bunu kodunuza döndürür. Kodunuz daha sonra token'ı formun içine yazar ve sona ermeden göndermek zorundadır.

Scarnox, reCAPTCHA v2 desteği çıktığında görev tipini ve varsa ek alanları API referansında belgeleyecek. O zamana kadar varsayılan bir arayüz üzerine kod yazmayın. İstek biçimi PopularCaptcha örneğine benzer olacak, ama tam değerler için belgeleri kontrol edin.

reCAPTCHA v2 işi için kontrol listesi

Bir reCAPTCHA v2 formuna dokunan bir iş planlarken şu noktaları kontrol edin:

Yaygın hatalar

reCAPTCHA v2 entegrasyonunda en sık sorun, doğru görünmesine rağmen sitenin reddettiği bir token'dır. Bunların çoğunun üç nedeni vardır. Birincisi sitekey ile sayfa URL'si arasındaki uyuşmazlıktır: token, widget'ın gösterildiği sayfaya bağlıdır, bu yüzden bir sayfadan alınıp başka bir sayfaya gönderilen sitekey başarısız olur. İkincisi bayat token'dır. Token'lar kısa ömürlüdür; bu yüzden önce çözüp sonra uzun başka adımlar çalıştıran bir betik süresi dolmuş bir değer gönderir. Üçüncüsü sizin tarafınızdaki sunucu tarafı kontrol eksikliğidir. Testleriniz yalnızca bir token'ın var olduğunu doğrularsa, doğrulama adımının başarısız olduğunu fark etmezsiniz.

İkinci bir hata grubu widget'ın çevresindeki iş akışından gelir. Bir oturumda giriş yapıp formu başka bir oturumdan göndermek yaygın bir örnektir, çünkü doğrulama widget'ı yükleyen oturuma bağlı olabilir. Reddedilen bir formu arka arkaya çok kez yeniden denemek de oturumu şüpheli gösterebilir ve tek bir challenge'ı bir dizi challenge'a dönüştürebilir. Bir şey başarısız olduğunda durun, sayfanın durumunu kontrol edin ve taze değerlerle bir kez daha deneyin.

Sorumlu scraping

Form bir scraping işinin parçasıysa, başlamadan önce robots.txt dosyasını ve sitenin kullanım koşullarını kontrol edin. Hızı düşük tutun ve ihtiyacınız olmayan kişisel veriyi toplamayın. Web scraping yasal mı rehberi başlıca hususları kapsar.

Sonraki adımlar