ProBrowser
ProBrowser
AIエージェント向けリアルブラウザ自動化MCPサーバー — アンチ検出
29ツール · 実Opera/ChromeへのCDP接続 · 人間らしい入力 · DOM + ビジョンのハイブリッド
機能 • パイプライン • クイックスタート • 使用法 • 設定 • アーキテクチャ • プロジェクト構造 • アンチ検出
🌐 言語: English | Tiếng Việt
[!WARNING] 開発・テストはArch Linuxのみ カーネル
Linux 7.1.5-arch1-2· DE: KDE Plasma 他のディストリビューション/デスクトップは未テスト — 結果は環境によって異なります。
AIエージェント(Kilo、Claude Codeなど)がModel Context Protocolを通じてユーザーの実ブラウザを操作できるようにするMCPサーバーです。ヘッドレスモードも使い捨てプロファイルもありません — エージェントはCDP経由で実行中のOpera/Chromeに接続し、すべてのセッション・Cookie・ログインを保持したまま、人間らしいタイミングとDOM優先/ビジョン・フォールバック戦略でブラウザを操作します。
✨ 機能
機能 | 説明 |
🔌 実ブラウザ制御 |
|
🧰 29個のMCPツール | ナビゲーション、タブ、クリック/タイプ/ホバー/キーボード、スクロール、ドラッグ&ドロップ、DOM/テキスト抽出、JS評価、3種類のスクリーンショット、CAPTCHAツールキット、システム検出。 |
🕒 人間らしい入力 | ガウス分布のキー間遅延(45〜75 WPM)、自然なmousedown↔mouseup間隔、三次イージングアウトのスクロール — タイミングミドルウェアとしてレイヤー化され、JSインジェクションはゼロ。 |
🔍 DOM + ビジョンのハイブリッド | まず構造化DOM抽出( |
🎯 位置検証 | 座標クリックの前に: 原点O=(x,y)で正確に交差する赤いX/Y軸と要素プローブを注釈したスクリーンショット、警告( |
🧩 CAPTCHAツールキット | ナビゲーション後にreCAPTCHA/hCaptcha/Turnstile/Cloudflareを自動検出; エージェントのビジョンによる画像グリッド解決( |
🗂️ タブ管理 | タブの一覧表示/切り替え/開く/閉じる — 1つの実ブラウザでのマルチタブワークフロー。 |
🚨 実用的なエラー | すべての失敗は構造化された |
📚 自己文書化 |
|
✅ テスト済み | 87のユニットテスト(フェイクページ、ブラウザ不要)+ 実ブラウザ統合スイート( |
Related MCP server: selenium-mcp
🏭 パイプライン
┌──────────┐ ┌────────────┐ ┌─────────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐
│ CONNECT │ → │ ORIENT │ → │ SEE │ → │ PLAN │ → │ ACT │ → │ VERIFY │
│ check_ │ │ navigate + │ │ screenshot │ │ selector │ │ click / │ │ re-read │
│ browser │ │ wait idle │ │ get_dom │ │ or coords│ │ type │ │ state │
└──────────┘ └────────────┘ └─────────────┘ └──────────┘ └──────────┘ └──────────┘
│ │
▼ not running ▼ DOM miss
┌──────────────┐ ┌──────────────────────────┐
│ open_browser │ │ validate_position(x, y) │
│ (real profile│ │ → annotated O=(x,y) shot │
│ + CDP flag) │ │ → click_position(x, y) │
└──────────────┘ └──────────────────────────┘ツール実行フロー(例 browse_click):
agent call → pre-click Gaussian delay (~80ms)
→ PhantomWright Actionability Engine (visible? enabled? stable? unobscured?)
→ CDP Input.dispatchMouseEvent (trusted gesture, NOT element.click())
→ post-click pause (~150ms)
→ result JSON (+ optional verification screenshot)自動CAPTCHA/広告オーバーレイスキャンは、browse_navigate / browse_wait のたびに実行されます。
🚀 クイックスタート
前提条件
Arch Linux(開発/テストプラットフォーム)— カーネル
7.1.5-arch1-2、KDE PlasmaPython 3.11+ —
python --versionで確認Chromiumベースのブラウザ — Opera(推奨)、Chrome、Chromium、Brave
MCPクライアント — Kilo CLI、Claude Code、またはMCP stdioに対応した任意のクライアント
インストール
# 1. Clone
git clone https://github.com/YOUR_USER/probrowser.git
cd probrowser
# 2. Setup (venv + deps + verify)
./setup.sh
# ...or manually:
python -m venv .venv
.venv/bin/pip install -r requirements.txtMCPクライアントに登録
kilo.json(プロジェクトルート):
{
"mcp": {
"probrowser": {
"type": "local",
"command": ["/absolute/path/to/probrowser/.venv/bin/python", "-m", "src"],
"enabled": true,
"timeout": 120000
}
}
}Claude Codeユーザー: .mcp.json 経由で同じサーバーを使用。29個の browse_* ツールが読み込まれるようにクライアントを再起動してください。
初回実行
# Option A — start Opera yourself with CDP enabled:
opera --remote-debugging-port=9222
# Option B — let the agent do it (real profile, cookies intact):
browse_check_browser() # → not connected?
browse_open_browser(browser="opera")あとはエージェントに話しかけるだけ: 「YouTubeを開いてOne of These Nightsを再生して」 — エージェントが自分で接続、ナビゲーション、クリック、再生確認を行います。
💻 使用法
ツールグループ
グループ | ツール |
ナビゲーションとタブ |
|
操作 |
|
抽出 |
|
スクリーンショット |
|
CAPTCHA |
|
システム |
|
メタ |
|
完全なパラメータリファレンス: docs/tools-reference.md または実行時に browse_help(topic="tools-reference")。
使用例
→ browse_check_browser()
← { connected: false } # nothing on :9222 yet
→ browse_open_browser(browser="opera")
← { launched: true, profile: "~/.config/opera", cdp_url: "...:9222" }
→ browse_navigate(url="https://youtube.com/...")
← { success: true, title: "..." } # auto CAPTCHA scan ran here
→ browse_get_dom(search="One of These Nights")
← { count: 10, elements: [{type: "link", selector: "a[aria-label=...]"}] }
→ browse_click(selector="a[aria-label=...]")
← { success: true }
→ browse_eval(expression="() => {const v=document.querySelector('video'); return {paused: v.paused, time: v.currentTime}}")
← { paused: false, time: 3.1 } # verified: audio is playing 🎵スタンドアロンサーバー
PROBROWSER_CDP_URL=http://localhost:9222 .venv/bin/python -m src⚙️ 設定
すべての実行時設定は環境変数で駆動されます:
変数 | デフォルト | 説明 |
|
| 起動時に接続するCDPエンドポイント |
|
| ツール呼び出しごとの上限(共有イベントループ保護) |
|
| CAPTCHAサブシステムのマスタースイッチ |
|
| ナビゲーション後のCAPTCHA/広告の自動スキャン |
| — | 2Captcha APIキー(テキストチャレンジの自動解決; グリッド解決はエージェントのビジョンに基づく) |
|
| API支援による解決の最大待機時間 |
MCPクライアント側の設定(timeout、enabled)は kilo.json にあります — 意図的にgitから除外されています(.gitignore を参照)。
🏛️ アーキテクチャ
┌──────────────────────────────────────────────────────────┐
│ AI Agent (Kilo / Claude Code) │
│ plan → browse_* tool call → evaluate → repeat │
└───────────────────────┬──────────────────────────────────┘
│ MCP Protocol (stdio, JSON-RPC)
▼
┌──────────────────────────────────────────────────────────┐
│ ProBrowser MCP Server (Python) │
│ tool registry (29) → action coordinator → humanize.py │
│ (Gaussian delays · WPM typing · scroll easing) │
│ analyzer/: dom_parser · hybrid_strategy · captcha │
└───────────────────────┬──────────────────────────────────┘
│ CDP — Input.dispatch* events only
▼
┌──────────────────────────────────────────────────────────┐
│ User's Real Browser (Opera/Chrome, port 9222) │
│ sessions · cookies · logins preserved │
└──────────────────────────────────────────────────────────┘主要な設計判断
判断 | 根拠 |
すべてPython | PhantomWright + |
OS入力ではなくPhantomWright | ydotool/xdotool/KWinのハックは不要; CDPレベルのイベントはWaylandでも動作し、ユーザー入力をブロックしない |
JSインジェクションではなくCDP入力 |
|
ブラウザ起動ではなく | ユーザーのセッションこそが製品 — 再ログイン不要、Cookieの喪失なし |
ビジョンはエージェントが所有 | サーバーはジオメトリ/スクリーンショットを抽出; エージェント自身のビジョンモデルが座標を決定 |
📁 プロジェクト構造
probrowser/
├── main entry
│ ├── src/__main__.py # python -m src → stdio MCP loop
│ └── src/server.py # registry (29 tools) + dispatch + timeouts + captcha hooks
├── core
│ ├── src/browser/connection.py # connect_over_cdp, session persistence, page recovery
│ ├── src/browser/tab_manager.py # tab discovery / switching
│ ├── src/humanize.py # Gaussian timing middleware
│ ├── src/errors.py # classify_exception → structured error codes
│ ├── src/config.py # env-driven configuration
│ └── src/logging.py # per-action latency/success logging
├── tools (src/tools/, 29 modules)
│ ├── navigate · wait · list_tabs · switch_tab · open_tab · close_tab
│ ├── click · validate_position · click_position · type · hover · keyboard
│ ├── scroll · drag_drop
│ ├── get_dom · find · get_text · eval_js
│ ├── screenshot · screenshot_viewport · screenshot_save
│ ├── check_captcha · captcha_grid · solve_captcha
│ └── detect_browsers · check_browser · open_browser · help · list_tools
├── analyzer (src/analyzer/)
│ ├── dom_parser.py # DOM → simplified JSON (interactive + visible only)
│ ├── hybrid_strategy.py # DOM-first, vision fallback
│ └── captcha.py # CAPTCHA/ad-overlay detection
├── captcha (src/captcha/)
│ ├── grid.py # grid geometry + cropped screenshot extraction
│ └── solver.py # tile clicking + verify flow
├── docs/ # 11 topics served via browse_help()
├── tests/ # 87 unit tests + integration suite
├── AGENTS.md / CLAUDE.md # operating guide injected into agents
└── dev-phase-mcp-server.md # dev-phase principles🛡️ アンチ検出
ブラウザ回避スタック
レイヤー | 実装 | 詳細 |
エンジン | PhantomWright(パッチ適用済みPlaywrightドライバー) |
|
パッチ | ページJSが実行される前のステルスパッチ |
|
入力 | CDP |
|
セッション | 実ユーザープロファイル + 実IP + 拡張機能 | フィンガープリントに関して何も変わらない |
タイミング | すべてのアクションに対するヒューマナイズミドルウェア | ガウス遅延、自然なWPM、イージング付きスクロール |
引き続き機能するもの
ログイン、Cookie、拡張機能の状態、IPレピュテーション、canvas/WebGL/audioフィンガープリント — ブラウザはあなたのものなので、すべてがネイティブのままです。
制限事項
攻撃的なアンチボットサービス(Cloudflare Turnstile、hCaptchaの行動分析)は、IPレピュテーションで引っかかる可能性があります。フォールバックパス: スクリーンショット + validate_position → click_position、さらにCAPTCHAツールキット。
🧪 テスト
# Unit suite — fake pages, no browser required (87 tests)
.venv/bin/python -m pytest tests/ -q
# Integration suite — needs Opera running with CDP
.venv/bin/python -m pytest tests/test_integration.py -m integrationTính năng
機能 | 説明 |
🌐 実ブラウザ制御 | 実行中の Opera/Chrome に CDP 経由で接続 — セッション、Cookie、ログインを維持 |
🧰 29個のMCPツール | ナビゲーション、タブ、クリック/入力/ホバー/キーボード、スクロール、ドラッグ&ドロップ、DOM/テキスト抽出、JS、スクリーンショット、CAPTCHA |
🕒 人間らしいシミュレーション | キー間のガウス遅延(45〜75 WPM)、自然なクリック間隔、イーズアウトスクロール |
🔍 ハイブリッドDOM + Vision | 構造化DOMを優先。不足時はスクリーンショット+座標に切替 |
🎯 座標検証 | 座標クリック前に、X/Y軸がO=(x,y)で正確に交差する注釈画像を確認 |
🧩 CAPTCHA処理 | ナビゲーション後に自動検出。エージェントのビジョンでグリッドを解決。2Captcha経由で自動解決 |
🚨 アクション可能なエラー | 各エラーは |
✅ テスト済み | 87のユニットテスト+実ブラウザでの統合テストスイート |
クイックインストール
git clone https://github.com/YOUR_USER/probrowser.git && cd probrowser
./setup.sh # venv + dependencies + verify
opera --remote-debugging-port=9222 # hoặc để agent tự mởkilo.json でサーバーを宣言し(クイックスタート を参照)、クライアントを再起動すれば完了。
Arch Linux で 🎵 とともに作成 · MIT License
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseBqualityFmaintenanceEnables AI agents to directly control your real Chrome browser with full context including login sessions, cookies, and open tabs. It provides tools for page scanning, JavaScript execution, CDP control, screenshots, and physical mouse/keyboard input for authentic browser automation.20239MIT
- AlicenseBqualityAmaintenanceEnables browser automation through the Model Context Protocol, allowing AI agents to control Chrome, Firefox, or Edge for tasks like navigation, clicking, typing, and screenshots.3948MIT

Browseagent MCPofficial
AlicenseAqualityDmaintenanceEnables AI agents to control web browsers through the Model Context Protocol, supporting navigation, clicking, typing, and screenshots.12101MIT- AlicenseNot gradedqualityCmaintenanceEnables AI agents to create and control real, isolated browser profiles with engine-level fingerprinting and per-profile proxies, providing antidetect browsing capabilities through a Model Context Protocol interface.MIT
Related MCP Connectors
Reliable web access for AI agents: smart HTTP, rotating proxies, and full-browser rendering.
Live browser debugging for AI assistants — DOM, console, network via MCP.
A paid remote MCP for AI agent browser approval MCP, built to return verdicts, receipts, usage logs,
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/momadhuynh04/probrowser'
If you have feedback or need assistance with the MCP directory API, please join our Discord server