A Chromium-based browser
for developers and automation.
A real Chromium binary with source-level Chromium modifications for consistent, reproducible behavior across supported platforms. Not a config tweak, not a JavaScript layer — it is a real browser.
Drop-in Playwright/Puppeteer replacement for Python and JavaScript. Same API, same code. 3 lines of code to get started.
CloakBrowser includes a free public version, with Pro subscriptions available for latest releases, updates, and support.
pip install cloakbrowser npm install cloakbrowser docker run --rm cloakhq/cloakbrowser cloaktest Start in three lines
Same Playwright/Puppeteer API you already know. Just swap the import.
from cloakbrowser import launch
browser = launch()
page = browser.new_page()
page.goto("https://example.com")
browser.close() import { launch } from 'cloakbrowser';
const browser = await launch();
const page = await browser.newPage();
await page.goto('https://example.com');
await browser.close(); import { launch } from 'cloakbrowser/puppeteer';
const browser = await launch({ headless: true });
const page = await browser.newPage();
await page.goto('https://example.com');
await browser.close(); Migrating? One line change.
- from playwright.sync_api import sync_playwright
- pw = sync_playwright().start()
- browser = pw.chromium.launch()
+ from cloakbrowser import launch
+ browser = launch()
page = browser.new_page()
page.goto("https://example.com")
# ... rest of your code works unchanged Why CloakBrowser?
Built from Chromium with source-level modifications for consistent behavior and automation compatibility.
Source-level patches
58 C++ patches compiled into the Chromium binary. Not JavaScript injection, not config flags. Canvas, WebGL, audio, fonts, and GPU behavior are handled at the browser source level for consistency and reproducibility — because it is a real browser.
Browser and driver consistency
C++ source modifications keep browser characteristics (GPU, screen, UA, hardware reporting) consistent. The driver layer is designed to keep automation behavior consistent with regular browser sessions. Most tools only do one or the other.
Drop-in replacement
Same Playwright API. Same Puppeteer API. No new abstractions, no extra services, no new SDK to learn. Change your import, keep your code.
Interaction timing controls
humanize=True adds optional interaction timing controls for testing realistic user flows. One flag, no extra code.
Works with any automation framework
Works with Playwright, Puppeteer, Selenium, and AI browser-agent workflows.
Production-ready
Docker image, timezone configuration, persistent browser profiles, Chrome extension loading, and a binary management CLI. Everything you need to deploy at scale.
CloakBrowser is a browser environment, not an automation service. It bundles no third-party solving services and no network rotation — use it within your own environment, with the Playwright API you already know.
How it works
A thin wrapper around a custom-built Chromium binary.
Install
pip install cloakbrowser or npm install cloakbrowser
First launch
Binary auto-downloads for your platform (~200MB, cached locally)
Every launch
Playwright or Puppeteer starts with our binary + launch args
Write code
Standard Playwright/Puppeteer API — nothing new to learn
58 source-level patches
Compiled into the binary — not injected via JavaScript, not set via flags.
v0.3.31 — Chromium 146
Chromium 146 on Linux and Windows, 145 on macOS. 58 source-level patches, optional interaction timing, CDP input handling, binary management CLI.
Stay in the loop
Get notified when new builds and platforms launch. No spam.