camoufox-reverse-mcp
camoufox-reverse-mcp
反指紋ブラウザベースのMCPサーバー。JavaScriptリバースエンジニアリング専用に設計されています。
AIコーディングアシスタント(Claude Code、Cursor、Clineなど)が、Camoufox反指紋ブラウザを通じて、ターゲットサイトに対してインターフェースパラメータ分析、JSファイルの静的分析、動的ブレークポイントデバッグ、関数フック追跡、ネットワークトラフィックインターセプト、JSVMPバイトコード分析、Cookie/ストレージ管理などのリバースエンジニアリング操作を実行できるようにするMCP(Model Context Protocol)サーバーです。
なぜCamoufoxを選ぶのか?
特徴 | chrome-devtools-mcp | camoufox-reverse-mcp |
ブラウザエンジン | Chrome (Puppeteer) | Firefox (Camoufox) |
検知回避策 | なし | C++エンジンレベルの指紋偽装 |
デバッグ能力 | 限定的(ブレークポイントなし) | Playwright + JS Hook |
JSVMP分析 | なし | インタプリタのインストルメンテーション + ソースコードレベルの書き換え |
Hookの永続化 | 非対応 | コンテキストレベルの永続化、ナビゲーション後の自動再注入 |
核心的な利点:
CamoufoxはC++レベルで指紋情報を変更するため、JS層のパッチではなく、根本的に検知不可能
Jugglerプロトコルのサンドボックス分離により、Playwrightがページ上のJSから完全に検知不可能
BrowserForgeが実世界のトラフィック統計分布に基づいて指紋を生成するため、ランダムな寄せ集めではない
RS、AK、JY、CFなどの強力なアンチスクレイピングサイトで正常に動作
Hookは
Object.definePropertyによる上書き防止保護を使用しており、ページスクリプトは元のメソッドを復元できない
クイックスタート
方法1:AIダイアログから直接インストール(推奨)
AIコーディングツール(Cursor / Claude Code / Codexなど)のダイアログに以下を入力してください:
帮我安装下这个mcp工具:camoufox-reverse-mcp
项目地址:https://github.com/WhiteNightShadow/camoufox-reverse-mcpAIがクローン、依存関係のインストール、MCPサーバーの設定という全プロセスを自動的に完了します。
方法2:手動インストール
git clone https://github.com/WhiteNightShadow/camoufox-reverse-mcp.git
cd camoufox-reverse-mcp
pip install -e .クライアント設定
{
"mcpServers": {
"camoufox-reverse": {
"command": "python",
"args": ["-m", "camoufox_reverse_mcp"]
}
}
}{
"mcpServers": {
"camoufox-reverse": {
"command": "python",
"args": ["-m", "camoufox_reverse_mcp", "--headless"]
}
}
}{
"mcpServers": {
"camoufox-reverse": {
"command": "python",
"args": [
"-m", "camoufox_reverse_mcp",
"--proxy", "http://127.0.0.1:7890",
"--geoip",
"--humanize"
]
}
}
}利用可能なツール一覧(35個)
ブラウザ制御
ツール | 説明 |
| Camoufox反指紋ブラウザを起動 |
| ブラウザを閉じ、リソースを解放 |
| 指定URLへナビゲート(pre_inject_hooks、redirect_chain追跡をサポート) |
| ページをリロード |
| スクリーンショット(全ページ、指定要素をサポート) |
| ページのアクセシビリティツリーを取得(トークン効率的) |
| 要素をクリック / テキストを入力 |
| 要素の出現またはURLの一致を待機 |
| 現在のページのURL、タイトル、ビューポートサイズを取得 |
JS実行とデバッグ
ツール | 説明 |
| ページコンテキストで任意のJS式を実行(マルチ戦略JSON解析) |
スクリプト分析
ツール | 説明 |
| スクリプト管理: |
| キーワード検索( |
Hookと追跡
ツール | 説明 |
| 関数のフックまたは追跡: |
| プリセットHookの一括注入(xhr / fetch / crypto / websocket / debugger_bypass / cookie / runtime_probe) |
| すべてのHookを削除し、元のオブジェクトを復元 |
| ページのconsole出力を取得 |
ネットワーク分析
ツール | 説明 |
| ネットワークキャプチャ制御: |
| キャプチャされたリクエストの一覧表示(URL / ドメイン / メソッド / タイプ / ステータスコードによるフィルタリングをサポート) |
| リクエストの詳細を取得( |
| リクエストを開始したJSコールスタックを取得 |
| リクエストのインターセプト:log / block / modify / mock / stop |
JSVMPリバース分析
アンチスクレイピングタイプ → ツールパス対照表
アンチスクレイピングタイプ
代表例
✅ 推奨パス
❌ 禁止
署名型(環境=署名)
RS 5/6、AK sensor_data
instrumentation(action="install")
pre_inject_hooks、hook_jsvmp_interpreter(mode="proxy")行動型(パラメータ署名)
TK JSVMP、JY gt4
hook_jsvmp_interpreter(mode="proxy")—
純粋な難読化
一般的なJS難読化ツール
任意の組み合わせ
—
ツール | 説明 |
| JSVMPランタイムプローブ( |
| ソースレベルのインストルメンテーション: |
| ブラウザ環境指紋の収集(Node.js/jsdomとの比較用) |
Cookieとストレージ
ツール | 説明 |
| Cookie管理: |
| localStorage / sessionStorageを取得 |
| ブラウザ状態の完全エクスポート / インポート |
検証と環境
ツール | 説明 |
| 署名関数のオフライン検証:サンプルリストを渡し、サンプルごとに文字レベルで比較し、最初の差異点を特定 |
| ワンストップ自己診断:MCPバージョン、依存関係、ブラウザ状態、camoufox-reverseカスタム版の検出 |
| 残留物(hooks / capture / routes)のクリーンアップ(ブラウザは閉じない) |
エンジン層のプロパティ追跡(v1.1.0で追加)
camoufox-reverse カスタム版ブラウザが必要です。インストールされていない場合はエラーメッセージが返されますが、他のツールの使用には影響しません。
ツール | 説明 |
| C++エンジン層のDOMプロパティアクセス追跡(JSVMPで検知不可)。summary/timeline/sequence/searchの4つのビューをサポート。 |
| ローカルの全traceファイルを一覧表示(事後分析用) |
| 指定した過去のtraceファイルをクエリ(オブジェクト/キーワードによるフィルタリングをサポート) |
使用シナリオ例
シナリオ1:ログインインターフェースの署名パラメータのリバースエンジニアリング
1. launch_browser()
2. inject_hook_preset("xhr")
3. inject_hook_preset("crypto")
4. navigate("https://example.com/login")
5. type_text("#username", "test") → click("#login-btn")
6. list_network_requests(method="POST")
7. get_request_initiator(request_id=3) ← 定位签名函数
8. search_code("sign") ← 搜索签名代码
9. hook_function("window.getSign", mode="trace")
10. reload() → get_console_logs() ← 收集追踪数据シナリオ2:汎用JSVMPリバースエンジニアリング(RS / AK / 自社開発VMP)
1. launch_browser()
2. network_capture(action="start")
3. navigate("https://target-site.com/")
4. list_network_requests(resource_type="script") ← 找到 VMP 脚本
5. instrumentation(action="install", url_pattern="**/vmp_target*.js", mode="ast")
6. inject_hook_preset("cookie", persistent=True)
7. instrumentation(action="reload") ← 让插桩生效
8. instrumentation(action="log", type_filter="tap_get") ← 看 VMP 读了什么环境
9. instrumentation(action="log", type_filter="tap_method") ← 看 VMP 调了什么 API
10. compare_env() ← 收集环境用于 Node.js 补齐シナリオ3:プロトコルコードの検証
1. launch_browser() → navigate("https://target.com")
2. network_capture(action="start")
3. # 触发目标操作,收集带签名的请求
4. reqs = list_network_requests(url_filter="api/search")
5. # 提取样本
6. verify_signer_offline(
signer_code="(s) => ({'X-Bogus': mySign(s.url)})",
samples=[{"id": "r1", "input": {...}, "expected": {"X-Bogus": "..."}}]
)👉 完全なアンチスクレイピングタイプ識別とワークフローについては docs/JSVMP_PLAYBOOK.md を参照
シナリオ4:エンジン層によるJSVMP環境指紋の追跡(v1.1.0で追加)
1. launch_browser(enable_trace=True) ← 启动带 C++ 追踪的浏览器
2. navigate("https://www.douyin.com/video/xxx") ← JSVMP 执行,事件自动记录
3. trace_property_access(duration=0, mode="summary", collect_values=True)
→ 返回 JSVMP 实际读取的 42 个 DOM 属性、访问频次、以及真实值
→ 小值内联返回,大值(Canvas/WebGL/Cookie 等)自动保存到
~/.cache/camoufox-reverse/values/ 目录
# 按时间线查看属性访问节奏
4. trace_property_access(duration=0, mode="timeline", bucket_ms=500)
# 按对象过滤
5. trace_property_access(duration=0, filter_object="webgl")
# 搜索特定属性
6. trace_property_access(duration=0, mode="search", search_query="cookie")compare_envとの違い:
trace_property_access:JSVMPが実際に読み取ったプロパティを追跡(正確、C++層、検知不可)compare_env:ブラウザのすべての環境プロパティを収集(全量、JS層)パスBの環境偽装時、trace結果に基づいて「どのプロパティを補完するか」を決定し、補完しすぎによる新たな漏洩ポイントの発生を防ぐ
技術アーキテクチャ
┌─────────────────────────────────────────────────┐
│ AI 编码助手 (Cursor / Claude) │
│ ↕ MCP (stdio) │
├─────────────────────────────────────────────────┤
│ camoufox-reverse-mcp (35 tools) │
│ ┌──────────┬──────────┬──────────┬──────────┐ │
│ │Navigation│ Script │Debugging │ Hooking │ │
│ │ │ Analysis │ │ │ │
│ ├──────────┼──────────┼──────────┼──────────┤ │
│ │ Network │ JSVMP │ Cookie │ Verify │ │
│ │ Capture │ Analysis │ Storage │ Signer │ │
│ ├──────────┴──────────┴──────────┴──────────┤ │
│ │ ★ PropertyTracer (trace_property_access) │ │
│ │ C++ 引擎层 DOM 属性追踪(JSVMP 不可检测) │ │
│ └───────────────────────────────────────────┘ │
│ ↕ Playwright API │
├─────────────────────────────────────────────────┤
│ Camoufox (反指纹 Firefox, Juggler 协议) │
│ C++ 引擎级指纹伪造 · BrowserForge 真实指纹分布 │
└─────────────────────────────────────────────────┘更新履歴
v1.1.0(2026-04-22)— エンジン層のプロパティ追跡
3つのツールを追加、
launch_browserにenable_traceパラメータを追加。
追加ツール
trace_property_access— C++エンジン層のDOMプロパティアクセス追跡(JSVMPで検知不可)、summary/timeline/sequence/searchの4つのビューをサポートlist_trace_files— ローカルのtraceファイルを一覧表示query_trace_file— 過去のtraceファイルをクエリ
変更点
launch_browserにenable_traceパラメータを追加。有効にするとCAMOU_CONFIGとMOZ_DISABLE_CONTENT_SANDBOXが自動注入されるcheck_environmentにcamoufox_reverseフィールドを追加し、カスタム版ブラウザのインストール状態を検出
依存関係
camoufox-reverse カスタム版ブラウザが必要(オプション、インストールしなくても他の32個のツールには影響なし)
v1.0.0(2026-04-18)— ツール精査 + 純粋なJSリバースツールセットへの回帰
メジャーバージョン:80 → 32ツール、schemaトークンを半減。セッションアーカイブ/アサーションシステムを削除し、純粋なJSリバースツールとしての位置付けに回帰。
ツールの統合(v0.9.0)
network_capture(action=start/stop/clear/status)← start/stop_network_capturescripts(action=list/get/save)← list_scripts / get_script_source / save_scriptsearch_code(keyword, script_url=None)← search_code / search_code_in_scripthook_function(path, mode=intercept/trace)← hook_function / trace_functioninstrumentation(action=install/log/stop/reload/status)← instrument_jsvmp_source / get_instrumentation_log / stop_instrumentation / reload_with_hooks / get_instrumentation_statuscookies(action=get/set/delete)← get_cookies / set_cookies / delete_cookies
削除されたツール
セッションアーカイブシステム(7個):start/stop_reverse_session、list_sessions、get_session_snapshot、attach_domain_readonly、export/import_session
アサーションシステム(4個):add/verify/list/remove_assertion
使用頻度の低いツール(37個):trace_property_access、freeze_prototype、find_dispatch_loops、get_page_content、bypass_debugger_trap、check_detection、get_fingerprint_info、dump_jsvmp_strings、evaluate_js_handle、add_init_script、set_breakpoint_via_hook、get_breakpoint_dataなど
追加
verify_signer_offline— ステートレスな署名関数検証(verify_against_sessionの代替)
バグ修正(v0.8.1)
evaluate_js:マルチ戦略JSON解析(制御文字のクリーンアップ、二重エンコーディングのアンパック)navigate:デフォルトでネットワークキャッシュをクリアし、ナビゲーションをまたぐリクエストの汚染を防止get_network_request:max_body_sizeパラメータでボディの切り捨てを制御(デフォルト5000)launch_browser:already_running時に残留状態の診断を返す
削除された依存関係:tldextract(セッションのみで使用)
設計理念:MCPは純粋なツールセット(ステートレス)であり、ワークフロー管理は行わない。分析プロジェクトの記憶/蓄積はスキル層とユーザーワークスペースに属する。
v0.6.0 — 実戦バグ修正
hook_jsvmp_interpreter(mode="proxy"):Proxy再帰によるtoo much recursionを修正remove_hooks:Proxyオブジェクトを真に復元evaluate_js:BOM / lone surrogate / whitespace の自動クリーンアップinstrument_jsvmp_source:CSPプリチェックnavigate:タイムアウト時の優雅なダウングレード
v0.5.0 — 署名型アンチスクレイピング互換性
instrument_jsvmp_sourceのデフォルトMCP側AST書き換えhook_jsvmp_interpreterにmode="transparent"を追加アンチスクレイピングタイプ決定表 + JSVMP Playbook
v0.4.0 — 汎用JSVMP適応
ソースレベルのインストルメンテーション、Cookie帰属、ランタイムプローブ
hook_jsvmp_interpreterのマルチパスオーバーライド書き換え
v0.3.0 — 安定性修正
v0.2.0 — Hookの永続化 + JSVMP分析
v0.1.0 — 初期バージョン(44ツール)
フィードバック / 交流
使用中にバグに遭遇した場合、新しいHookプリセットが欲しい場合、またはJSリバースエンジニアリングのアイデアを交流したい場合は、WeChatまでご連絡ください:
WeChat ID:
han8888v8888
友達申請の際は「camoufox-reverse」とメモしていただけると、迅速に承認できます。
ライセンス
MIT
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
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/WhiteNightShadow/camoufox-reverse-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server