Stealth Chromium that passes every bot detection test

Drop-in Playwright replacement with source-level fingerprint patches. 30/30 tests passed.

CloakBrowser
22,053
Stars
1,762
Forks
103
Subscribers
94
Open Issues
PyPI npm License Last Commit
Stars PyPI Downloads npm Downloads Docker Pulls
Support on Ko-fi

Why CloakBrowser?

58 source-level C++ patches

Canvas, WebGL, audio, fonts, GPU, screen, WebRTC, network timing, automation signals, CDP input behavior

humanize=True

Human-like mouse curves, keyboard timing, and scroll patterns. One flag, behavioral detection passes

0.9 reCAPTCHA v3 score

Human-level, server-verified. Passes Cloudflare Turnstile, FingerprintJS, BrowserScan — tested against 30+ detection sites

Drop-in replacement

Same API as Playwright/Puppeteer. Just swap the import. 3 lines of code, 30 seconds to unblock

Auto-updating binary

Background update checks, always on the latest stealth build. No manual updates needed

Free and open source

No subscriptions, no usage limits. MIT license. Just pip install cloakbrowser or npm install cloakbrowser

Test Results

All tests verified against live detection services. Last tested: Apr 2026 (Chromium 146)

Detection Service Stock Playwright CloakBrowser Notes
reCAPTCHA v3 0.1 (bot) 0.9 (human) Server-side verified
Cloudflare Turnstile (non-interactive) FAIL PASS Auto-resolve
Cloudflare Turnstile (managed) FAIL PASS Single click
ShieldSquare BLOCKED PASS Production site
FingerprintJS bot detection DETECTED PASS demo.fingerprint.com
BrowserScan bot detection DETECTED NORMAL (4/4) browserscan.net
bot.incolumitas.com 13 fails 1 fail WEBDRIVER spec only
deviceandbrowserinfo.com 6 true flags 0 true flags isBot: false
navigator.webdriver true false Source-level patch
navigator.plugins.length 0 5 Real plugin list
window.chrome undefined object Present like real Chrome
UA string HeadlessChrome Chrome/146.0.0.0 No headless leak
reCAPTCHA v3 — Score 0.9

reCAPTCHA v3 score 0.9 — server-side verified (human-level)

Cloudflare Turnstile — Success

Cloudflare Turnstile non-interactive challenge — auto-resolved

BrowserScan — Normal

BrowserScan bot detection — NORMAL (4/4 checks passed)

FingerprintJS — Passed

FingerprintJS web-scraping demo — data served, not blocked

deviceandbrowserinfo.com — You are human!

deviceandbrowserinfo.com behavioral bot detection — "You are human!" with humanize=True (24/24 signals passed)

Comparison

Feature Playwright playwright-stealth undetected-chromedriver Camoufox CloakBrowser
reCAPTCHA v3 score 0.1 0.3-0.5 0.3-0.7 0.7-0.9 0.9
Cloudflare Turnstile Fail Sometimes Sometimes Pass Pass
Patch level None JS injection Config patches C++ (Firefox) C++ (Chromium)
Survives Chrome updates N/A Breaks often Breaks often Yes Yes
Maintained Yes Stale Stale Unstable Active
Browser engine Chromium Chromium Chrome Firefox Chromium
Playwright API Native Native No (Selenium) No Native

How It Works

1

You install

pip install cloakbrowser or npm install cloakbrowser

2

First launch

Binary auto-downloads for your platform (Chromium 146)

3

Every launch

Playwright or Puppeteer starts with our binary + stealth args

4

You write code

Standard Playwright/Puppeteer API, nothing new to learn

Cloudflare Turnstile — 3 Tests Passing

Cloudflare Turnstile — 3 live tests passing (headed mode, macOS)

API Examples

Python

# Basic — headless, default stealth config
from cloakbrowser import launch
browser = launch()

# Headed mode (see the browser window)
browser = launch(headless=False)

# With proxy (HTTP or SOCKS5)
browser = launch(proxy="http://user:pass@proxy:8080")
browser = launch(proxy="socks5://user:pass@proxy:1080")

# With human-like behavior
browser = launch(humanize=True)

# Auto-detect timezone/locale from proxy IP
browser = launch(proxy="http://proxy:8080", geoip=True)

# Persistent profile (cookies, localStorage survive restarts)
from cloakbrowser import launch_persistent_context
ctx = launch_persistent_context("./my-profile")

JavaScript / Node.js

// With Playwright
import { launch } from 'cloakbrowser';
const browser = await launch({
  headless: false,
  proxy: 'http://user:pass@proxy:8080',
  geoip: true,
  humanize: true,
});

// With Puppeteer
import { launch } from 'cloakbrowser/puppeteer';
const browser = await launch({ headless: true });

Quick Test - No Install Needed

# Docker
docker run --rm cloakhq/cloakbrowser cloaktest

# Python
from cloakbrowser import launch
browser = launch()
page = browser.new_page()
page.goto("https://example.com")
browser.close()

# JavaScript
import { launch } from 'cloakbrowser';
const browser = await launch();
const page = await browser.newPage();
await page.goto("https://example.com");
await browser.close();