Skip to main content
Glama
WhiteNightShadow

camoufox-reverse-mcp

camoufox-reverse-mcp

中文 | English

An MCP Server based on an anti-fingerprinting browser, specifically designed for JavaScript reverse engineering.

An MCP (Model Context Protocol) server that allows AI coding assistants (Claude Code, Cursor, Cline, etc.) to perform reverse engineering operations via the Camoufox anti-fingerprinting browser, including: API parameter analysis, static JS file analysis, dynamic breakpoint debugging, function hook tracing, network traffic interception, JSVMP bytecode analysis, and Cookie/storage management.

Why choose Camoufox?

Feature

chrome-devtools-mcp

camoufox-reverse-mcp

Browser Engine

Chrome (Puppeteer)

Firefox (Camoufox)

Anti-detection

None

C++ Engine-level fingerprinting

Debugging

Limited (no breakpoints)

Playwright + JS Hook

JSVMP Analysis

None

Interpreter instrumentation + Source-level rewriting

Hook Persistence

Not supported

Context-level persistence, auto-re-injection after navigation

Core Advantages:

  • Camoufox modifies fingerprint information at the C++ level, not via JS-layer patching, making it undetectable at the root.

  • Juggler protocol sandbox isolation makes Playwright completely undetectable by page JS.

  • BrowserForge generates fingerprints based on real-world traffic statistical distributions, not random combinations.

  • Works normally on various strong anti-scraping sites like RS, AK, JY, CF, etc.

  • Hooks use Object.defineProperty for anti-overwrite protection, preventing page scripts from restoring original methods.


Related MCP server: JS Reverse MCP

Quick Start

In the chat box of your AI coding tool (Cursor / Claude Code / Codex, etc.), enter:

帮我安装下这个mcp工具:camoufox-reverse-mcp
项目地址:https://github.com/WhiteNightShadow/camoufox-reverse-mcp

The AI will automatically complete the entire process of cloning, installing dependencies, and configuring the MCP Server.

Method 2: Manual Installation

git clone https://github.com/WhiteNightShadow/camoufox-reverse-mcp.git
cd camoufox-reverse-mcp
pip install -e .

Client Configuration

{
  "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"
      ]
    }
  }
}

Overview of Available Tools (35 total)

Browser Control

Tool

Description

launch_browser

Launch the Camoufox anti-fingerprinting browser

close_browser

Close the browser and release resources

navigate

Navigate to a specified URL (supports pre_inject_hooks, redirect_chain tracking)

reload

Refresh the page

take_screenshot

Take a screenshot (supports full page, specific elements)

take_snapshot

Get the page accessibility tree (token efficient)

click / type_text

Click an element / Type text

wait_for

Wait for an element to appear or URL to match

get_page_info

Get current page URL, title, viewport size

JS Execution & Debugging

Tool

Description

evaluate_js

Execute arbitrary JS expressions in the page context (multi-strategy JSON parsing)

Script Analysis

Tool

Description

scripts(action)

Script management: list / get source / save to local

search_code

Search keywords (full search if script_url=None, single-script search if URL specified; auto-detects minified files using character-level context)

Hook & Tracing

Tool

Description

hook_function

Hook or trace functions: mode="intercept" inject code / mode="trace" non-intrusive tracing

inject_hook_preset

One-click injection of preset hooks (xhr / fetch / crypto / websocket / debugger_bypass / cookie / runtime_probe)

remove_hooks

Remove all hooks and restore original objects

get_console_logs

Get page console output

Network Analysis

Tool

Description

network_capture(action)

Network capture control: start / stop / clear / status

list_network_requests

List captured requests (supports filtering by URL / domain / method / type / status code)

get_network_request

Get full request details (max_body_size controls body truncation)

get_request_initiator

Get the JS call stack that initiated the request

intercept_request

Intercept requests: log / block / modify / mock / stop

JSVMP Reverse Analysis

