Stop getting
blocked by
Cloudflare.
Headless Chromium is trivially detected in 2026. Cloudflare, DataDome, and Kasada all fingerprint it. Camoufox — a hardened Firefox fork — has a completely different fingerprint surface. Spectrae hosts it. One line change in your Playwright script.
Stealth browser at $0.05/min. No local browser. No stealth plugins. No maintenance.
Firefox
Engine
Stealth
Fingerprint
$0.05/min
Per Minute
< 1s
Session Start
One line.
Fewer 403s.
Replace chromium.launch() with a single firefox.connect() call pointing at Spectrae's Camoufox endpoint. Your page interactions, selectors, and assertions stay exactly the same.
Before — gets blocked
import asyncio from playwright.async_api import async_playwright async def scrape(): async with async_playwright() as p: # Standard headless Chromium # Gets blocked by Cloudflare, DataDome, Kasada browser = await p.chromium.launch(headless=True) page = await browser.new_page() await page.goto("https://protected-site.com") # Result: 403 / CAPTCHA / JS challenge ❌ asyncio.run(scrape())
After — stealth
import asyncio from playwright.async_api import async_playwright async def scrape(): async with async_playwright() as p: # Stealth browser — powered by Camoufox # Real Firefox fingerprint surface for harder-to-automate sites browser = await p.firefox.connect( "wss://browser.spectrae.dev/stealth/playwright?key=YOUR_KEY" ) page = await browser.new_page() await page.goto("https://protected-site.com") # Result: page loads normally ✓ asyncio.run(scrape())
Node.js — before
import { chromium } from "playwright"; // Before: headless Chromium — gets flagged const browser = await chromium.launch({ headless: true }); const page = await browser.newPage(); await page.goto("https://cloudflare-protected.com"); // 403 or Turnstile challenge
Node.js — after
import { firefox } from "playwright"; // After: Camoufox stealth via Spectrae — different fingerprint surface const browser = await firefox.connect( "wss://browser.spectrae.dev/stealth/playwright?key=YOUR_KEY" ); const page = await browser.newPage(); await page.goto("https://cloudflare-protected.com"); // Page loads ✓
Chromium vs Camoufox.
Multiple detection layers.
Anti-bot systems check multiple independent signals simultaneously. Patching one signal on Chromium leaves the others exposed. Camoufox replaces the entire engine — every signal is different by default.
| Detection Layer | Headless Chromium | Camoufox (Spectrae) |
|---|---|---|
| TLS fingerprint | Chromium JA3/JA4 — widely blocked | Firefox TLS profile — different surface |
| Canvas fingerprint | Deterministic headless signature | Randomised per session |
| WebGL | Exposed GPU strings | Masked hardware identifiers |
| Navigator API | headless=true signals exposed | Real browser navigator values |
| Browser engine | Chromium — most-fingerprinted engine | Gecko/Firefox — different surface |
| Cloudflare Turnstile | Blocked in headless mode | Passes with real Firefox signals |
Managed Camoufox.
No ops work.
Sign up and get an API key
Create an account at spectrae.dev. You get $1 free credit to test with.
Swap the endpoint in your script
Change chromium.launch() to firefox.connect() with your Spectrae key. The rest of your Playwright code is unchanged.
Run — sessions start in under a second
Spectrae spins up a Camoufox instance, handles cleanup on disconnect, and bills per second with a 20-second minimum.
Migrating from Browserless?
Same wsEndpoint pattern. Swap the URL, add a Camoufox profile, keep the rest of your setup.
"wss://production-sfo.browserless.io/stealth?token=..."
"wss://browser.spectrae.dev/stealth/playwright?key=..."
Usage-based pricing
Stealth browser at $0.05/min. Standard browser at $0.003/min. Per-second billing. 20-second minimum per session. $1 free on signup.
Playwright stealth. Managed.
Your script.
Protected sites.
Free $1 credit. Usage-based billing.