プログラミング
NeoBrowser: ログインセッションを利用して実際のChromeを操作するMCPサーバー
NeoBrowser: An MCP server that drives real Chrome with your logged-in sessions (github.com)
要約
NeoBrowserは、AIが実際のログインセッションを持つChromeブラウザを操作できるようにするMCPサーバーです。実際のユーザーのように振る舞い、ボット検出を回避し、既に認証済みの状態から開始できます。Rustで書き直された単一のバイナリファイルで提供され、インストールが容易です。
全文翻訳
NeoBrowser
あなたのAIが、実際のログインセッションを持つ実際のChromeを操作します。これにより、フィンガープリントゲームに勝ち(本物のフィンガープリントでbot.sannysoftを通過)、人間のようにマウスを動かし、既に認証された状態で開始できるため、標準的なヘッドレスボットのようにフラグが立てられません。
AIモデルがあなたと同じようにウェブを使用するためのMCPサーバーです。目立たないように振る舞うのではなく、サイトがインタラクティブなチャレンジ(reCAPTCHA、Turnstile)を提示した場合、NeoBrowserはそれを検出し、実際のセッションまたは人間的なパスで制御を返します。この正直さが信頼性を高めています。
LLM向けのブラウザツールの多くは、Cookieのない、新たにフィンガープリント可能なヘッドレスブラウザを起動するため、モデルは常にログインウォールやボットチェックに遭遇します。NeoBrowserは実際のGoogle Chromeバイナリを操作し、あなたの実際のログイン済みプロファイル(Cookie)を再利用できるため、モデルは既に認証された状態で、本物のユーザーのように見えます。なぜなら、それは本物のユーザーだからです。
// MCPクライアント(Claude Code, Claude Desktop, Cursor, …)に追加
{ "mcpServers": { "neobrowser": { "command": "neobrowser" } } }
Rustによる書き直し:単一の約4MBの静的バイナリ、インストールするランタイムはありません。(元のPython実装は、テストオラクルとしてこのリポジトリに残っています — Developmentを参照してください。)
インストール
# 1行(macOS / Linux):
curl -fsSL https://raw.githubusercontent.com/pitiflautico/neobrowser/main/install.sh | sh
# またはソースから(Rustツールチェーンが必要です):
git clone https://github.com/pitiflautico/neobrowser && cd neobrowser/rust
cargo build --release
# -> target/release/neobrowser
neobrowser doctor
# Chromeが見つかるか、ライブCDPスモークテストを確認します
WindowsバイナリはReleasesページにあります。
Google Chrome(またはChromium)が必要です。macOS/Linux/Windowsでは自動検出されますが、NEOBROWSER_CHROME_BINで上書きできます。
動作を確認する
実際の実行:ログイン、ファイルアップロード、ボット検出チェックをライブサイトに対して実行(約14秒)。
python3 rust/scripts/demo.py
# 実際のログイン、ファイルアップロード、ボット検出チェックを操作します
ライブサイトに対する実際の出力:
✓ 実際のログインページを開く
Navigated to .../login
✓ ユーザー名/パスワードを入力
ok
✓ ログインをクリック(実際のisTrustedクリック)
ok
✓ 結果を読む → ログインしました
You logged into a secure area!
✓ 実際の画像ファイルを添付
ok
✓ アップロードを送信
ok
✓ サーバーがファイルを承認しました
neobrowser_demo.png
✓ ステルス性の兆候を確認します
{"webdriver":"hidden (passed)","chrome_runtime":true,"headless_ua":false}
NeoBrowserを選ぶ理由
NeoBrowser
Playwright MCP / Puppeteer
ブラウザ使用
実際のChromeバイナリを操作
✅
⚠️
バンドルされたChromium
⚠️
実際のログインセッションを再利用(APIキー不要、再ログイン不要)
✅
❌
❌
デフォルトでステルス — 本物のフィンガープリントでbot.sannysoftを通過
✅
❌
部分的に
セマンティック要素検索(アクセシビリティツリー + ヒューリスティクス + オプションのLLM)
✅
❌
セレクター
✅
ボットウォールを回避するマルチソース検索
✅
❌
❌
単一の静的バイナリ、ランタイム依存なし
✅
❌
Node + ブラウザ
❌
CDPに直接話しかける(Selenium/WebDriver不要)
✅
—
—
機能
リアルセッションブラウジング — 実際のChromeプロファイルからCookieを(オプションで)復号化して注入します(オプトイン。macOS Keychain / Linux secret-service / Windows DPAPI)。Google/LinkedIn/MicrosoftのセッションIDCookieは除外されるため、実際のブラウザはログアウトされません。
ステルス強化、本物 — 実際のChrome、navigator.webdriverを抑制、実際のバージョンのUser-Agentをクライアントヒントと一致させ、実際のGPU WebGL(偽装なし)。哲学は一貫性であり、偽装の積み重ねではありません。bot.sannysoftでライブ検証済み。
ボットウォール対応 — navigateは、ボットウォール、CAPTCHA、同意ゲート、レート制限、ログインゲートをあらゆるサイトで検出し、モデルに反応方法を伝えます。
マルチソース検索 — テキスト(DuckDuckGo + Google)、画像(Bing + Google)、動画(YouTube + Google):ウォールされたソースはスキップされ、結果はマージされます。単一のサイトはハード依存ではありません。
リアルマルチタブ — new_tab / list_tabs / switch_tab / close_tab、すべてが1つのChromeを共有します。
43のツール — navigate, click, type, fill/submit forms, upload/download, read, extract tables, screenshot, scroll, console/network logs, performance metrics, record/replay playbooks, web/image/video search, loginなど。
堅牢なコア — タブごとに1つの分離されたCDP接続(tokio)、型指定されたタイムアウト、デッドタブ/再起動したChromeからの自己修復、および孤立したChromeプロセスはありません。
ドキュメント
docs/TOOLS.md — 全43ツールの完全なリファレンス(パラメータ+説明)。neobrowser tools --markdown で再生成、neobrowser tools でライブイントロスペクション。
AGENTS.md — 貢献者およびAIエージェント向けのアーキテクチャ、ビルド/テスト、および規約。
MCPの初期化レスポンスは、モデルが使用法の primer を自動的に取得できるように、instructions フィールドを送信します。
ベンチマーク
再現可能なハーネス(bench/)は、共有タスクマトリックスを通じてブラウザツールを操作します。共通レイヤーでのPlaywright MCPとの中立的な2方向比較(python3 bench/compare.py)が含まれています — どちらかが勝つように調整されたものはありません。
最初の実行結果:両方とも共有機能タスクをパスしました。Playwright MCPの方が高速です(NeoBrowserは遅延コンテンツをレンダリングするためにフレームを強制するコストを支払いますが)、NeoBrowserはセッション永続性と、Playwright MCPが欠いているファーストクラスのボットウォール検出を追加します。敵対的なページでは、両方とも同等にウォールされました(単一IP) — 「より回避する」という主張はありません。それには住宅用プロキシ+繰り返し実行が必要です。メトリクスはtask_execution_successとdestination_access_successを分離しているため、検出されたウォールがスコアをインフレさせることはありません。bench/README.mdおよびbench/compare.mdを参照してください。
使用方法
任意のMCPクライアントに登録してから、モデルにブラウジングを依頼してください。
例:ツール呼び出し:
navigate { "url": "https://example.com" }
find { "intent": "search box" }
→ backendNodeId を返します
type { "text": "hello world" }
screenshot { "format": "png" }
→ 画像として返されます
read {}
→ 表示されているページテキスト
デフォルトでは、NeoBrowserは専用プロファイルの下で独自のヘッドレスChromeを実行します。実際のログインセッションを再利用するには、NEOBROWSER_REAL_PROFILEを設定します(以下参照)。
リアルセッションモード
NEOBROWSER_REAL_PROFILE を、使用したいChromeプロファイルフォルダ(例:「Default」、「Profile 1」)に設定します。NeoBrowserはそのプロファイルのCookieをOSキーチェーン経由で復号化して注入するため、エージェントは認証された状態で開始されます:
{ "mcpServers": { "neobrowser": { "command": "neobrowser", "env": { "NEOBROWSER_REAL_PROFILE": "Default" } } } }
または、既に開いているChromeにアタッチします(--remote-debugging-port=9222で起動):
NEOBROWSER_ATTACH_PORT=9222 を設定します。
アタッチモードでは、NeoBrowserは実際のブラウザをパッチまたはキルしません。
ステルス
最新のボット検出(Cloudflare, DataDomeなど)は、主に一貫性の欠如を探します — クライアントヒントと一致しない偽装されたUA、HeadlessChromeトークン、ソフトウェアWebGL、navigator.webdriver === true。
NeoBrowserは、偽装の積み重ねではなく、本質的に一貫性があります:
実際のChromeバイナリを実行します(実際のTLS、実際のフォント、実際のすべて)。
navigator.webdriver を undefined に強制します。アンチスロットル+フォーカスエミュレーションにより、ヘッドレスコンポジタがライブ状態を維持し、コンテンツが実際にレンダリングされます。
UAは、起動フラグを通じて実際のインストール済みChromeバージョンに書き換えられるため、本物のクライアントヒントは一貫性を保ちます。
--disable-gpuなしで、WebGLは実際のGPUを報告します。
プラグイン、言語、およびパーミッション/通知の不一致に対するJSパッチ — NeoBrowserが所有するタブでのみ、アタッチされた実際のChromeでは決して行われません。
フィンガープリントを超えて、入力は行動的に人間的です:クリックは、人間的なペースの一時停止を伴う複数ステップのパスに沿ってカーソルをターゲットに移動させ(テレポートしてからクリックするのではなく)、タイピングは現実的なタイミングでキーごとに行うことができます — これらは行動システムが監視する信号です。
ライブ検証済み:ホストの実際のフィンガープリントで、bot.sannysoft の WebDriver、Chrome、プラグイン、および WebGL チェックをパスします。
CIはChromeをインストールし、プッシュごとにこれらのチェックを実際のブラウザに対して実行します。完全なbot.sannysoft実行はオンデマンドテストです(cargo test --test stealth_verify -- --ignored)。
どのツールも約束できないのは、インタラクティブなチャレンジを打ち破ることです — reCAPTCHA、Turnstile、または行動/評判システム(DataDome)は依然として壁を設ける可能性があり、新しいCookieのないプロファイル自体が信号となります。NeoBrowserのその点での利点は、ウォームな実際のプロファイルと、壁を検出すること(navigateがそれをフラグ付けする)であり、モデルがそれにハンマーを打ち込むのではなく反応するようにします。
設定
環境変数
デフォルト