Your AI drives a existent Chrome pinch your existent logged-in sessions — it wins the fingerprint crippled (passes bot.sannysoft pinch a genuine fingerprint), moves the rodent for illustration a human, and lands already authenticated, truthful it isn't flagged for illustration a banal headless bot. An MCP server for AI models to usage the web the measurement you do.
It doesn't dress to beryllium invisible: erstwhile a tract throws an interactive situation (reCAPTCHA, Turnstile) NeoBrowser detects it and hands power backmost pinch a real-session aliases quality way — that honesty is what makes it dependable.
Most browser devices for LLMs motorboat a fresh, fingerprintable headless browser pinch nary cookies, truthful the exemplary hits login walls and bot checks constantly. NeoBrowser drives the real Google Chrome binary and tin reuse your existent logged-in profile, truthful the exemplary lands already authenticated and looks for illustration a genuine personification — because it is one.
Rust rewrite: a azygous ~4 MB fixed binary, nary runtime to install. (The original Python implementation lives connected successful this repo arsenic a trial oracle — spot Development.)
Windows binaries are connected the Releases page. Requires Google Chrome (or Chromium); auto-discovered connected macOS/Linux/Windows, override pinch NEOBROWSER_CHROME_BIN.

Real run: login, record upload and a bot-detector cheque against unrecorded sites (~14 s).
Real output against unrecorded sites:
| Drives the real Chrome binary | ✅ | ⚠️ bundled Chromium | ⚠️ |
| Reuses your real logged-in sessions (no API keys, nary re-login) | ✅ | ❌ | ❌ |
| Stealth by default — passes bot.sannysoft pinch a genuine fingerprint | ✅ | ❌ | partial |
| Semantic constituent uncovering (accessibility character + heuristics + optional LLM) | ✅ | ❌ selectors | ✅ |
| Multi-source hunt that routes astir bot walls | ✅ | ❌ | ❌ |
| Single fixed binary, zero runtime deps | ✅ | ❌ Node + browsers | ❌ |
| Talks CDP straight (no Selenium/WebDriver) | ✅ | — | — |
- Real-session browsing — optionally decrypt + inject cookies from your existent Chrome floor plan (opt-in; macOS Keychain / Linux secret-service / Windows DPAPI). Session-identity cookies for Google/LinkedIn/Microsoft are excluded truthful your existent browser isn't logged out.
- Stealth-hardened, genuinely — existent Chrome, navigator.webdriver suppressed, real-version User-Agent matching its Client Hints, real GPU WebGL (not spoofed). The accuracy is consistency, not piling connected fakes. Verified unrecorded against bot.sannysoft.
- Bot-wall aware — navigate detects bot walls, CAPTCHAs, consent gates, rate-limits and login gates connected immoderate tract and tells the exemplary really to react.
- Multi-source search — matter (DuckDuckGo + Google), images (Bing + Google), videos (YouTube + Google): walled sources are skipped, results merged. No azygous tract is simply a difficult dependency.
- Real multi-tab — new_tab / list_tabs / switch_tab / close_tab, each sharing 1 Chrome.
- 43 tools — navigate, click, type, fill/submit forms, upload/download, read, extract tables, screenshot, scroll, console/network logs, capacity metrics, record/replay playbooks, web/image/video search, login, and more.
- Robust core — 1 isolated CDP relationship per tab (tokio), typed timeouts, self-healing betterment from dormant tabs / restarted Chrome, and nary orphaned Chrome processes.
- docs/TOOLS.md — afloat reference for each 43 devices (params + descriptions). Regenerate pinch neobrowser devices --markdown; introspect unrecorded pinch neobrowser tools.
- AGENTS.md — architecture, build/test, and conventions for contributors and AI agents.
- The MCP initialize consequence ships an instructions section truthful the exemplary gets a usage primer automatically.
A reproducible harness (bench/) drives browser devices done a shared task matrix. It includes a neutral 2-way comparison vs Playwright MCP (python3 bench/compare.py) pinch a communal furniture — thing tuned to make either win. Honest first-run findings: some walk the shared functional tasks; Playwright MCP is faster (NeoBrowser pays for forcing frames truthful deferred contented renders), while NeoBrowser adds convention persistence and first-class bot-wall detection Playwright MCP lacks. On adversarial pages both were walled equally (single IP) — nary "evades better" claim; that needs residential proxies + repeated runs. Metrics separate task_execution_success from destination_access_success truthful a detected wall never inflates the score. See bench/README.md and bench/compare.md.
Register it pinch immoderate MCP client, past inquire your exemplary to browse. Example instrumentality calls:
By default NeoBrowser runs its ain headless Chrome nether a dedicated profile. To reuse your existent logged-in sessions, group NEOBROWSER_REAL_PROFILE (see below).
Set NEOBROWSER_REAL_PROFILE to the Chrome floor plan files whose sessions you want (e.g. "Default", "Profile 1"). NeoBrowser decrypts that profile's cookies via the OS keychain and injects them, truthful the supplier starts authenticated:
Or connect to a Chrome you already person unfastened (started pinch --remote-debugging-port=9222): group NEOBROWSER_ATTACH_PORT=9222. In connect mode NeoBrowser ne'er patches aliases kills your existent browser.
Modern bot discovery (Cloudflare, DataDome, …) mostly looks for inconsistencies — a spoofed UA that doesn't lucifer Client Hints, a HeadlessChrome token, package WebGL, navigator.webdriver === true. NeoBrowser is genuinely consistent alternatively than piling connected spoofs:
- Runs the real Chrome binary (real TLS, existent fonts, existent everything).
- navigator.webdriver forced undefined; anti-throttle + attraction emulation support the headless compositor unrecorded truthful contented really renders.
- UA rewritten to the real installed Chrome version via the motorboat flag, truthful genuine Client Hints enactment consistent.
- No --disable-gpu, truthful WebGL reports the real GPU.
- JS patches for plugins, languages, and the permissions/Notification mismatch — only connected tabs NeoBrowser owns, ne'er connected an attached existent Chrome.
Beyond the fingerprint, input is behaviorally human: clicks move the cursor to the target on a multi-step way pinch human-cadence pauses (not a teleport-then-click), and typing tin beryllium per-key pinch realistic timing — the signals behavioral systems watch for.
Verified live: passes bot.sannysoft's WebDriver, Chrome, plugins and WebGL checks pinch the host's genuine fingerprint. CI installs Chrome and runs these checks against a existent browser connected each push; the afloat bot.sannysoft tally is an on-demand trial (cargo trial --test stealth_verify -- --ignored).
What nary instrumentality tin committedness is defeating interactive challenges — reCAPTCHA, Turnstile, aliases behavioral/reputation systems (DataDome) tin still put up a wall, and a caller cookie-less floor plan is itself a signal. NeoBrowser's separator location is simply a lukewarm existent floor plan positive detecting the wall (navigate flags it) truthful the exemplary reacts alternatively of hammering it.
| NEOBROWSER_REAL_PROFILE | (unset) | Real Chrome floor plan files to propulsion sessions from |
| NEOBROWSER_PROFILE | default | Which Ghost floor plan this convention uses. Chrome locks a floor plan exclusively, truthful springiness concurrent sessions different names to support them from colliding |
| NEOBROWSER_ATTACH_PORT | (unset) | Attach to an already-running Chrome connected this debug port |
| NEOBROWSER_CHROME_BIN | (auto) | Path to the Chrome/Chromium binary |
| NEOBROWSER_HOME | ~/.neobrowser | Where profiles, cookies, sessions, playbooks, downloads live |
| NEOBROWSER_PROXY | (unset) | Upstream proxy (http://… aliases socks5://…) |
| NEOBROWSER_DISABLE_GPU | (unset) | Force package rendering (GPU-less CI hosts only) |
| ANTHROPIC_API_KEY | (unset) | Enables the optional LLM fallback successful find (your key, your cost; disconnected by default) |
Security & responsible use
Real-session mode sounds cookies from your Chrome floor plan and injects them into an automated browser. Treat it for illustration immoderate credential:
- It is opt-in — thing touches your existent floor plan unless you group NEOBROWSER_REAL_PROFILE.
- Cookie/session files are written nether ~/.neobrowser pinch 0600 permissions.
- Server-side fetches (browse, download) are SSRF-guarded to nationalist http(s) only.
- The login instrumentality refuses non-https URLs and ne'er logs credentials.
- Anything an AI browses pinch your convention acts as you. Point it only astatine sites and tasks you'd beryllium comfortable doing yourself. This is simply a instrumentality for automating your own accounts and workflows — not for evading entree controls connected services you don't own.
MIT © Daniel Perez Pinazo
English (US) ·
Indonesian (ID) ·