Scarnox · Blog

Wykryty headless browser: przyczyny i poprawki (2026)

Strona zgłasza „headless browser detected” albo po cichu pokazuje twojej zautomatyzowanej przeglądarce inną treść. Strony tak robią, bo headless browser działa bez okna i często różni się od zwykłej przeglądarki na komputerze w drobnych, mierzalnych szczegółach. Ten przewodnik wyjaśnia, na jakie sygnały patrzą strony, jak sprawdzić, co twoja przeglądarka ujawnia, i jak wygląda rozsądna poprawka. Opisuje też moment, w którym właściwą odpowiedzią jest zatrzymanie się albo potraktowanie tego sprawdzenia jako kroku captcha.

Dlaczego strony sprawdzają headless browsery

Narzędzia do automatyzacji sterują prawdziwym silnikiem przeglądarki, więc większość strony działa tak samo. Różnice pojawiają się na brzegach:

Strony łączą te sygnały w wynik. Niski wynik może oznaczać ciche obniżenie jakości strony, dodatkowe sprawdzenia albo blokadę.

Krok 1: sprawdź, co twoja przeglądarka udostępnia

Zanim cokolwiek zmienisz, zobacz, co strona może odczytać z twojej automatyzacji. Poniższy skrypt otwiera stronę, którą kontrolujesz, i wypisuje istotne sygnały. To narzędzie diagnostyczne: używaj go na własnych stronach testowych, a nie do sprawdzania cudzych systemów.

from playwright.sync_api import sync_playwright

CHECK = """() => ({
    webdriver: navigator.webdriver,
    languages: navigator.languages,
    plugins: navigator.plugins.length,
    userAgent: navigator.userAgent,
    screen: [screen.width, screen.height],
    viewport: [window.innerWidth, window.innerHeight],
    timezone: Intl.DateTimeFormat().resolvedOptions().timeZone
})"""

with sync_playwright() as p:
    browser = p.chromium.launch(headless=True)
    page = browser.new_page()
    page.goto("https://example.com")  # zastąp stroną, którą posiadasz
    print(page.evaluate(CHECK))
    browser.close()

Uruchom ten sam skrypt z headless=False i porównaj oba wyniki. Różnice to rzeczy, które strona mogłaby zauważyć.

Krok 2: napraw niespójności, a nie tylko flagi

Ukrycie jednej flagi przy niezmienionych pozostałych to najczęstszy błąd. User agent, który podaje Windows, przy czcionkach, strefie czasowej i rozmiarze ekranu opisującym serwer Linux, jest mocniejszym sygnałem niż pojedyncza właściwość. Dąż do środowiska spójnego wewnętrznie:

Playwright pozwala ustawić kilka z tych rzeczy w jednym miejscu:

context = browser.new_context(
    locale="en-US",
    timezone_id="America/New_York",
    viewport={"width": 1366, "height": 768},
)
page = context.new_page()

Krok 3: zwolnij i zachowuj się jak odwiedzający

Automatyzacja staje się oczywista, gdy jest szybsza, niż mógłby być człowiek. Dodawaj realistyczne pauzy między ładowaniami stron, unikaj klikania tego samego elementu w idealnym rytmie i nie otwieraj setek stron równolegle z jednego adresu. Mniej i wolniejszych żądań zmniejsza też obciążenie serwisu, co i tak jest właściwe.

Krok 4: wiedz, kiedy sprawdzenie jest captcha

Niektóre przepływy wykrywania kończą się wyzwaniem zamiast blokady. Zobaczysz wtedy widget captcha, a ten krok wymaga tokena od solvera. Obsługiwany dziś w Scarnox typ captcha to PopularCaptcha. Przewodnik PopularCaptcha w Pythonie pokazuje, jak token jest pobierany i wysyłany. Inne widgety, takie jak Cloudflare Turnstile, są w planach, ale jeszcze nieobsługiwane, więc przed planowaniem sprawdź typy captcha wyjaśnione.

Sam krok captcha nie oznacza, że reszta konfiguracji jest poprawna. Jeśli ta sama strona blokuje każdą sesję headless bez względu na konfigurację, to wyraźny sygnał, że właściciel nie chce zautomatyzowanego dostępu. Uszanuj to.

Czego nie robić

Nie próbuj ukrywać automatyzacji przed stroną, która ją zabrania, i nie używaj narzędzi do omijania wykrywania, żeby przejść przez kontrolę dostępu. To inny rodzaj projektu niż testy i zbieranie danych publicznych, którymi zajmuje się ten przewodnik. Jeśli twój projekt wymaga dostępu, którego nie masz, zapytaj właściciela strony albo poszukaj oficjalnego API lub kanału danych.

Scrapuj odpowiedzialnie

Co dalej

Jeśli twoja automatyzacja służy testom end-to-end, podejście jest inne: zobacz captcha w testach automatycznych. Jeśli używasz konfiguracji Playwright lub Puppeteer, obsługa captcha w Playwright i Puppeteer wyjaśnia, gdzie trafia token.

Zacznij z darmowym kredytem próbnym, bez karty: załóż konto i przetestuj przepływ PopularCaptcha na własnej stronie. Aktualne stawki znajdziesz na stronie cennika.

Dalsze kroki