browser-automation
CloakHQ/CloakBrowser
Stealth Chromium with source-level C++ fingerprint patches — drop-in Playwright/Puppeteer replacement that passes reCAPTCHA v3, Cloudflare Turnstile, and FingerprintJS.
What it is
CloakBrowser is a pre-patched Chromium binary distributed as an npm package (cloakbrowser) and Python package (cloakbrowser), providing a stealth browser that eliminates bot-detection signals at the C++ source level rather than via JavaScript monkey-patching. Unlike playwright-stealth or undetected-chromedriver (which patch at the JS or CDP layer), CloakBrowser modifies canvas, WebGL, audio, fonts, WebRTC, GPU metadata, and CDP input events directly in the browser source. The wrapper is a thin shim: it downloads the binary (~200 MB, cached at ~/.cloakbrowser/), builds the correct Chromium flags, and returns a standard Playwright Browser or BrowserContext object. You replace one import line; everything else stays the same.
Mental model
- Binary: The stealth Chromium executable downloaded on first use. Has 48–57 source-level patches depending on platform. Auto-updates in the background unless
CLOAKBROWSER_AUTO_UPDATE=false. - Fingerprint seed: Integer passed via
--fingerprint=<seed>CLI arg. Determines deterministic, unique-but-realistic values for canvas noise, GPU model, audio rendering, etc. across all APIs. Without it, each launch gets a random seed. - Launch function: Entry point —
launch()(incognito),launchContext()(browser + context), orlaunchPersistentContext()(real user profile). Returns standard Playwright objects. - humanize: Optional wrapper around Playwright methods that replaces
click(),type(),scroll()with Bézier-curve mouse paths, per-character timing delays, and natural scroll physics. Opt-in per-call or per-session. - geoip: When
geoip=Trueand a proxy is set, downloads an offline GeoIP database and setstimezone/localeto match the proxy's exit IP. Requiresmmdb-lib(JS) orgeoip2+socksio(Python). - cloakserve: CDP multiplexer exposed on port 9222 for connecting external tools (browser-use, Stagehand, Crawlee) to a single stealth browser. Each connection gets its own fingerprint seed.