Anti-scraping Type → Tool Path Reference Table

Anti-scraping Type

Representative

✅ Recommended Path

❌ Disable

Signature-based (Environment = Signature)

RS 5/6, AK sensor_data

instrumentation(action="install")

pre_inject_hooks, hook_jsvmp_interpreter(mode="proxy")

Behavior-based (Parameter signature)

TK JSVMP, JY gt4

hook_jsvmp_interpreter(mode="proxy")

Pure Obfuscation

Common JS obfuscators

Any combination

Tool

Description

hook_jsvmp_interpreter

JSVMP runtime probe (mode="proxy" full coverage / mode="transparent" signature safety)

instrumentation(action)

Source-level instrumentation: install register rewrite / log get logs / stop stop / reload reload / status check status

compare_env

Browser environment fingerprint collection, for comparison with Node.js/jsdom

Tool

Description

cookies(action)

Cookie management: get / set / delete

get_storage

Get localStorage / sessionStorage

export_state / import_state

Export / Import full browser state

Verification & Environment

Tool

Description

verify_signer_offline

Offline verification of signature functions: pass sample list, character-level comparison, locate first deviation point

check_environment

One-stop self-check: MCP version, dependencies, browser status, camoufox-reverse custom version detection

reset_browser_state

Clean up residuals (hooks / capture / routes), without closing the browser

Engine-level Property Tracing (New in v1.1.0)

Requires camoufox-reverse custom browser. Returns an error if not installed, does not affect other tools.

Tool

Description

trace_property_access

C++ engine-level DOM property access tracing (JSVMP undetectable). Supports summary/timeline/sequence/search views. duration=0 reads all events since startup, duration>0 opens a new trace window. collect_values=True automatically reads real values of all properties from the browser (large values saved to files)

list_trace_files

List all local trace files (for post-analysis)

query_trace_file

Query specified historical trace files, supports filtering by object/keyword


Usage Scenarios

Scenario 1: Reverse Engineering Login Interface Signature Parameters

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()          ← 收集追踪数据

Scenario 2: General JSVMP Reverse Engineering (RS / AK / Self-developed 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 补齐

Scenario 3: Verifying Protocol Code

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": "..."}}]
   )

👉 For complete anti-scraping type identification and workflows, see docs/JSVMP_PLAYBOOK.md

Scenario 4: Engine-level Tracing of JSVMP Environment Fingerprints (New in v1.1.0)

Requires camoufox-reverse custom browser

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")

Difference from compare_env:

  • trace_property_access: Traces properties actually read by JSVMP (precise, C++ level, undetectable)

  • compare_env: Collects all environment properties of the browser (full, JS level)

  • When using Path B for environment spoofing, use trace results to decide "which properties to patch" to avoid introducing new leaks by over-patching


Technical Architecture

┌─────────────────────────────────────────────────┐
│           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 真实指纹分布     │
└─────────────────────────────────────────────────┘

Changelog

v1.1.0 (2026-04-22) — Engine-level Property Tracing

Added 3 tools, launch_browser added enable_trace parameter.

New Tools

  • trace_property_access — C++ engine-level DOM property access tracing (JSVMP undetectable), supports summary/timeline/sequence/search views

  • list_trace_files — List local trace files

  • query_trace_file — Query historical trace files

Changes

  • launch_browser added enable_trace parameter; when enabled, it automatically injects CAMOU_CONFIG and MOZ_DISABLE_CONTENT_SANDBOX

  • check_environment added camoufox_reverse field to detect custom browser installation status

Dependencies

  • Requires camoufox-reverse custom browser (optional, not installing it does not affect the other 32 tools)

v1.0.0 (2026-04-18) — Tool Streamlining + Return to Pure JS Reverse Toolset

Major Version: 80 → 32 tools, schema tokens halved. Removed Session archive/assertion system, returned to pure JS reverse tool positioning.

