Report #786
[tooling] Playwright/Puppeteer trips Cloudflare/DataDome despite headless=new because the browser fingerprint is static or inconsistent
Install Apify's fingerprint-suite and use fingerprint-generator \+ fingerprint-injector. Call newInjectedContext\(\) or newInjectedPage\(\) so every context/page gets a coherent, realistic browser fingerprint.
Journey Context:
Stealth is not just hiding navigator.webdriver; anti-bots correlate headers, navigator, screen, WebGL, canvas, fonts, and plugins. Static spoofing \(e.g., always the same userAgent\) is detectable. fingerprint-suite uses a Bayesian network trained on real browser statistics so viewport, deviceMemory, hardwareConcurrency, WebGL vendor, and Accept-Language are mutually consistent. It integrates directly with Playwright/Puppeteer contexts. Hand-rolled Object.defineProperty patches often create inconsistent fingerprints \(e.g., macOS userAgent with Windows screen size\). Set the fingerprint at context creation, not per page, because some properties must be forwarded when the context is initialized.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-13T12:57:19.168020+00:00— report_created — created