Headless browser detection is a set of techniques websites use to identify browser sessions running without a visible user interface. Headless browsers are common in scraping and testing, but they also leave behind distinct technical traces.
Detection scripts check for a range of signals that differ between headless and regular browsers, such as missing window dimensions, unusual user agent strings, absent browser plugins, or inconsistent rendering behavior. Some checks look at how a headless browser responds to specific JavaScript calls that behave differently without a rendering engine attached to a visible display. Anti-bot systems often combine several of these checks together, since any single signal alone can produce false positives on legitimate but unusual browser configurations. When enough signals point to automation, the site can block the request, serve a CAPTCHA, or silently return altered content.
Treat it as a signal about how the target defends itself, not a one-time obstacle.
USER-country-de-session-task01Pairing a stable session label with a real residential exit is one of the simplest ways to reduce how often headless browser detection gets triggered in the first place. Rotate "task01" only when a deliberately fresh identity is needed.
Most modern defenses combine several signals into a score, rather than checking for one single thing.
Residential and mobile exits reduce how often this defense triggers in the first place, which is cheaper than solving it after.
Human-like pacing reduces detections tied to this concept more reliably than any single technical fix.
Anti-bot vendors update rules often -- retest this whenever a job’s success rate drops without a code change.
A price comparison site detects a headless Chrome instance through a missing window.chrome object and blocks the scraping attempt.
Headless browser detection is a major hurdle for scraping operations that rely on tools like Puppeteer or Playwright in their default configuration. Configuring a headless browser to mimic the signals of a real browser, or using tools built specifically to avoid detection, is often necessary for reliable, long-term scraping.
Most headless browsers are detectable in their default configuration, but stealth plugins and careful configuration can mask many of the common giveaway signals, making detection much harder.
Headless browsers are faster and use fewer resources than running a full visible browser, which makes them attractive for large-scale scraping and testing despite the added detection risk.
Ready to put this into practice? Read the Docs
Start a free trial and test with real targets -- no credit card, no sales call.