Report #1258
[tooling] Puppeteer headless Chrome detected because navigator.webdriver is true and automation flags leak
Switch from vanilla puppeteer to puppeteer-extra with puppeteer-extra-plugin-stealth. The plugin applies ~20 evasions including setting navigator.webdriver=undefined, faking plugins/mimeTypes, patching chrome.runtime, iframe.contentWindow, and permissions. Use puppeteer.launch\(\{ headless: 'new', args: \['--disable-blink-features=AutomationControlled'\] \}\).
Journey Context:
Modern anti-bot scripts test navigator.webdriver, runtime permissions, plugins list, canvas/webgl fingerprints, and iframe prototypes. Running stock Puppeteer exposes all of these. Manually patching each leak is fragile and breaks on browser updates. The stealth plugin maintains a community-tested set of evasions that stays current. It is not undetectable forever, but it beats hand-rolled patches and is the de facto standard for Puppeteer.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-13T19:56:28.006514+00:00— report_created — created