Cloudflare Turnstile: jak działa i jak go rozwiązać (wkrótce)
Cloudflare Turnstile to captcha, które zwykle niczego nie wymaga od odwiedzającego. Wykonuje sprawdzenia w przeglądarce i w większości przypadków przechodzi bez żadnej zagadki. Gdy nie jest pewne, może pokazać krótki krok interaktywny. Widżet zapisuje wtedy token w formularzu, a serwis weryfikuje ten token u Cloudflare. Obsługa Turnstile w Scarnox jest wkrótce. Ten przewodnik wyjaśnia, jak działa widżet, dlaczego często myli się go z innymi wyzwaniami i jakie są ogólne podejścia przy legalnej pracy.
Jak widżet jest osadzony
Strona zawiera element kontenera z klasą cf-turnstile i atrybutem data-sitekey. Skrypt Turnstile ładuje się, wykonuje swoje sprawdzenia i dodaje ukryte pole o nazwie cf-turnstile-response. Wartość tego pola to token. Formularz wysyła go razem z resztą pól, a backend serwisu przesyła go do punktu weryfikacji Cloudflare wraz z kluczem tajnym serwisu.
Podobnie jak w przypadku innych widżetów tokenowych, weryfikacja odbywa się po stronie serwera. Formularz, który akceptuje dowolną wartość w tym polu bez sprawdzenia, nie jest tak naprawdę chroniony.
Tryby i ich znaczenie dla skryptu
Turnstile może działać w kilku trybach. W trybie zarządzanym Cloudflare decyduje, czy pokazać krok interaktywny. W trybie nieinteraktywnym widżet nigdy nie prosi odwiedzającego o nic i jedynie pokazuje status. W trybie niewidocznym nie wyświetla się nic. Dla skryptu tryb zmienia to, co widać na stronie, ale wynik jest ten sam: token w polu formularza, zweryfikowany na serwerze.
Tokeny są krótkotrwałe i jednorazowe. Wyślij formularz wkrótce po wygenerowaniu tokenu przez widżet i nie używaj ponownie tokenu, który został już zweryfikowany.
Dlaczego blokuje automatyzację
Turnstile analizuje sygnały ze środowiska przeglądarki oraz zachowanie sesji. Domyślna przeglądarka headless, brakujący lub niespójny zestaw funkcji przeglądarki, świeża sesja bez historii i podejrzany adres sieciowy mogą każdy z osobna przesunąć decyzję w stronę wyzwania lub blokady. Sygnały należą do tej samej rodziny, co te używane przez inne kontrole oparte na punktacji, dlatego podejścia są podobne.
Legalne podejścia
Oto podejścia, które działają przy legalnej pracy:
- Używaj prawdziwej przeglądarki na stronach, które ładują Turnstile. Zwykły profil przeglądarki z spójnymi ustawieniami rzadziej zostaje wyzwany niż gołe środowisko automatyzacji. Przewodnik o wykrywaniu przeglądarki headless wymienia częste sygnały.
- Zostań w sesji. Zachowuj ciasteczka na wszystkich stronach swojego przepływu, aby odwiedzający nie wyglądał na nowego przy każdym żądaniu.
- Dawkuj żądania. Stałe, ludzkie tempo ogranicza wyzwania znacznie bardziej niż jakakolwiek pojedyncza sztuczka.
- Najpierw sprawdź zasady chronionego serwisu. Wiele chronionych serwisów publikuje API lub kanał danych. Sprawdź to, zanim zbudujesz przepływ w przeglądarce. Przewodnik o scrapowaniu serwisów chronionych przez Cloudflare omawia to podejście szerzej.
- Używaj kluczy testowych w developmencie. Cloudflare publikuje testowe klucze witryny do developmentu, które dają przewidywalne wyniki bez prawdziwego sprawdzenia. Służą do Twoich własnych testów integracyjnych, a nie do ruchu produkcyjnego.
- Zapytaj właściciela. Jeśli prowadzisz serwis, możesz dostosować ustawienia Turnstile dla ścieżek, których używają Twoje testy automatyczne. Jeśli nie, poproś o allowlistę lub API.
Co zrobi solver Turnstile
Solver tokenowy Turnstile przyjmuje sitekey i adres strony, wytwarza poprawny token dla pola cf-turnstile-response i zwraca go do Twojego kodu. Twój kod wpisuje token do formularza i szybko go wysyła. To ten sam wzorzec co działająca integracja PopularCaptcha, z innym typem zadania.
Scarnox nie rozwiązuje jeszcze Turnstile na żywo. Jedynym działającym typem zadania dziś jest PopularCaptcha, bez proxy. Turnstile jest wkrótce, a szczegóły żądania znajdą się w dokumentacji API, gdy zostanie uruchomiony. Nie buduj niczego na zakładanym interfejsie przed tym momentem.
Częste błędy
Integracje Turnstile zawodzą na kilka przewidywalnych sposobów. Najczęstszy to użycie tokenu po jego wygaśnięciu lub po tym, jak został już zweryfikowany. Tokeny są jednorazowe, więc ponowienie po nieudanym wysłaniu formularza wymaga świeżego wyniku widżetu, a nie starej wartości. Drugi to sitekey należący do innego środowiska. Klucz developerski na stronie produkcyjnej, lub odwrotnie, daje błąd weryfikacji, który wygląda na błąd w Twoim kodzie. Sprawdź, jakiego klucza używa strona, zanim zaczniesz cokolwiek debugować.
Innym częstym błędem jest traktowanie kroku interaktywnego jako porażki. W trybie zarządzanym Turnstile może pokazać krótki krok części odwiedzających, a skrypt, który oczekuje cichego zaliczenia, utknie. Buduj przepływ tak, aby czekał na wynik widżetu i obsługiwał przypadek, w którym widżet prosi o więcej.
Na koniec nie wpisuj nazwy pola na sztywno bez sprawdzenia na żywej stronie. Pole cf-turnstile-response jest standardem, ale serwis może inaczej opakować widżet, a odczytanie wyrenderowanego formularza jest szybsze niż zgadywanie.
Scrapuj odpowiedzialnie
Scrapowanie serwisu chronionego przez Turnstile to częste zadanie i wymaga takiej samej ostrożności jak każde inne scrapowanie. Sprawdź robots.txt i regulamin serwisu. Utrzymuj niskie tempo i nie zbieraj danych osobowych, których nie potrzebujesz. Jeśli serwis ma API, preferuj je. Przewodnik o legalności web scrapingu omawia główne pytania.
Przygotowanie
Załóż konto, aby zacząć od darmowego kredytu próbnego, bez karty. Gdy wsparcie Turnstile zostanie uruchomione, będziesz mógł przetestować je na własnych stronach, zanim uruchomisz cokolwiek na żywym serwisie.