Tool Merging (v0.9.0)

  • network_capture(action=start/stop/clear/status) ← start/stop_network_capture

  • scripts(action=list/get/save) ← list_scripts / get_script_source / save_script

  • search_code(keyword, script_url=None) ← search_code / search_code_in_script

  • hook_function(path, mode=intercept/trace) ← hook_function / trace_function

  • instrumentation(action=install/log/stop/reload/status) ← instrument_jsvmp_source / get_instrumentation_log / stop_instrumentation / reload_with_hooks / get_instrumentation_status

  • cookies(action=get/set/delete) ← get_cookies / set_cookies / delete_cookies

Removed Tools

  • Session archive system (7): start/stop_reverse_session, list_sessions, get_session_snapshot, attach_domain_readonly, export/import_session

  • Assertion system (4): add/verify/list/remove_assertion

  • Cold tools (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, etc.

New

  • verify_signer_offline — Stateless signature function verification (replaces verify_against_session)

Bug Fixes (v0.8.1)

  • evaluate_js: Multi-strategy JSON parsing (control character cleaning, double-encoding unpacking)

  • navigate: Cleans network cache by default to prevent cross-navigation request pollution

  • get_network_request: max_body_size parameter controls body truncation (default 5000)

  • launch_browser: Returns residual state diagnosis when already_running

Removed Dependencies: tldextract (used only by Session)

Design Philosophy: MCP is a pure toolset (stateless) and does not perform workflow management. Memory/accumulation of analysis projects belongs to the skill layer and user workspace.

v0.6.0 — Practical Bug Fixes

  • hook_jsvmp_interpreter(mode="proxy"): Fixed too much recursion caused by Proxy recursion

  • remove_hooks: Truly restores Proxy objects

  • evaluate_js: BOM / lone surrogate / whitespace auto-cleaning

  • instrument_jsvmp_source: CSP pre-check

  • navigate: Graceful degradation on timeout

v0.5.0 — Signature-based Anti-scraping Compatibility

  • instrument_jsvmp_source default MCP-side AST rewriting

  • hook_jsvmp_interpreter added mode="transparent"

  • Anti-scraping type decision table + JSVMP Playbook

v0.4.0 — General JSVMP Adaptation

  • Source-level instrumentation, Cookie attribution, runtime probes

  • hook_jsvmp_interpreter multi-path coverage rewriting

v0.3.0 — Stability Fixes

v0.2.0 — Hook Persistence + JSVMP Analysis

v0.1.0 — Initial Version (44 tools)


Feedback / Communication

If you encounter bugs during use, want new Hook presets, or want to discuss JS reverse engineering ideas, feel free to add me on WeChat:

  • WeChat ID: han8888v8888

Please add a note "camoufox-reverse" when adding me so I can accept your request quickly.

License

MIT

Install Server
A
license - permissive license
A
quality
A
maintenance

Maintenance

Maintainers
4dResponse time
2wRelease cycle
9Releases (12mo)
Commit activity
Issues opened vs closed

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

  • A
    license
    B
    quality
    D
    maintenance
    An MCP server for anti-detection browser automation that uses Camoufox to bypass bot detection and spoof digital fingerprints. It enables AI agents to perform human-like web interactions, including realistic cursor movements, humanized click delays, and automatic cookie popup dismissal.
    36
    95
    7
    MIT
  • A
    license
    C
    quality
    A
    maintenance
    An MCP server for JavaScript reverse engineering that enables AI to perform browser debugging, script analysis, and automated hook injection. It streamlines complex workflows like deobfuscation, network tracing, and risk assessment through direct browser integration.
    35
    67
    964
    Apache 2.0

View all related MCP servers

Related MCP Connectors

  • Live browser debugging for AI assistants — DOM, console, network via MCP.

  • MCP server for understanding Javascript internals from ECMAScript specification.

  • A paid remote MCP for AI agent browser approval MCP, built to return verdicts, receipts, usage logs,

View all MCP Connectors

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