Detekce headless prohlížečů: Playwright, Puppeteer a další
Náš engine pro Bot Detection identifikuje 15+ automatizačních frameworků díky nekonzistencím signálů, chybějícím API a vzorcům chování, které boti nedokážou předstírat.
Headless prohlížeče jsou zbraní volby pro sofistikovaný web scraping, credential stuffing a podvodné operace. Na rozdíl od jednoduchých HTTP klientů headless prohlížeče spouštějí JavaScript, vykreslují stránky a podporují moderní webová API — což je činí mnohem obtížněji detekovatelnými. Náš engine pro Bot Detection využívá několik nezávislých detekčních metod k identifikaci 15+ automatizačních frameworků s téměř nulovým počtem falešně pozitivních výsledků.
Vývoj automatizace prohlížečů
Automatizace prohlížečů ušla dlouhou cestu od jednoduchých curl skriptů. Moderní nástroje jako Playwright, Puppeteer a Selenium WebDriver ovládají skutečné jádra prohlížečů — Chromium, Firefox nebo WebKit — v headless režimu. Spouštějí JavaScript, zpracovávají CSS, vykreslují canvas elementy a obsluhují WebGL dotazy stejně jako prohlížeče s grafickým rozhraním. Díky tomu jsou neviditelné pro detekční metody, které jednoduše kontrolují schopnost spouštět JavaScript.
Nejnovější generace nástrojů zašla ještě dál. Stealth režim Playwrightu opravuje mnoho signálů, na které tradiční bot detection spoléhá. Puppeteer-extra-plugin-stealth upravuje vlastnosti navigator, přepisuje řetězce s WebGL vendorem a předstírá události uživatelské interakce. Tato opatření proti detekci vytvořila závody ve zbrojení mezi provozovateli botů a detekčními systémy.
Detekční metoda 1: Analýza WebDriver flagu
Vlastnost navigator.webdriver je nastavena na true, když je prohlížeč ovládán automatizací. Dříve stačila k detekci prostá kontrola této vlastnosti. Moderní stealth nástroje ji ale mažou nebo přepisují. Naše detekce jde hlouběji — kontrolujeme nejen hodnotu vlastnosti, ale i její property descriptor, přítomnost v prototype chainu a zda došlo k pokusům o její předefinování. Kontrolujeme také související vlastnosti, jako jsou anomálie v délce navigator.plugins, které přepisy WebDriveru doprovázejí.
Detekční metoda 2: Artefakty Chrome DevTools Protocolu
Playwright a Puppeteer ovládají prohlížeče prostřednictvím Chrome DevTools Protocolu (CDP). I když je stealth režim aktivní, CDP zanechává v runtime artefakty: konkrétní globální proměnné, upravené getter funkce a pozměněné property descriptory na objektech Window a Navigator. Tyto artefakty zjišťujeme technikami, které jsou odolné vůči jednoduchému přepsání.
Detekční metoda 3: Fingerprinting headless prohlížečů
Headless Chrome má jinou sadu schopností než Chrome s grafickým rozhraním. Chybí mu určité pluginy prohlížeče, má odlišné charakteristiky vykreslování u některých CSS vlastností a vrací jiné hodnoty u některých výsledků MediaQuery. Udržujeme databázi známých charakteristik headless prohlížečů a příchozí fingerprinty proti ní kontrolujeme.
Mezi klíčové indikátory headless režimu patří: chybějící chrome.runtime (přítomný v Chrome s grafickým rozhraním, ale nepřítomný v headless), pole navigator.plugins nulové délky, konkrétní vzorce user agentů, které byly v předchozích verzích spojovány s headless režimem, a rozdíly v tom, jak headless Chrome zachází s bezpečnostními kontexty iframe.
Detekční metoda 4: Analýza délky eval
Různé JavaScriptové enginy mají různé implementace vestavěných funkcí a tyto implementace mají různé řetězcové reprezentace. Kontrolou délky Function.prototype.toString.call(eval) a jejím porovnáním se známými hodnotami pro každý engine prohlížeče dokážeme odhalit podvržení prostředí — například instanci headless Chrome, která předstírá, že je Firefox.
Detekční metoda 5: TLS cross-validace
Jak jsme rozebrali v našem článku o TLS fingerprintingu, zpráva TLS Client Hello odhaluje skutečný prohlížeč nebo HTTP knihovnu, která navazuje spojení. Když Playwright skript ovládá Chrome, TLS fingerprint odpovídá Chrome — to se očekává. Ale když vlastní bot používá knihovnu Python requests nebo Go net/http, TLS fingerprint odhalí podvod bez ohledu na to, jaký user agent string je odesílán.
Detekční metoda 6: Analýza časování a chování
Skuteční uživatelé vykazují přirozenou variabilitu v časování své interakce. Pohybují myší po křivkách, ne po přímkách. Před kliknutím se zastaví. Rolují proměnlivou rychlostí. Automatizované nástroje, i ty, které simulují lidské chování, produkují statisticky rozlišitelné vzorce — příliš konzistentní časování, dokonale lineární dráhy myši a nepřirozené rychlosti rolování.
Během samotného procesu fingerprintingu sbíráme minimální signály o chování — časování volání API, pořadí sběru signálů a odezvu určitých API prohlížeče. Tyto mikrobehaviorální signály se automatizačním nástrojům obtížně předstírají, protože závisejí na skutečném běhovém prostředí, nikoli na přepisovatelných vlastnostech.
Detekční metoda 7: Nekonzistence oprávnění a API
Skutečné prohlížeče mají konzistentní stavy oprávnění a dostupnost API. Prohlížeč, který tvrdí, že podporuje notifikace, ale nemá konstruktor Notification, nebo který hlásí konkrétní rozlišení obrazovky, ale vrací odlišné hodnoty z window.screen a CSS media queries, vykazuje nekonzistence, které naznačují manipulaci nebo emulaci.
Kontrolujeme desítky těchto bodů cross-validace a hledáme rozpory, které vznikají, když automatizační nástroje selektivně přepíší některé signály, aniž by udržely konzistenci napříč všemi souvisejícími API.
Detekční metoda 8: Detekce VM a emulace
Mnoho botích operací běží uvnitř virtuálních strojů nebo cloudových instancí. I když to samo o sobě není důkazem automatizace, ve spojení s dalšími indikátory jde o silný signál. VM detekujeme prostřednictvím řetězců WebGL rendereru, které obsahují klíčová slova spojená s VM (jako „llvmpipe“ nebo „SwiftShader“), hardwarových charakteristik, které neodpovídají spotřebitelským zařízením (přesně 2 CPU jádra a 2 GB paměti — běžné výchozí hodnoty VM), a známých rozsahů IP adres cloudových poskytovatelů.
Výhoda více metod
Každá detekční metoda má sama o sobě svá omezení — sofistikovaný provozovatel botů může obejít kteroukoli jednotlivou metodu. Ale obejít všechny metody současně a přitom udržet konzistenci cross-validace napříč všemi z nich je nákladné až za hranici únosnosti. Náklady na vývoj a údržbu bota, který projde všemi kontrolami, převyšují ekonomickou hodnotu většiny botích operací.
Téměř nulový počet falešně pozitivních výsledků
Naše detekce funguje na modelu whitelistu pro boty vyhledávačů (Googlebot, Bingbot atd.) ověřené prostřednictvím reverse DNS a na modelu více signálů pro ostatní provoz. Než provoz klasifikujeme jako automatizovaný, vyžadujeme více vzájemně potvrzujících signálů. Tento konzervativní přístup zajišťuje míru falešně pozitivních výsledků pod 0,1 % — ověřeno napříč miliardami produkčních událostí.