Skip to main content
Blog
Blog

AI-agenten en stealth-browsers detecteren: de signalen die ze verraden

Een signaal-voor-signaalgids voor stealth- en anti-detect-browsers: CDP- en webdriver-tells, headless-quirks, font- en WebGL-drift, en gedrag.

Jul 15, 2026 6 min read
AI-agenten en stealth-browsers detecteren: de signalen die ze verraden

Geen enkele magische header detecteert een stealth-browser. Je vangt de kleine inconsistenties die automatiserings- en fingerprint-spoofing-tooling achterlaten, en bevestigt die met gedrag door de sessie. Een moderne stealth-setup patcht de voor de hand liggende tells (navigator.webdriver, het ontbrekende window.chrome-object, headless-rendering-quirks), dus detectie moet de lagen lezen die die patches niet volledig dekken: de automation-control-surface, de interne coherentie van de fingerprint, en hoe de sessie zich gedraagt zodra hij op de pagina zit.

Dit is de how-to van de operator. Hieronder staan de concrete signaalklassen die het waard zijn te instrumenteren, wat elk vangt, en wat een goed geconfigureerde stealth-browser verslaat. cside verzamelt deze vanuit de browser-runtime, dus het doel hier is de signalen leesbaar te maken. Als je de conceptuele achtergrond wilt over wat stealth- en anti-detect-browsers zijn, lees eerst de stealth-browsers-uitleg; dit bericht gaat ervan uit dat je ze al wilt vinden.

Welke signalen verraden een stealth-browser echt?

Eén klasse alleen is niet voldoende. Sterke detectie stapelt alle vier en weegt ze naar hoe moeilijk elk te vervalsen is.

SignaalklasseWat het vangtWat goede stealth-tooling verslaat
Automation / CDP-tellsOngepatchte headless- en DevTools-gestuurde sessiesnavigator.webdriver-override, geïnjecteerd window.chrome
Headless-rendering-quirksVanilla headless ChromeHeadful Chrome gestuurd via CDP, virtuele display-servers
Fingerprint-inconsistentieGespoofde apparaten met interne mismatchesGoed gebouwde anti-detect-profielen die zelfconsistent blijven
GedragssignalenMachine-timing, input-entropie, navigatie-ritmeVertraagde, gejitterde of human-in-the-loop gescripte sessies

Automation- en CDP-tells

De goedkoopste tells komen van de automation-control-surface zelf. Kale Playwright- of Selenium-gestuurde Chrome zet navigator.webdriver op true, levert een ontbrekend of hol window.chrome-object, en toont permissions.query-gedrag dat niet overeenkomt met wat een echte Chrome teruggeeft (bijvoorbeeld notificatie-permissie die denied leest terwijl Notification.permission default zegt). Elk hiervan is een one-line read.

Stealth-libraries bestaan juist om dit uit te wissen. playwright-stealth en zijn peers overschrijven navigator.webdriver, injecteren een realistisch window.chrome, normaliseren navigator.plugins, en fixen de permissie-mismatch, en juist daarom vereist het blokkeren van Playwright-automatisering meer dan het lezen van één enkele flag. cside's 2026 web security research rapporteert dat playwright-stealth-installaties ruwweg 10x stegen door 2025, een bruikbare proxy voor hoe snel deze evasie naar mainstream tooling verhuisde (cside 2026 research).

De gepatchte flags worden bevestigend bewijs in plaats van primair bewijs. De hardere tell is de Chrome DevTools Protocol-binding onder de automatisering. CDP-gestuurde sessies kunnen lekken via bijwerkingen: het runtime-gedrag onder specifieke Runtime/Console-interacties, serialisatie-quirks in error-stacks, of timing-verschillen wanneer het protocol is gekoppeld. Die zijn veel duurder voor een operator om volledig te onderdrukken dan één boolean, omdat ze voortkomen uit hoe de browser wordt gecontroleerd, niet uit een property die ze kunnen herschrijven.

Headless-rendering en omgevings-quirks

Vanilla headless Chrome verraadt zichzelf nog steeds door de rendering- en apparaatomgeving. De klassieken: een user-agent-string die HeadlessChrome bevat, nul geïnstalleerde plugins waar een echte desktop-Chrome een kleine set rapporteert, een ontbrekend of vast-formaat outer-window, geen battery- of media-device-API's ingevuld, en subtiele verschillen in hoe fonts en afbeeldingen rasteren zonder een echt display.

In 2026 zijn de serieuze operators voorbij headless-modus. Een AI-agent kan een volledige, headful Chrome via CDP sturen op een virtueel display, wat elke headless-specifieke tell verwijdert terwijl de automatisering eronder blijft. Headless-detectie vangt de luie laag en dwingt iedereen anders een niveau omhoog, waar de fingerprint- en gedragslagen het overnemen. Dit is ook waar verouderde botdetectie-tools AI-agenten missen: ze zijn gebouwd om headless-signaturen te markeren, niet de control-surface onder een headful browser.

Fingerprint-inconsistenties: de scheuren in een gespoofd apparaat

Anti-detect-browsers vervangen fingerprint-genererende API's door synthetische waarden zodat elke sessie op een nieuw apparaat lijkt. De detecteerbare faalmodus is interne incoherentie: de gespoofde waarden stemmen niet met elkaar overeen. Profielen van lagere kwaliteit zijn waar de scheuren zichtbaar worden.

  1. Fontlijst vs. geclaimd OS. Een profiel dat macOS claimt maar Windows-only fonts opsomt (of de fonts weglaat die elke Mac levert) is gespoofd. De fontset moet matchen met het platform waar het zich voor uitgeeft.
  2. WebGL-renderer vs. plausibele hardware. Een WEBGL_debug_renderer_info-string die een GPU noemt die geen verschepend apparaat combineert met het geclaimde OS en schermprofiel is een tell. Spoofers trekken uit een bibliotheek van echte strings, maar ze coherent met al het andere paren is moeilijk.
  3. Canvas- en AudioContext-output. Anti-detect-browsers geven deterministische synthetische canvas-pixels en audio-output om hashing te verslaan. Output die statistisch onwaarschijnlijk is, te uniform, of identiek over "verschillende" sessies, flagt de synthese.
  4. Hardware-concurrency, geheugen en schermgeometrie. navigator.hardwareConcurrency, deviceMemory en scherm/viewport-dimensies die de geclaimde device-class tegenspreken (een telefoon-UA die een 32-core desktop rapporteert) breken coherentie.

Een goed gebouwd anti-detect-profiel houdt al deze consistent met elkaar, en dat is precies waarom fingerprinting alleen niet het hele antwoord kan zijn. Het verhoogt de kosten en vangt de slordige laag; gedrag sluit de rest.

Gedragssignalen: wat spoofing niet kan onderdrukken

De fingerprint-laag beschrijft het apparaat. De gedragslaag beschrijft de operator, en dat is veel moeilijker te vervalsen omdat het live geproduceerd moet worden, elke sessie. Mensen interageren onnauwkeurig: muispaden krommen en schieten door, scroll-snelheid varieert, form-fills bevatten pauzes, typefouten en correcties, en er is een meetbare kloof tussen page-ready en eerste interactie.

Geautomatiseerde sessies neigen naar het tegenovergestelde: directe form-fills zonder correctie, navigatie zonder aarzeling, scrollen op vaste intervallen, en event-timing met bijna-nul jitter. Niets daarvan wordt onderdrukt door een navigator.webdriver-override of een schone canvas-hash, omdat het voortkomt uit hoe de agent handelt, niet uit wat hij claimt te zijn. Cross-session-correlatie maakt het af. Veel sessies binnen een kort venster die structurele fingerprint-traits, gedrags-timing en post-sessie-acties delen, verraden coördinatie die geen enkele sessie alleen zou blootleggen. Voor hoe agentic-tooling specifiek probeert menselijk ritme na te bootsen, zie hoe OpenClaw-agenten botdetectie omzeilen.

