Jak obejść captcha w uzasadnionej automatyzacji i testach
Legalne obejście captcha oznacza przeprowadzenie własnej zautomatyzowanej pracy przez wyzwanie bez łamania zasad serwisu i bez atakowania jego użytkowników. W praktyce obejmuje to cztery przypadki: automatyzację przepływu, który należy do Ciebie, testowanie własnej strony, budowanie narzędzi dostępnościowych oraz zbieranie danych publicznych w odpowiedzialnym tempie. Najszybszą uczciwą drogą jest zwykle w ogóle nie wywołać captcha. Gdy nie da się tego uniknąć, API solvera, takie jak Scarnox, może zwrócić token, którego oczekuje strona.
Ten przewodnik przedstawia podejścia w kolejności, w jakiej warto je wypróbować, i wskazuje granice, których nie należy przekraczać.
Zacznij od pytania, dlaczego pojawiła się captcha
Captcha to sygnał. Serwis uznał, że żądanie wygląda na zautomatyzowane lub ryzykowne. Zanim spróbujesz przejść przez wyzwanie, sprawdź, co je wywołało:
- Tempo żądań. Wiele captcha pojawia się dopiero po serii żądań z jednego adresu.
- Brak stanu sesji. Odwiedzający bez ciasteczek, historii i logowania wygląda jak scraper.
- Sygnały przeglądarki. Przeglądarki headless i domyślne ustawienia automatyzacji są często oznaczane. Przewodnik o wykrywaniu przeglądarki headless wyjaśnia najczęstsze z nich.
- Reputacja sieci. Adresy datacenter są sprawdzane dokładniej niż domowe łącza.
Usunięcie przyczyny często eliminuje captcha całkowicie, co jest lepsze niż rozwiązywanie jej przy każdym żądaniu.
Wypróbuj podejścia, które omijają wyzwanie
- Użyj oficjalnego API, jeśli istnieje. Wiele serwisów udostępnia dane przez API z własnymi kluczami i limitami. Ta droga jest szybsza, stabilniejsza i wyraźnie dozwolona.
- Zwolnij i rozłóż żądania w czasie. Dodawaj opóźnienia między żądaniami, ogranicz równoległość i wycofuj się, gdy pojawi się ostrzeżenie. Stałe tempo kilku żądań na minutę wygląda dla serwisu zupełnie inaczej niż seria setek.
- Utrzymuj sesje. Używaj ponownie ciasteczek i spójnego profilu przeglądarki w obrębie sesji, zamiast zaczynać od zera na każdej stronie. Przewodnik o fingerprintingu przeglądarki wyjaśnia, dlaczego to ma znaczenie.
- Sprawdź robots.txt i regulamin przed startem, a nie po zablokowaniu. Szanuj to, czego serwis oczekuje.
Używaj kluczy testowych i środowisk testowych
Jeśli captcha blokuje Twoje własne środowisko stagingowe, nie kieruj testów na produkcję, by ją obejść. Większość dostawców captcha, w tym Google i Cloudflare, publikuje klucze testowe do developmentu. Te klucze generują poprawny token bez prawdziwego wyzwania i są właściwym narzędziem do zautomatyzowanych testów. Możesz też poprosić swój zespół o wyłączenie captcha na serwerze stagingowym. Przewodnik o captcha w testach automatycznych przechodzi przez tę konfigurację.
Rozwiąż captcha przez API, gdy stoi na drodze uzasadnionej pracy
Niektóre captcha będą pojawiać się mimo dobrego dawkowania żądań. Przykładem jest zadanie monitorujące portal własnego dostawcy. W takim przypadku właściwym narzędziem jest API solvera.
Scarnox to API do rozwiązywania captcha. Obecnie jedynym działającym typem zadania jest PopularCaptcha, bez proxy. Twój kod wysyła sitekey i adres strony, a otrzymuje token do przesłania wraz z formularzem:
import requests
r = requests.post(
"https://api.scarnox.com/api/tasks/create",
headers={"Authorization": "Bearer scarnox_YOURAPIKEY"},
json={
"captcha_type": "PopularCaptchaTaskProxyless",
"site_key": "10000000-ffff-ffff-ffff-000000000001",
"site_url": "https://example.com/login",
},
timeout=185,
)
data = r.json()
token = data["solution"]["token"] if data.get("errorId") == 0 else None
Token wygasa po około dwóch minutach, więc prześlij go od razu. Przewodnik o rozwiązywaniu captcha w Pythonie zawiera pełny przykład. Inne typy captcha, w tym reCAPTCHA, Cloudflare Turnstile i Arkose, są wkrótce. Dopóki nie zostaną uruchomione, nie zakładaj, że solver je obsługuje.
Dostępność to także uzasadniony powód
Captcha stanowią barierę dla osób korzystających z czytników ekranu, przełączających urządzenia lub mających problemy poznawcze albo wzrokowe. Jeśli budujesz narzędzia dostępnościowe albo działasz w imieniu użytkowników, którzy nie mogą ukończyć wyzwania, pierwszym krokiem powinno być poproszenie właściciela serwisu o dostępną alternatywę. Wiele serwisów taką oferuje. Automatyzowanie captcha nie zastąpi tej rozmowy.
Co nie jest legalne
Niektóre zastosowania rozwiązywania captcha są poza granicami, bez względu na podany powód. Nie używaj solverów ani żadnego obejścia do:
- ataków credential stuffing ani żadnych prób logowania na konta, które nie należą do Ciebie;
- spamowych rejestracji, fałszywych recenzji lub fałszywych kont;
- kupowania biletów, towarów lub towarów z ograniczoną dostępnością przed innymi klientami;
- atakowania formularzy logowania, przepływów resetowania hasła lub limitów tempa w cudzej usłudze.
Te zastosowania krzywdzą prawdziwych ludzi, łamią regulaminy serwisów i narażają na poważne ryzyko prawne. Scarnox ich nie obsługuje, a ten przewodnik ich nie opisuje.
Scrapuj odpowiedzialnie
Jeśli Twoje obejście służy zbieraniu danych publicznych, miej na uwadze te kwestie:
- Sprawdź robots.txt i regulamin serwisu. Serwis, który zabrania scrapowania, już powiedział, czego oczekuje.
- Ustaw rozsądny limit tempa i wycofuj się przy błędach. Przeciążenie małego serwisu to realna szkoda.
- Nie zbieraj danych osobowych, których nie potrzebujesz. Dane osobowe podlegają przepisom takim jak RODO, a ich nieostrożne zbieranie tworzy odpowiedzialność. Przewodnik o legalności web scrapingu wyjaśnia główne kwestie.
Podsumowanie
Najpierw unikaj captcha, usuwając przyczynę. Do testów używaj kluczy testowych. Do uzasadnionych zadań, które mimo to trafiają na wyzwanie, używaj API solvera w ramach działających typów zadań. Trzymaj się z dala od zastosowań wymienionych wyżej i scrapuj w tempie, które serwis udźwignie.