JSPM

  • Created
  • Published
  • Downloads 6097
  • Score
    100M100P100Q121694F
  • License MIT

Stealth Chromium that passes every bot detection test. Drop-in Playwright/Puppeteer replacement with source-level fingerprint patches.

Package Exports

  • cloakbrowser
  • cloakbrowser/puppeteer

Readme

CloakBrowser

CloakBrowser

npm License

Stealth Chromium that passes every bot detection test.

Drop-in Playwright/Puppeteer replacement. Same API — just swap the import. Scores 0.9 on reCAPTCHA v3, passes Cloudflare Turnstile, and clears 14/14 stealth detection tests.

  • 🔒 16 source-level C++ patches — not JS injection, not config flags
  • 🎯 0.9 reCAPTCHA v3 score — human-level, server-verified
  • ☁️ Passes Cloudflare Turnstile, FingerprintJS, BrowserScan — 14/14 tests
  • 🔄 Drop-in replacement — works with both Playwright and Puppeteer
  • 📦 npm install cloakbrowser — binary auto-downloads, zero config

Install

# With Playwright
npm install cloakbrowser playwright-core

# With Puppeteer
npm install cloakbrowser puppeteer-core

On first launch, the stealth Chromium binary auto-downloads (200MB, cached at `/.cloakbrowser/`).

Usage

Playwright (default)

import { launch } from 'cloakbrowser';

const browser = await launch();
const page = await browser.newPage();
await page.goto('https://protected-site.com');
console.log(await page.title());
await browser.close();

Puppeteer

Note: Playwright is recommended for sites with reCAPTCHA Enterprise. Puppeteer's CDP protocol leaks automation signals that reCAPTCHA Enterprise can detect. This is a known Puppeteer limitation, not specific to CloakBrowser.

import { launch } from 'cloakbrowser/puppeteer';

const browser = await launch();
const page = await browser.newPage();
await page.goto('https://protected-site.com');
console.log(await page.title());
await browser.close();

Options

import { launch, launchContext } from 'cloakbrowser';

// With proxy
const browser = await launch({
  proxy: 'http://user:pass@proxy:8080',
});

// Headed mode (visible browser window)
const browser = await launch({ headless: false });

// Extra Chrome args
const browser = await launch({
  args: ['--window-size=1920,1080'],
});

// Browser + context in one call
const context = await launchContext({
  userAgent: 'Custom UA',
  viewport: { width: 1920, height: 1080 },
  locale: 'en-US',
  timezoneId: 'America/New_York',
});

Utilities

import { ensureBinary, clearCache, binaryInfo, checkForUpdate } from 'cloakbrowser';

// Pre-download binary (e.g., during Docker build)
await ensureBinary();

// Check installation
console.log(binaryInfo());

// Force re-download
clearCache();

// Manually check for newer Chromium version
const newVersion = await checkForUpdate();
if (newVersion) console.log(`Updated to ${newVersion}`);

Test Results

Detection Service Stock Browser CloakBrowser
reCAPTCHA v3 0.1 (bot) 0.9 (human)
Cloudflare Turnstile FAIL PASS
FingerprintJS DETECTED PASS
BrowserScan DETECTED NORMAL (4/4)
bot.incolumitas.com 13 fails 1 fail
navigator.webdriver true false

Configuration

Env Variable Default Description
CLOAKBROWSER_BINARY_PATH Skip download, use a local Chromium binary
CLOAKBROWSER_CACHE_DIR ~/.cloakbrowser Binary cache directory
CLOAKBROWSER_DOWNLOAD_URL GitHub Releases Custom download URL
CLOAKBROWSER_AUTO_UPDATE true Set to false to disable background update checks

Migrate From Playwright

- import { chromium } from 'playwright';
- const browser = await chromium.launch();
+ import { launch } from 'cloakbrowser';
+ const browser = await launch();

const page = await browser.newPage();
// ... rest of your code works unchanged

Platforms

CloakBrowser is in active development. Pre-built binaries are currently Linux-only. macOS and Windows builds are coming soon.

Platform Status
Linux x86_64 ✅ Available
macOS arm64 (Apple Silicon) Coming soon
macOS x86_64 (Intel) Coming soon
Windows Planned

On macOS/Windows? You can still use CloakBrowser via Docker or with your own Chromium binary by setting CLOAKBROWSER_BINARY_PATH=/path/to/chrome.

Requirements

  • Node.js >= 18
  • One of: playwright-core >= 1.40 or puppeteer-core >= 21

License

MIT — see LICENSE.