antibrow/antibrow

Kernel-level antidetect browser with the Playwright API you already write. Python + Node SDKs, MCP-ready, unlimited local profiles. Linux x64 + arm64, macOS Intel + Apple Silicon, Windows x64.

antibrow/antibrow – Anti‑Detect Browser SDK

What it is – A set of open‑source SDKs (Python antibrow and JavaScript anti‑detect‑browser) that let you launch a Chromium‑based browser whose device fingerprint is spoofed at the engine level. The fingerprints are taken from a real device, so all the low‑level signals (canvas, WebGL, audio, fonts, WebRTC, etc.) stay consistent. The SDK talks to the browser through the standard Playwright API, so existing automation scripts need only change how the browser is started.

Key capabilities

  • Engine‑level spoofing – no JavaScript injection; fingerprint is generated inside Chromium’s C++ layer.
  • Coherent profiles – >30 categories, 500+ parameters sampled from a single real machine; profiles can emulate Android phones on a desktop.
  • Proxy‑aware – timezone, locale and WebRTC data follow the exit IP; proxy authentication is handled by the engine.
  • Encrypted relay – optional relay:// proxy that tunnels traffic over a single WebSocket encrypted with AES‑256‑GCM, avoiding detectable proxy‑protocol handshakes.
  • Persistent state – cookies, storage, and passkeys survive restarts; profiles can be exported/imported as a single .fpprofile file.
  • MCP server mode – lets an AI agent drive a profile directly via a server‑style interface.
  • Recipes – ready‑made site‑specific adapters (e.g., reddit/hot, google/search) that return structured JSON instead of raw HTML, with built‑in concurrency and host whitelisting.

Typical usage

from antibrow import launch
browser = launch()               # downloads engine on first run
page = browser.new_page()
page.goto('https://example.com')
browser.close()
import { openProfile } from 'anti-detect-browser'
const session = await openProfile({key: process.env.ANTI_DETECT_BROWSER_KEY, profileName: 'default'})
const page = await session.context.newPage()
await page.goto('https://example.com')
await session.close()

Both languages share the same on‑disk profile format, so a profile created in Python can be used in JavaScript and vice‑versa.

Who might need it – Developers building web‑scraping, automation, or testing pipelines that must evade sophisticated anti‑bot detections (e.g., Cloudflare, PerimeterX). It is also useful for AI agents that need to browse the web while preserving a consistent identity.

Licensing – The SDK code is MIT‑licensed. The underlying browser engine is a closed‑source binary with a separate commercial license; redistribution is prohibited, but the binary is downloaded automatically by the SDK.

Links – Website, Docs, Encrypted‑relay repo, Recipes repo.

Related

  • Project
  • Project
  • Project
  • Project