Anti-Detect Browser
Launch and manage anti-detect browsers with unique real-device fingerprints for multi-account operations, web scraping, ad verification, and AI agent automation. Use when the user needs to run multiple browser sessions with distinct identities, manage persistent browser profiles, automate tasks across accounts, or build agentic workflows that require browser fingerprint isolation. Also use when the user mentions antibrow, anti-detect browser, fingerprint browser, or multi-account browser.
Anti-Detect Browser โ The First Fingerprint Browser Built for AI Agents
Launch Chromium with real-device fingerprints via standard Playwright APIs. Each browser gets a unique, consistent digital identity from 500+ parameters across 30+ categories (Canvas, WebGL, Audio, Fonts, WebRTC, WebGPUโฆ) โ collected from actual devices, not synthetic.
What makes it different:
- ๐ค Agent-first design โ MCP server mode lets AI agents launch, navigate, screenshot, and interact with fingerprint browsers through tool calls. The first anti-detect browser built for agentic workflows.
- ๐๏ธ Live View โ Watch headless browsers in real time from the dashboard. Debug AI agent actions, share URLs with teammates, observe automation as it happens.
- ๐ญ Real fingerprints, not random noise โ Every fingerprint comes from an actual device. Internally consistent across all browser APIs, passing even advanced anti-bot checks.
- ๐ Zero learning curve โ Standard Playwright API. Drop in
anti-detect-browserand your existing scripts work with fingerprint protection.
Links: npm: anti-detect-browser ยท Dashboard: https://antibrow.com ยท API: https://antibrow.com/api/v1/ ยท Docs: https://antibrow.com/docs
Setup
npm install anti-detect-browser
npx playwright install chromium
npx playwright install-deps chromium # Linux: system libs
Quick Start
import { AntiDetectBrowser } from 'anti-detect-browser'
const ab = new AntiDetectBrowser({ key: 'your-api-key' })
const { browser, page } = await ab.launch({
fingerprint: { tags: ['Windows 10', 'Chrome'] },
profile: 'my-account-01',
proxy: 'http://user:pass@host:port', // optional
})
await page.goto('https://example.com') // standard Playwright from here
await browser.close() // auto-syncs cookies & storage to cloud
Profiles โ Persistent Browser Identities
Profiles save cookies, localStorage, and session data to the cloud. Same profile name = same logged-in state next time, even across machines.
// First launch โ login
const { browser, page } = await ab.launch({ profile: 'shop-01' })
await page.goto('https://shop.example.com/login')
// ... login ...
await browser.close()
// Later โ already logged in, session restored from cloud
const { page: p2 } = await ab.launch({ profile: 'shop-01' })
await p2.goto('https://shop.example.com/dashboard')
Fingerprint Tags
Filter by: Microsoft Windows, Apple Mac, Android, Linux, iPad, iPhone, Edge, Chrome, Safari, Firefox, Desktop, Mobile, Windows 7, Windows 8, Windows 10
await ab.launch({ fingerprint: { tags: ['Apple Mac', 'Safari'] } })
await ab.launch({ fingerprint: { tags: ['Android', 'Mobile', 'Chrome'] } })
await ab.launch({ fingerprint: { tags: ['Windows 10', 'Chrome'], minBrowserVersion: 130 } })
Live View โ Watch Headless Browsers in Real Time
Stream any headless session to the antibrow.com dashboard. Share the URL โ anyone can watch the browser screen live. Perfect for debugging AI agent actions or team monitoring.
const { page, liveView } = await ab.launch({
headless: true,
liveView: true,
profile: 'price-monitor',
fingerprint: { tags: ['Windows 10', 'Chrome'] },
})
console.log('Watch live:', liveView.viewUrl)
Visual Identification
Run many browsers at once โ each gets a floating label, title prefix, and colored border:
await ab.launch({ profile: 'twitter-main', label: '@myhandle', color: '#e74c3c' })
await ab.launch({ profile: 'twitter-alt', label: '@support', color: '#3498db' })
Inject into Existing Playwright
Already have Playwright scripts? Add fingerprints without rewriting:
import { chromium } from 'playwright'
import { applyFingerprint } from 'anti-detect-browser'
const browser = await chromium.launch()
const context = await browser.newContext()
await applyFingerprint(context, {
key: 'your-api-key',
fingerprint: { tags: ['Windows 10', 'Chrome'] },
profile: 'my-profile',
})
const page = await context.newPage()
MCP Server โ AI Agent Browser Control
The first anti-detect browser with native MCP support. AI agents (Claude, GPT, etc.) can launch and control fingerprint browsers through tool calls.
{
"mcpServers": {
"anti-detect-browser": {
"command": "npx",
"args": ["anti-detect-browser", "--mcp"],
"env": { "ANTI_DETECT_BROWSER_KEY": "your-api-key" }
}
}
}
mcporter setup:
mcporter config add anti-detect-browser \
--command 'npx anti-detect-browser --mcp' \
--env ANTI_DETECT_BROWSER_KEY=your-key
MCP Tools
| Tool | Purpose |
|---|---|
launch_browser | Start fingerprint browser (profile, tags, proxy, headless) |
close_browser | Close session by ID |
navigate | Go to URL |
screenshot | Capture page screenshot |
click / fill | Interact with elements by CSS selector |
evaluate | Run JavaScript on page |
get_content | Extract text from page or element |
start_live_view / stop_live_view | Stream browser screen to dashboard |
list_sessions | List running browsers |
list_profiles / create_profile / delete_profile | Manage profiles |
โ ๏ธ MCP session note: stdio transport spawns a new process per call. For multi-step workflows (launch โ navigate โ screenshot), use SDK scripts or configure a persistent MCP transport.
REST API
Base: https://antibrow.com/api/v1/ โ all endpoints require Authorization: Bearer <api-key>.
Profiles:
GET /profiles # List all
POST /profiles # Create (body: {"name":"x","tags":["Windows 10","Chrome"]})
GET /profiles/:name # Get details + dataUrl for fingerprint download
DELETE /profiles/:name # Delete
POST response includes dataUrl โ a presigned URL (10 min) to the full fingerprint JSON (~9MB).
Fingerprints:
GET /fingerprints/fetch # Fetch matching fingerprint (query: tags, minBrowserVersion, etc.)
GET /fingerprints/versions # Available browser versions
Workflow Examples
Multi-Account Management
const accounts = [
{ profile: 'twitter-1', label: '@brand', color: '#1DA1F2' },
{ profile: 'twitter-2', label: '@support', color: '#FF6B35' },
{ profile: 'twitter-3', label: '@personal', color: '#6C5CE7' },
]
for (const acct of accounts) {
const { page } = await ab.launch({
fingerprint: { tags: ['Windows 10', 'Chrome'] },
proxy: getNextProxy(),
...acct,
})
await page.goto('https://twitter.com')
}
Scraping with Fingerprint Rotation
for (const url of urlsToScrape) {
const { browser, page } = await ab.launch({
fingerprint: { tags: ['Desktop', 'Chrome'], minBrowserVersion: 125 },
proxy: rotateProxy(),
})
await page.goto(url)
const data = await page.evaluate(() => document.body.innerText)
saveData(url, data)
await browser.close()
}
AI Agent + Live View Monitoring
const { page, liveView } = await ab.launch({
headless: true, liveView: true,
profile: 'price-monitor',
fingerprint: { tags: ['Windows 10', 'Chrome'] },
})
console.log('Dashboard:', liveView.viewUrl) // share with team
// Agent monitors prices, team watches live
Known Limitations
- WebGL on GPU-less servers โ Reports SwiftShader renderer. Not an SDK issue; hardware limitation of headless environments.
- Free tier โ 2 browser profiles. Upgrade at https://antibrow.com for more.