Report #385
[tooling] Puppeteer headless browser detected after spoofing user-agent
Use puppeteer-extra with puppeteer-extra-plugin-stealth: require\('puppeteer-extra'\), call puppeteer.use\(StealthPlugin\(\)\) before launch, and verify with bot.sannysoft.com. Avoid adding --enable-automation or --disable-blink-features=AutomationControlled manually.
Journey Context:
Headless Chrome leaks navigator.webdriver, missing navigator.plugins, bare chrome.runtime, inconsistent WebGL vendor, and iframe contentWindow behavior. Manual patches usually create mismatches between JS-exposed and HTTP-layer signals. The stealth plugin injects evasions via evaluateOnNewDocument before page scripts run and keeps the patches consistent. It removes Generation-1 signals cheaply; if you still fail, suspect IP reputation, CDP runtime detection, or behavioral scoring.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-13T06:43:41.141395+00:00— report_created — created