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ł techniczne zestawienie detekcji przeglądarek headless w 2026 roku. Wniosek: detektory wychwytują teraz sesje headless na poziomie pikseli. Ta sama nominalna przeglądarka, ten sam system operacyjny, ale inne wyjście WebGL. Różne czasy w AudioContext. Inna enumeracja czcionek. Małe sygnały, ale wystarczająco spójne, aby wpłynąć na ocenę.

Ten wpis pojawił się tydzień po zestawieniu WebDecoy Browser Fingerprinting 2026, które prowadzi do tego samego wniosku inną drogą. Raport Browserless State of Web Scraping 2026 (opublikowany wcześniej w tym roku) mówi wprost: przeglądarki headless są oznaczane częściej niż te obsługiwane przez użytkownika, a różnica ciągle rośnie.

Jeśli używasz Puppeteer lub Playwright na produkcji, zmienia to twoją krzywą kosztów.

Co właściwie się zmieniło

Stara historia o detekcji headless sprowadzała się do navigator.webdriver === true, pustych tablic wtyczek i HeadlessChrome w nagłówku User-Agent. Każdy plugin typu stealth z 2020 roku to naprawia. Więc detektory zeszły niżej w stosie.

Renderowanie programowe to największa zmiana. Przeglądarka użytkownika używa GPU. Środowiska headless uruchomione w kontenerach zwykle wracają do rasteryzatora programowego. Ciąg znaków renderera WebGL jest inny. Wynik w pikselach różni się przy tych samych danych wejściowych. Odciski palca Canvas różnią się przy identycznych danych wejściowych. Żadne z tych zjawisk nie uruchamia prostego sprawdzenia typu prawda lub fałsz, ale zasila ocenę probabilistyczną.

AudioContext jest drugie. Gdy strona tworzy instancję kontekstu audio i pyta o częstotliwość próbkowania lub liczbę kanałów, środowiska headless odpowiadają nieco innymi wartościami niż normalne sesje desktopowe. Czas tej samej operacji przesuwa się w przewidywalny sposób.

Enumeracja czcionek to trzeci element. Maszyny użytkowników mają czcionki instalowane z upływem czasu. Obrazy kontenerów mają wyselekcjonowany i mały zestaw. Kiedy skrypt do fingerprintingu mierzy szerokość stu popularnych ciągów znaków dla pięćdziesięciu czcionek, wzorzec brakującej czcionki ma znaczenie diagnostyczne.

Każdy z nich to słaby sygnał. Razem oraz w połączeniu ze starszymi sygnałami, które detektory nadal sprawdzają, sumują się one do wyniku, który oddziela sesje automatyczne od sesji użytkowników z pewnością wystarczająco wysoką do podjęcia działań.

Dlaczego detektory inwestują właśnie teraz

Ponieważ liczby ostatecznie uzasadniły budżet na badania i rozwój.

Raport F5 2026 Advanced Persistent Bot Report szacuje ruch ze scraperów na 10,2% globalnego ruchu w sieci, po zastosowaniu istniejących metod mitygacji botów. To jest reszta, czyli udział, którego obrońcy nie są w stanie zredukować do zera za pomocą już posiadanych narzędzi. Każdy dodatkowy punkt tego udziału jest wart zablokowania.

Cloudflare wdrożył Precursor 13 lipca. Precursor gromadzi ciągłe sygnały behawioralne po stronie klienta (ruch kursora, czas reakcji klawiatury, focus, widoczność) i przekazuje je do bieżącej punktacji botów, która utrzymuje się pomiędzy odświeżeniami strony. My pisaliśmy o tym dwa tygodnie temu: zachowanie sesji jest teraz oceniane w taki sam sposób, w jaki fingerprinty były oceniane rok temu.

Precursor i fala sygnałów specyficznych dla headless nie są niezależnymi ruchami. To ta sama gra. Przestań oceniać pojedynczy request w izolacji. Oceniaj całą sesję na każdej możliwej do zmierzenia osi.

Dwa podatki, które faktycznie płacisz

