← Wszystkie wpisy

Dlaczego przeglądarki headless zdradzają więcej w 2026 roku

W 2026 roku systemy wykrywające powiększyły różnicę między sesjami przeglądarek headless a standardowymi. Jeśli używasz Puppeteer lub Playwright na produkcji, przygotuj się na koszty detekcji.

Headless nie jest już ukryty

Siedem dni temu cside opublikował analizę techniczną dotyczącą wykrywania przeglądarek headless w 2026 roku. Główny wniosek: systemy detekcji wyłapują teraz sesje headless na poziomie pikseli. Ta sama nominalna przeglądarka, ten sam system operacyjny, inny wynik WebGL. Inne taktowanie AudioContext. Inna enumeracja fontów. Małe sygnały, ale wystarczająco spójne, aby zbudować scoring.

Ten post ukazał się tydzień po zestawieniu Browser Fingerprinting 2026 od WebDecoy, które doszło do tego samego wniosku inną drogą. W raporcie State of Web Scraping 2026 od Browserless (opublikowanym wcześniej w tym roku) ujęto to wprost: przeglądarki headless są flagowane częściej niż te sterowane przez użytkowników, a różnica stale rośnie.

Jeśli używasz Puppeteera lub Playwrighta na produkcji, zmienia to Twoją strukturę kosztów.

Co się właściwie zmieniło

Stara szkoła detekcji headless opierała się na navigator.webdriver === true, pustych tablicach plugins i HeadlessChrome w User-Agent. Każdy plugin z poprawkami od 2020 roku to pokrywa. Systemy detekcji zeszły więc niżej w stosie technologicznym.

Renderowanie programowe to główny czynnik. Przeglądarka użytkownika korzysta z GPU. Środowiska headless uruchamiane w kontenerach zwykle przełączają się na rasteryzator programowy. Ciąg renderer w WebGL zwraca inne wartości. Wyjściowy obraz pikseli różni się przy tych samych danych wejściowych. Fingerprinty Canvas rozbiegają się na identycznych wejściach. Żaden z tych elementów nie wyzwala binarnej reguły; zasila natomiast ocenę probabilistyczną.

AudioContext to drugi element. Gdy strona tworzy instancję kontekstu audio i sprawdza częstotliwość próbkowania lub liczbę kanałów, środowiska headless zwracają subtelnie inne wartości niż standardowe sesje desktopowe. Czas wykonania tej samej operacji dryfuje w przewidywalny sposób.

Enumeracja fontów to trzeci czynnik. Maszyny użytkowników mają zainstalowane fonty wynikające z historii użytkowania. Obrazy kontenerowe mają wyselekcjonowany (i mały) zestaw. Gdy skrypt fingerprintujący mierzy szerokość stu popularnych ciągów znaków w pięćdziesięciu fontach, wzorzec brakujących fontów ma wartość diagnostyczną.

Każdy z tych sygnałów z osobna jest słaby. Zestawione razem i połączone ze starszymi sygnałami, które detektory nadal weryfikują, składają się na wynik rozróżniający sesje zautomatyzowane od sesji użytkowników z pewnością wystarczającą do podjęcia blokady.

Dlaczego systemy detekcji inwestują w to teraz

Ponieważ liczby w końcu uzasadniły budżet R&D.

Raport 2026 Advanced Persistent Bot Report firmy F5 oszacował ruch scraperów na 10.2% globalnego ruchu webowego, już po zastosowaniu istniejących mechanizmów ochrony przed botami. To ruch rezydualny: część, której obrońcy nie są w stanie zredukować do zera za pomocą posiadanych narzędzi. Każdy kolejny punkt procentowy tej puli jest wart wyeliminowania.

Cloudflare wdrożyło Precursor 13 lipca. Precursor zbiera ciągłe sygnały behawioralne po stronie klienta (ruch kursora, dynamikę klawiatury, focus, widoczność) i przekazuje je do bieżącej oceny bot score, która utrzymuje się między odświeżeniami strony. Pisaliśmy o tym dwa tygodnie temu: zachowanie sesji jest teraz oceniane tak, jak odciski palców rok temu.

Precursor i fala sygnałów specyficznych dla headless to nie są niezależne ruchy. To ta sama strategia. Przestać oceniać pojedynczy request w izolacji. Oceniać całą sesję, w każdym mierzalnym wymiarze.

Dwa ukryte koszty, które faktycznie ponosisz

