Upptäcka headless-webbläsare: Playwright, Puppeteer och därutöver
Vår Bot Detection-motor identifierar 15+ automationsramverk genom signalinkonsekvenser, saknade API:er och beteendemönster som bottar inte kan förfalska.
Headless-webbläsare är det föredragna vapnet för avancerad web scraping, credential stuffing och bedrägerioperationer. Till skillnad från enkla HTTP-klienter kör headless-webbläsare JavaScript, renderar sidor och stöder moderna webb-API:er — vilket gör dem mycket svårare att upptäcka. Vår Bot Detection-motor använder flera oberoende detekteringsmetoder för att identifiera 15+ automationsramverk med nära noll falska positiva.
Webbläsarautomatiseringens utveckling
Webbläsarautomatisering har kommit långt sedan enkla curl-skript. Moderna verktyg som Playwright, Puppeteer och Selenium WebDriver styr riktiga webbläsarmotorer — Chromium, Firefox eller WebKit — i headless-läge. De kör JavaScript, bearbetar CSS, renderar canvas-element och hanterar WebGL-frågor precis som webbläsare med gränssnitt. Detta gör dem osynliga för detekteringsmetoder som bara kontrollerar förmågan att köra JavaScript.
Den senaste generationen av verktyg har gått ännu längre. Playwrights stealth-läge patchar många av de signaler som traditionell bot detection förlitar sig på. Puppeteer-extra-plugin-stealth modifierar navigator-egenskaper, åsidosätter WebGL-vendorsträngar och förfalskar användarinteraktionshändelser. Dessa antidetekteringsåtgärder har skapat en kapprustning mellan bottoperatörer och detekteringssystem.
Detekteringsmetod 1: Analys av WebDriver-flaggan
Egenskapen navigator.webdriver sätts till true när en webbläsare styrs av automation. Tidig detektering var så enkel som att kontrollera denna egenskap. Men moderna stealth-verktyg tar bort eller åsidosätter den. Vår detektering går djupare — vi kontrollerar inte bara egenskapens värde utan även dess property descriptor, dess närvaro i prototypkedjan och huruvida försök har gjorts att omdefiniera den. Vi kontrollerar även relaterade egenskaper som anomalier i längden på navigator.plugins som åtföljer WebDriver-åsidosättanden.
Detekteringsmetod 2: Artefakter från Chrome DevTools Protocol
Playwright och Puppeteer styr webbläsare via Chrome DevTools Protocol (CDP). Även när stealth-läget är aktivt lämnar CDP artefakter i runtime: specifika globala variabler, modifierade getter-funktioner och ändrade property descriptors på Window- och Navigator-objekten. Vi undersöker dessa artefakter med tekniker som är motståndskraftiga mot enkla överskrivningar.
Detekteringsmetod 3: Fingerprinting av headless-webbläsare
Headless Chrome har en annan uppsättning förmågor än Chrome med gränssnitt. Den saknar vissa webbläsarplugins, har andra renderingsegenskaper för vissa CSS-egenskaper och rapporterar andra värden för vissa MediaQuery-resultat. Vi upprätthåller en databas över kända egenskaper hos headless-webbläsare och jämför inkommande fingeravtryck mot den.
Viktiga headless-indikatorer inkluderar: saknad chrome.runtime (närvarande i Chrome med gränssnitt men frånvarande i headless), en navigator.plugins-array med längden noll, specifika user agent-mönster som har förknippats med headless-läge i tidigare versioner, och skillnader i hur headless Chrome hanterar iframe-säkerhetskontexter.
Detekteringsmetod 4: Eval-längdanalys
Olika JavaScript-motorer har olika implementeringar av inbyggda funktioner, och dessa implementeringar har olika strängrepresentationer. Genom att kontrollera längden på Function.prototype.toString.call(eval) och jämföra den mot kända värden för varje webbläsarmotor kan vi upptäcka miljöförfalskning — till exempel en headless Chrome-instans som utger sig för att vara Firefox.
Detekteringsmetod 5: TLS-korsvalidering
Som diskuterades i vår artikel om TLS-fingerprinting avslöjar TLS Client Hello-meddelandet den faktiska webbläsaren eller HTTP-biblioteket som upprättar anslutningen. När ett Playwright-skript styr Chrome matchar TLS-fingeravtrycket Chrome — detta är förväntat. Men när en anpassad bot använder ett Python requests-bibliotek eller Gos net/http avslöjar TLS-fingeravtrycket bedrägeriet oavsett vilken user agent-sträng som skickas.
Detekteringsmetod 6: Tids- och beteendeanalys
Riktiga användare uppvisar naturlig variation i sin interaktionstiming. De rör musen i kurvor, inte raka linjer. De pausar innan de klickar. De skrollar med varierande hastighet. Automatiserade verktyg, även de som simulerar mänskligt beteende, producerar statistiskt urskiljbara mönster — alltför konsekvent timing, perfekt linjära musbanor och onaturliga skrollhastigheter.
Vi samlar in minimala beteendesignaler under själva fingerprinting-processen — timingen för API-anrop, ordningen på signalinsamlingen och responsiviteten hos vissa webbläsar-API:er. Dessa mikrobeteendesignaler är svåra för automationsverktyg att förfalska eftersom de beror på den faktiska exekveringsmiljön, inte på egenskaper som kan åsidosättas.
Detekteringsmetod 7: Behörighets- och API-inkonsekvens
Riktiga webbläsare har konsekventa behörighetstillstånd och API-tillgänglighet. En webbläsare som påstår sig stödja aviseringar men saknar en Notification-konstruktor, eller som rapporterar en viss skärmupplösning men returnerar andra värden från window.screen och CSS-mediefrågor, uppvisar inkonsekvenser som tyder på manipulation eller emulering.
Vi kontrollerar dussintals av dessa korsvalideringspunkter och letar efter motsägelser som uppstår när automationsverktyg selektivt åsidosätter vissa signaler utan att upprätthålla konsekvens över alla relaterade API:er.
Detekteringsmetod 8: Detektering av VM och emulering
Många bottoperationer körs inuti virtuella maskiner eller molninstanser. Även om detta i sig inte är bevis på automation är det en stark signal i kombination med andra indikatorer. Vi upptäcker VM:er genom WebGL-renderersträngar som innehåller VM-associerade nyckelord (som ”llvmpipe” eller ”SwiftShader”), hårdvaruegenskaper som är oförenliga med konsumentenheter (exakt 2 CPU-kärnor och 2 GB minne — vanliga VM-standardvärden), och kända IP-intervall för molnleverantörer.
Flermetodsfördelen
Varje detekteringsmetod har individuellt sina begränsningar — en avancerad bottoperatör kan undgå vilken enskild metod som helst. Men att undgå alla metoder samtidigt, samtidigt som korsvalideringens konsekvens upprätthålls över dem alla, är oöverkomligt dyrt. Kostnaden för att utveckla och underhålla en bot som klarar alla kontroller överstiger det ekonomiska värdet av de flesta bottoperationer.
Nära noll falska positiva
Vår detektering bygger på en vitlistmodell för sökmotorbottar (Googlebot, Bingbot m.fl.) verifierade via reverse DNS, och en flersignalsmodell för övrig trafik. Vi kräver flera bekräftande signaler innan trafik klassificeras som automatiserad. Detta konservativa tillvägagångssätt säkerställer en andel falska positiva under 0,1 % — verifierat över miljarder produktionshändelser.