zhizhuodemao/js-reverse-mcp
AI Agent-first JS 逆向 MCP Server:有头 Chrome 调试、断点、网络/WebSocket 分析、Patchright 反检测,可选 CloakBrowser。
何であるか
js‑reverse‑mcp は Node.js で構築された MCP(Model‑Controlled‑Program)サーバーであり、大規模言語モデルエージェント(Claude Code、Cursor、GitHub Copilot など)が実際の Chrome ブラウザをデバッグアシスタントとして操作できるようにします。DevTools のデータ(スクリプト、ブレークポイント、ネットワークトラフィック、WebSocket メッセージ、ブラウザストレージ、ローカルファイル)を、AIに優しい簡潔なプリミティブに再構成し、エージェントがページ上の JavaScript の振る舞いについて段階的に推論できるようにします。
コアアイデア
完全な Chrome DevTools UI をモデルに公開するのではなく、サーバーは list_scripts、set_breakpoint_on_text、evaluate_script、list_network_requests などの明確に定義されたツールの少数を提供します。これらのツールは短い構造化出力や大容量のデータをファイルに書き込みます。LLM は次のアクションを決定し、エクスポートされたファイルを読み取り、大量の生のソースコードやバイナリデータにさらされることなく分析を継続できます。
主な機能
| カテゴリ | ツール(例) | 機能 |
|---|---|---|
| ページとナビゲーション | new_page、navigate_page、select_page、click_element、take_screenshot |
ページを開き、移動し、要素と対話し、スクリーンショットを取得します。 |
| スクリプト分析 | list_scripts、get_script_source、save_script_source、search_in_sources |
読み込まれたすべての JS を列挙し、ソース(minified/WASM を含む)を取得、テキスト検索、ディスクにエクスポートします。 |
| ブレークポイントと実行 | set_breakpoint_on_text、break_on_xhr、list_breakpoints、get_paused_info、step、evaluate_script |
テキストまたは URL パターンでブレークポイントを設定、実行を一時停止、コールフレームを確認、ステップ実行、ページ内または一時停止中のフレームで任意の JS を実行します。 |
| ネットワークとWebSocket | list_network_requests、clear_network_requests、get_request_initiator、get_websocket_messages |
HTTP/XHR/fetch リクエストをキャプチャ、ヘッダー/ボディをエクスポート、リクエストを引き起こした JS コールスタックをトレース、WS トラフィックを確認します。 |
| ブラウザ状態 | clear_site_data |
現在のサイトのクッキー、ストレージ、キャッシュをリセット(アンチボットフローの再実行に有用)。 |
| ユーティリティ | list_console_messages |
コンソールログを取得して追加のコンテキストを得ます。 |
逆検出 / ステルス機能
- プロトコルレベルのステルス – Patchright のカスタムフォークが、自動化を示す通常の CDP フラグを無効化し、
evaluate呼び出しを隔離されたワールドで実行します。 - オプションのバイナリレイヤー –
--cloakを指定すると、Chrome が CloakBrowser(修正済み Chromium バイナリ)に置き換えられ、navigator.webdriver、canvas、WebGL、音声、GPU、フォント、画面サイズ、WebRTC、TLS 詳細などのフィンガープリントをマスクします。 - プロファイル管理 – 永続的プロファイルはログイン状態を保持;
--isolatedは各セッションで新規の一時プロファイルを開始;--cloakは別々のプロファイルディレクトリを使用。 - サイレントナビゲーション – CDP のネットワーク/デバッガー ドメインは、ツールが明示的に必要とするまで無効のままにされ、早期検出を低減します。
実行方法
- ゼロインストール – AIアシスタントの MCP 設定にサーバーを追加:
{ "mcpServers": { "js-reverse": { "command": "npx", "args": ["js-reverse-mcp"] } } }
- ローカルインストール –
git clone … && npm install && npm run buildして、ビルドされたindex.jsを MCP に指定。 - オプションフラグ –
--cloak– CloakBrowser を有効化(初回実行時に約 200 MiB のバイナリをダウンロード)。--isolated– 各セッションで新規の user-data-dir で開始。--browserUrl <CDP‑endpoint>– 既に実行中の Chrome(または AdsPower などのフィンガープリントブラウザ)に接続。--allowedRoots <path>– エージェントが読み書きできるホストディレクトリを制限。
AIエージェントの典型的なワークフロー
new_page→ ターゲット URL を開く。list_scripts→ 興味のある関数(例:encryptを検索)を特定。set_breakpoint_on_text→ 関数のエントリにブレークポイントを設定。- ページアクションをトリガー;一時停止されたら
get_paused_infoとevaluate_scriptを使って引数を確認。 list_network_requests … outputFile=…で関連するネットワークリクエストをエクスポート。- 必要に応じて
clear_site_dataを実行し、アンチボットフローを再実行。
セーフティに関する注意
--allowedRootsが設定されていない場合、サーバーはホスト上の任意のファイルを読み書きできるため、制御された環境で実行する必要があります。- 付属する AI モデルに完全なブラウザ状態(クッキー、localStorage、コンソール出力)が公開されるため、機密データを含むページでは使用しないでください。
ライセンス
Apache‑2.0
要するに: js‑reverse‑mcp は「AI最優先」のデバッグブリッジであり、Chrome DevTools のデータを LLM エージェント向けの簡潔なツールボックスに変換し、スクレイピング防止サイトを回避するための組み込みステルス機能を備えています。AI支援の JavaScript リバースエンジニアリングと自動ウェブ分析を目的とした本格的なソフトウェアプロジェクトです。
関連
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト