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.

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 balance. No credit card. No SDK.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 · Up to 5,000 free scrapes · Balance never expires

    Headless Browser Detection — Web Scraping Glossary | AlterLab