Uruchamianie headless we własnym zakresie zawsze było tanie na papierze. Framework jest darmowy, przeglądarka jest darmowa, a kontenery są tanie. Jednak rok 2026 dodał dwie pozycje, których nie widać na fakturze.

Koszt utrzymania to ten, który wszyscy zauważają. puppeteer-extra-plugin-stealth dawał kiedyś miesiące spokoju między kolejnymi łatkami. Na każdej stronie z realnymi zabezpieczeniami w 2026 roku daje to tygodnie. Pomiędzy aktualizacjami headless, aktualizacjami przeglądarek, aktualizacjami systemów ochrony i wtyczek, jeden inżynier może stracić pełny tydzień w miesiącu tylko na utrzymanie spójności stacku. Nikt nie wpisuje tego do roadmapy. To po prostu pożera roadmapę.

Koszt wykrywalności to ten, którego ludzie nie zauważają, ponieważ ukrywa się na wykresie success rate. Wskaźniki blokad na chronionych celach powoli rosną. Liczba ponownych prób idzie w górę. Koszt pojedynczego udanego pobrania rośnie razem z nimi. Przypisujesz to faktowi, że "strona stała się trudniejsza", i idziesz dalej. Częściowo to prawda. Częściowo to pogłębiająca się przepaść między tym, jak wygląda twój stack, a tym, jak wygląda zwykła przeglądarka. Oba trendy zmierzają w tym samym kierunku.

Żaden z tych kosztów sam w sobie nie niszczy projektu. Razem zmieniają rachunek opłacalności budowy własnego rozwiązania vs zakupu gotowego.

Co to oznacza dla zespołów data engineering

Nie każdy scraping wymaga przeglądarki. Ta zasada się nie zmieniła. Warto ją jednak przypomnieć, ponieważ wiele wdrożeń headless zaczęło się od strony, którą można było obsłużyć zwykłym wywołaniem HTTP.

Jeśli dane docelowe przechodzą przez XHR lub endpoint JSON, pomiń przeglądarkę. Requesty HTTP są tańsze, szybsze i w ogóle nie generują tych sygnałów fingerprintingu. Artykuł okhlopkova z lipca układa tę hierarchię we właściwej kolejności: najpierw API i XHR, potem osadzony JSON, przeglądarka tylko wtedy, gdy strona naprawdę tego wymaga, a ekstrakcja przez LLM dopiero po zweryfikowaniu wszystkich innych opcji.

W przypadku stron, które wymagają przeglądarki, kluczowy jest poziom ochrony. Lekka ochrona (rate limit, filtry User-Agent, sprawdzanie referer): dobrze skonfigurowany stack headless nadal działa, a narzut jest niski. Ciężka ochrona (Cloudflare, PerimeterX, DataDome z pełną oceną sesji): narzut jest realny i kumuluje się. Właśnie tam kalkulacja się odwraca.

Istnieje też pośrednia strefa, o której nikt nie mówi. Serwisy, które nie blokują wprost, ale po cichu degradują treść. Inna cena, uboższa lista wyników, brakujące zdjęcia, brakujące recenzje. Twój scraper zgłasza sukces. Dane są po cichu błędne. Ten tryb awarii staje się coraz powszechniejszy, w miarę jak oceny fingerprintingu stają się podstawą decyzji o treści, a nie decyzji o blokadzie.

Jeśli nie potrafisz stwierdzić, czy jesteś w tej strefie, prawdopodobnie w niej jesteś.

Dokąd to zmierza

Headless był hackiem, który działał przez dekadę, bo nikt nie przyglądał mu się uważnie. Ostatnie dwa lata to zmieniły. Dostawcy systemów detekcji uznali w końcu, że warto wyeliminować pozostały ruch scraperów, i wybrali warstwę, w której automatyzację najłatwiej odizolować.

W kolejnej rundzie nie będzie chodzić o sprytniejsze wtyczki z patchami. Będzie chodzić o to, które serwisy uznają, że precyzja detekcji jest warta odsetka fałszywych trafień (false positives) u legalnych użytkowników o nietypowych konfiguracjach: narzędziach dostępności, starszych GPU, firmowych proxy czy prywatnym DNS. Każdy punkt dokładności wykrywania headless, który kupują, kosztuje ułamek procenta prawdziwych użytkowników. To w tym kompromisie toczy się prawdziwy wyścig zbrojeń, a nie w twojej konfiguracji Puppeteer.

Jeśli już płacisz podatek od headless, przynajmniej go zmierz. W przeciwnym razie to po prostu koszt, na który zgodziłeś się nieświadomie.