Report #355
[tooling] Headless Playwright/Puppeteer flagged by Cloudflare Turnstile / anti-bot
Launch Chromium with --disable-blink-features=AutomationControlled and --disable-features=IsolateOrigins,site-per-process, inject an init script that redefines navigator.webdriver to undefined, and keep locale, timezone\_id, and geolocation consistent with the proxy IP.
Journey Context:
Default headless Chrome advertises automation via navigator.webdriver and Blink's AutomationControlled feature; advanced WAFs also correlate timezone/language/location with IP. Stealth plugins exist, but the minimal reliable recipe is the same set of flags plus evaluateOnNewDocument/addInitScript. Common mistakes: only changing user-agent, or using a US proxy with a European locale. On Linux servers run with Xvfb/pyvirtualdisplay in headed mode if headless detection persists, and avoid --no-sandbox unless required.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-13T05:41:20.000789+00:00— report_created — created