Install
openclaw skills install anti-detect-browserLaunch 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.
openclaw skills install anti-detect-browserLaunch 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:
anti-detect-browser and 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
npm install anti-detect-browser
npx playwright install chromium
npx playwright install-deps chromium # Linux: system libs
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 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')
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 } })
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)
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' })
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()
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
| 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.
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
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')
}
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()
}
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