Hoe signalen een beslissing worden

Detectie is alleen nuttig als het een gegradueerde reactie aandrijft. Blokkeer niet op één signaal; weeg er meerdere en acteer op convergentie.

  1. Instrumenteer alle vier signaalklassen op runtime, binnen de browsersessie.
  2. Vergelijk de geclaimde omgeving (user-agent, platform, device-class) met de geobserveerde en noteer elke mismatch.
  3. Voeg netwerkcontext toe (datacenter vs. residentieel IP, ASN, proxy- en geo-shift-gedrag) als gewicht, nooit als enig verdict.
  4. Score de sessie op convergerende onafhankelijke signalen, en behoud de rauwe signaalset, risicoreden en challenge-uitkomst als bewijs.
  5. Blokkeer high-confidence-sessies op de punten die het meest tellen, zoals registratie, waar detectie op browserniveau het aanmaken van nepaccounts vangt, en checkout. Daag medium-confidence uit met step-up-frictie, en allow-with-monitoring voor legitiem agent-verkeer.

AI Agent Detection van cside draait dit vanuit de pagina: het leest automation- en CDP-tells, legt apparaat- en echt-IP-signalen vast, brengt fingerprint-inconsistenties aan de oppervlakte, en bewaakt gedrag door de sessie, waarna teams bekende-goede automatisering kunnen toestaan, verdachte sessies kunnen uitdagen en high-risk agents kunnen blokkeren met een volledig audit-trail.

Verder lezen op cside

Simon Wijckmans
Founder & CEO

Founder and CEO of cside. Previously a product manager on Cloudflare Page Shield (now Cloudflare Client-Side Security). Co-chair of the W3C Anti-Fraud Community Group and a Forbes 30 Under 30 honoree. Building accessible security against client-side attacks — web security is not an enterprise-only problem.

FAQ

Frequently Asked Questions

Op zichzelf staand: nee. Stealth-libraries overschrijven `navigator.webdriver` zodat het `false` teruggeeft voordat je script het ooit leest, dus een schone waarde bewijst niets. Het houdt waarde als bevestigend signaal: een sessie die beweert een normale Chrome-build te zijn maar `webdriver` op true laat staan, is vrijwel zeker ongepatchte automatisering. Behandel de flag als één input onder vele, niet als een verdict.

Soms, als de operator slordig is. Een gelekte CDP `Runtime`-binding, een ontbrekend `window.chrome`-object, of een WebGL-renderer die geen echt apparaat levert, duikt op bij de eerste request. Goed geconfigureerde stealth-browsers laten geen van die tells achter op één weergave. Die vang je door fingerprint- en gedragsbewijs door de sessie te accumuleren, en te correleren met andere sessies van dezelfde operator.

Headless-detectie beantwoordt een enge vraag: is dit een browser die draait zonder zichtbare UI? AI-agent-detectie is breder. Een agent kan een volledige, headful Chrome sturen via het DevTools-protocol, dus de headless-tells ontbreken. Je detecteert de agent aan zijn automation-control-surface en zijn gedrag (directe form-fill, geen menselijke input-entropie, machine-perfecte timing), niet aan of er een venster wordt getekend.

Elk los signaal produceert false positives. Privacy-browsers spoofen fingerprints, bedrijfsproxy's delen IP's, en accessibility-tools automatiseren input. Een gradueel model (blokkeer wanneer meerdere onafhankelijke signalen convergeren, daag uit wanneer er één of twee verschijnen, allow-with-monitoring voor legitieme agent-verkeer) houdt echte klanten in beweging en stopt toch gecoördineerd misbruik.

Monitor en Beveilig Je Third-Party Scripts

Gain full visibility and control over every script delivered to your users to enhance site security and performance.

Start gratis, of probeer Business met een proefperiode van 14 dagen.

cside dashboard interface met script monitoring en beveiligingsanalytics
Related Articles
Boek een demo