Uruchamianie headless we własnym zakresie zawsze było tanie na papierze. Framework jest darmowy, przeglądarka jest darmowa, a kontenery są tanie. Ale rok 2026 dodał dwie pozycje, które nie pojawiają się na fakturze.

Podatek od utrzymania to ten, który ludzie zauważają. Puppeteer-extra-stealth kupował kiedyś miesiące spokoju pomiędzy łatkami. Na dowolnej stronie z prawdziwą obroną w 2026 roku kupuje to tygodnie. Pomiędzy aktualizacjami headless, aktualizacjami przeglądarki, aktualizacjami obrony i aktualizacjami wtyczek stealth, jeden inżynier może spalić cały tydzień w miesiącu na dostrajanie stosu. Nikt nie umieszcza tego na roadmapie. To po prostu pożera roadmapę.

Podatek od detekcji to ten, którego ludzie nie zauważają, ponieważ ukrywa się na wykresie współczynnika sukcesów. Wskaźniki blokad na chronionych celach rosną. Liczba ponowień rośnie. Koszty za udany fetch idą wraz z nimi. Przypisujesz to faktowi, że strona stała się trudniejsza i idziesz dalej. Część z tego jest prawdą. Część to powiększająca się luka pomiędzy tym, jak wygląda twój stos, a jak wygląda normalna przeglądarka. Oba te trendy idą w tym samym kierunku.

Żaden z tych podatków nie zabija projektu. Razem zmieniają matematykę w dylemacie build-vs-buy.

Co to oznacza dla zespołów danych

Nie każdy scrape potrzebuje przeglądarki. Ta część się nie zmieniła. Warto to jednak powtórzyć, ponieważ wiele wdrożeń headless zaczęło się od strony, która mogła być 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 przede wszystkim nie niosą ze sobą żadnych z tych sygnałów fingerprintów. Artykuł okhlopkov z lipca ustawia priorytety we właściwej kolejności: API i XHR najpierw, wbudowany JSON w dalszej kolejności, przeglądarka tylko wtedy, gdy strona tego naprawdę wymaga, a ekstrakcja LLM dopiero po weryfikacji wszystkiego innego.

Dla stron, które rzeczywiście potrzebują przeglądarki, pytaniem jest poziom obrony. Lekka ochrona (rate limity, filtry User-Agent, sprawdzanie referer): dobrze skonfigurowany stos headless nadal działa, a podatek jest niski. Ciężka ochrona (Cloudflare, PerimeterX, DataDome z pełnym ocenianiem sesji): podatek jest realny i kumuluje się. Wtedy kalkulacja ulega odwróceniu.

Jest też środkowy obszar, o którym nikt nie mówi. Strony, które nie blokują całkowicie, ale po cichu degradują jakość. Inna cena, uboższa lista, brakujące obrazki, brakujące recenzje. Twój scraper zgłasza sukces. Dane są po cichu błędne. Ten model błędu staje się coraz częstszy, gdy wyniki fingerprintingu stają się danymi wejściowymi do decyzji o treści, a nie decyzji o blokowaniu.

Jeśli nie potrafisz stwierdzić, czy jesteś w tym obszarze, prawdopodobnie w nim jesteś.

Dokąd to zmierza

Headless był obejściem, które działało przez dekadę, ponieważ nikt nie patrzył zbyt uważnie. Ostatnie dwa lata to zmieniły. Dostawcy systemów detekcji ostatecznie uznali, że resztkowy udział scraperów jest wart zamknięcia i wybrali warstwę, w której automatyzację najłatwiej odizolować.

Następna runda nie będzie dotyczyć mądrzejszych wtyczek typu stealth. Będzie dotyczyć tego, które strony uznają, że precyzja detekcji jest warta wskaźnika fałszywych alarmów u prawdziwych użytkowników z nietypowymi konfiguracjami: narzędziami ułatwień dostępu, starszymi GPU, korporacyjnymi proxy, prywatnymi DNS. Każdy punkt dokładności detekcji headless, który kupują, kosztuje ułamek procenta prawdziwych użytkowników. To w tym kompromisie faktycznie rozgrywa się 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 pozycja kosztowa, na którą nie wiedziałeś, że się piszesz.