Cloudflare Turnstile: nasıl çalışır ve nasıl çözülür (yakında)
Cloudflare Turnstile, genellikle ziyaretçiden hiçbir şey istemeyen bir captcha'dır. Kontrolleri tarayıcıda çalıştırır ve çoğu durumda bir bulmaca olmadan geçer. Emin olamadığında kısa bir etkileşimli adım gösterebilir. Widget daha sonra forma bir token yazar ve site bu token'ı Cloudflare ile doğrular. Scarnox'ta Turnstile desteği yakında geliyor. Bu rehber widget'ın nasıl çalıştığını, neden başka doğrulamalarla sık sık karıştırıldığını ve meşru işler için genel yaklaşımları açıklar.
Widget nasıl gömülür
Sayfa, cf-turnstile sınıfına ve bir data-sitekey özniteliğine sahip bir kapsayıcı öğesi içerir. Turnstile script'i yüklenir, kontrollerini çalıştırır ve cf-turnstile-response adında gizli bir input ekler. Bu input'un değeri token'dır. Form, token'ı diğer alanlarla birlikte gönderir ve sitenin backend'i token'ı gizli anahtarla birlikte Cloudflare'in doğrulama uç noktasına iletir.
Diğer token widget'ları gibi doğrulama da sunucuda yapılır. Bu alanda gelen her değeri sorgulamadan kabul eden bir form, gerçekten korunmuş sayılmaz.
Modlar ve bir script için anlamları
Turnstile birden çok modda çalışabilir. Yönetilen (managed) modda Cloudflare etkileşimli bir adım gösterip göstermemeye karar verir. Etkileşimsiz (non-interactive) modda widget ziyaretçiden asla bir şey istemez ve yalnızca bir durum gösterir. Görünmez (invisible) modda hiçbir şey gösterilmez. Bir script için mod, sayfada ne göreceğinizi değiştirir; ama sonuç aynıdır: form alanında bir token ve sunucuda doğrulama.
Token'lar kısa ömürlüdür ve tek kullanımlıktır. Widget token'ı ürettikten hemen sonra formu gönderin ve zaten doğrulanmış bir token'ı yeniden kullanmayın.
Otomasyonu neden engeller
Turnstile, tarayıcı ortamından ve oturumun davranışından gelen sinyallere bakar. Varsayılan bir headless tarayıcı, eksik ya da tutarsız tarayıcı özellikleri, geçmişi olmayan yeni bir oturum ve şüpheli bir ağ adresi, kararı bir doğrulamaya ya da engellemeye doğru itebilir. Bu sinyaller diğer puan tabanlı kontrollerle aynı ailedendir; bu yüzden yaklaşımlar da benzerdir.
Meşru yaklaşımlar
Meşru işler için işe yarayan yaklaşımlar şunlardır:
- Turnstile yükleyen sayfalarda gerçek bir tarayıcı kullanın. Tutarlı ayarlara sahip normal bir tarayıcı profili, çıplak bir otomasyon derlemesinden daha az doğrulamaya takılır. Headless browser tespiti rehberi yaygın sinyalleri listeler.
- Oturumda kalın. İş akışınızın sayfaları arasında çerezleri koruyun; böylece ziyaretçi her istekte yeni görünmez.
- İsteklerinizi hızlandırın. Sabit, insan gibi bir hız, tek bir hileden çok daha fazla doğrulamayı azaltır.
- Korumalı sitenin kurallarını önce okuyun. Birçok korumalı site bir API ya da veri akışı yayınlar. Bir tarayıcı iş akışı kurmadan önce bunu kontrol edin. Cloudflare korumalı siteleri scrape etme rehberi yaklaşımı daha derinlemesine anlatır.
- Geliştirmede test anahtarlarını kullanın. Cloudflare, geliştirme için öngörülebilir sonuçlar veren test sitekey'leri yayınlar. Bunlar kendi entegrasyon testleriniz içindir, üretim trafiği için değil.
- Sahibine sorun. Siteyi siz işletiyorsanız, otomatik testlerinizin kullandığı yollar için Turnstile ayarlarını değiştirebilirsiniz. İşletmiyorsanız bir izin listesi ya da bir API isteyin.
Bir Turnstile solver ne yapacak
Token tabanlı bir Turnstile solver, sitekey'i ve sayfa URL'sini alır, cf-turnstile-response alanı için geçerli bir token üretir ve bunu kodunuza döndürür. Kodunuz token'ı formun içine yazar ve hızlıca gönderir. Bu, canlı PopularCaptcha entegrasyonuyla aynı kalıptır; yalnızca görev türü farklıdır.
Scarnox Turnstile'ı henüz canlı çözmez. Bugün tek canlı görev türü PopularCaptcha'dır, proxysiz. Turnstile yakında geliyor ve istek ayrıntıları yayınlandığında API referansında yer alacak. O zamana kadar varsayılan bir arayüze göre geliştirme yapmayın.
Sık yapılan hatalar
Turnstile entegrasyonları birkaç öngörülebilir şekilde başarısız olur. En yaygını, süresi dolmuş ya da zaten doğrulanmış bir token'ı kullanmaktır. Token'lar tek kullanımlık olduğu için, form gönderimi başarısız olduktan sonra yeniden denemek eski değeri değil, yeni bir widget sonucu gerektirir. İkincisi, başka bir ortama ait bir sitekey'dir. Geliştirme anahtarının üretim sayfasında, ya da tersinin kullanılması, kodunuzdaki bir hataya benzeyen bir doğrulama hatası üretir. Bir şeyi debug etmeden önce sayfanın hangi anahtarı kullandığını kontrol edin.
Bir diğer sık hata, etkileşimli bir adımı başarısızlık saymaktır. Yönetilen modda Turnstile bazı ziyaretçilere kısa bir adım gösterebilir ve sessiz bir geçiş bekleyen bir script orada takılır. Akışı widget'ın sonucunu beklemek ve widget'ın daha fazlasını istediği durumu ele almak üzere kurun.
Son olarak, alan adını canlı sayfada kontrol etmeden kodunuza sabitlemeyin. cf-turnstile-response input'u standarttır; ama bir site widget'ı farklı sarabilir ve render edilmiş formu okumak, tahmin etmekten daha hızlıdır.
Sorumlu scraping
Turnstile ile korunan bir siteyi scrape etmek yaygın bir iştir ve diğer scraping işleri gibi aynı özeni ister. robots.txt dosyasını ve kullanım koşullarını kontrol edin. Hızınızı düşük tutun ve ihtiyacınız olmayan kişisel veriyi toplamayın. Sitenin bir API'si varsa onu tercih edin. Temel soruları web scraping yasal mı rehberi kapsar.
Hazırlanmak
Hesap oluşturun; kredi kartı gerekmeden ücretsiz deneme kredisiyle başlayabilirsiniz. Turnstile desteği yayına girdiğinde, herhangi bir şeyi canlı bir siteye karşı çalıştırmadan önce kendi sayfalarınızda test edebileceksiniz.