anti-bot

Headless Browser Detection

Headless browser detection is the set of JavaScript checks anti-bot systems use to identify browsers running without a graphical display, which are strong bot indicators.

Headless browsers expose subtle differences from headed browsers. Classic detection checks include: `navigator.webdriver === true` (set by WebDriver protocol automation), missing `window.chrome` object properties present in real Chrome, `navigator.plugins.length === 0` (no browser plugins installed in headless mode), unusual screen dimensions or zero-size window, and inconsistent rendering of canvas or WebGL operations due to the absence of a GPU.

Modern anti-bot systems have moved beyond simple property checks to behavioural and runtime-environment analysis: they measure JavaScript performance timing patterns, probe the browser's event loop scheduling, and verify that GPU-rendered graphics produce pixel-accurate output consistent with a real graphics driver.

Stealth libraries (puppeteer-extra-plugin-stealth, Playwright's built-in stealth mode, undetected-chromedriver) patch these detection vectors by overriding navigator properties, spoofing plugin lists, adding realistic WebGL rendering, and removing WebDriver traces from the JavaScript environment.

What is Headless Browser Detection?

Headless browser detection is the set of JavaScript checks anti-bot systems use to identify browsers running without a graphical display, which are strong bot indicators.

How does AlterLab handle Headless Browser Detection?

Stealth libraries (puppeteer-extra-plugin-stealth, Playwright's built-in stealth mode, undetected-chromedriver) patch these detection vectors by overriding navigator properties, spoofing plugin lists, adding realistic WebGL rendering, and removing WebDriver traces from the JavaScript environment.

Examples

// Check if your headless browser is detectable
// Run this in the browser console (or via page.evaluate):
console.log({
  webdriver: navigator.webdriver,
  plugins: navigator.plugins.length,
  languages: navigator.languages,
  chrome: typeof window.chrome,
});
// A real Chrome browser: webdriver: false, plugins: 3+, languages: ["en-US",...]

Related Terms

Extract Headless Browser Detection data from any website

AlterLab returns clean, structured data from any public URL — no scraper infrastructure needed. Start free, no credit card required.

View API docs

Your first scrape.
Sixty seconds.

$1 free credit — up to 5,000 scrapes. No credit card.Just a POST request.

terminal
curl -X POST https://api.alterlab.io/v1/scrape \
-H "X-API-Key: YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"url": "https://example.com", "formats": ["markdown"]}'

No credit card required · $1 free credit, up to 5,000 scrapes · Balance never expires