jjx-js-reverse-mcp

jjx-js-reverse-mcp

A unified MCP server for JavaScript reverse engineering that provides full hook, breakpoints, script debugging, and browser automation with CDP anti-detection, supporting both ATTACH and LAUNCH modes.

Category
访问服务器

README

jjx-js-reverse-mcp

English README

统一的 JavaScript 逆向 MCP:全量 Hook / 断点 / 脚本调试 + 浏览器操作链路 + CDP 反检测。

一个进程只连接一个浏览器,解决同时挂 js-reverse-mcpchrome-devtools-mcp 导致开两个窗口的问题。

模式由启动参数决定,不是由对话提示词决定。
提示词无法让 MCP「自动识别」ATTACH / LAUNCH;要换模式请改 mcp.json 后 Reload,或注册两套 MCP 条目后选用。

快速选型

你的场景 推荐模式 关键参数
已用 bat / 手动开浏览器并登录,要保登录态 ATTACH --remoteDebuggingPort 9333(或你的端口)
从零自动化、可重登、不在乎黄条 LAUNCH --executablePath + 建议 --isolated
日常逆向、减少 Agent 工具噪声 任意模式 + --toolProfile slim(含 AI 反混淆/理解,不含 heap/trace)
只做侦察(读脚本/网络,禁导航关页) 任意模式 + --toolProfile observe
专注 Hook / 断点 任意模式 + --toolProfile hook
需要性能 trace / 堆快照 / 深层 Wasm decompile 任意模式 + --toolProfile full(默认)
纯调试、关闭 CDP leak guard 任意模式 + --no-stealth

双模式浏览器生命周期

模式 何时使用 CLI(互斥) 退出时
ATTACH 浏览器已带 --remote-debugging-port 打开,并已访问目标站 --browserUrl / --remoteDebuggingPort / --wsEndpoint / --autoConnect disconnect不杀用户浏览器
LAUNCH 需要 MCP 自己启动 Chrome/CloakBrowser --executablePath / --channel 关闭 MCP 启动的实例
  • ATTACH 与 LAUNCH 参数互斥(不能同时写 --remoteDebuggingPort--executablePath)。
  • ATTACH 失败时不会偷偷新开浏览器(避免「以为接管,其实又起了一个」)。
  • 运行时可调 attach_browser 动态接管;没有对称的「动态 launch」工具——真要自启必须用 LAUNCH 启动参数。

工具:get_browser_mode / attach_browser / check_browser_health

ATTACH:CLI 示例

# 1) 手动启动(桌面 bat 常用 9333;也可 9222)
"你的chrome.exe路径" ^
  --remote-debugging-port=9333 --remote-allow-origins=*

# 2) 在浏览器里打开目标站并登录

# 3) MCP 接管(端口必须一致)
node build/src/index.js --remoteDebuggingPort 9333 --toolProfile slim
# 或
node build/src/index.js --browserUrl http://127.0.0.1:9333 --toolProfile slim

LAUNCH:CLI 示例

node build/src/index.js ^
  --executablePath "你的chrome.exe路径" ^
  --isolated ^
  --toolProfile slim

Cursor mcp.json:按场景复制

全局配置路径一般是:%USERPROFILE%\.cursor\mcp.json
改完后务必:Settings → Tools & MCP → Reload 对应 server。

路径请按本机修改:你的jjx-js-reverse-mcp路径你的chrome.exe路径

场景 1 — ATTACH 日常逆向(推荐)

适合:保登录态、少开新窗、配合 Cloak Browser.bat

{
  "mcpServers": {
    "jjx-js-reverse-mcp": {
      "command": "cmd",
      "args": [
        "/c",
        "node",
        "你的jjx-js-reverse-mcp路径/build/src/index.js",
        "--remoteDebuggingPort",
        "9333",
        "--toolProfile",
        "slim"
      ]
    }
  }
}

流程:先开 bat → 手动打开目标站 → Reload MCP(若未加载)→ 对话里要求「禁止 new_page / 禁止 launch,先 list_pages」。

场景 2 — ATTACH 经典 9222

浏览器用 --remote-debugging-port=9222 启动时:

{
  "mcpServers": {
    "jjx-js-reverse-mcp": {
      "command": "cmd",
      "args": [
        "/c",
        "node",
        "你的jjx-js-reverse-mcp路径/build/src/index.js",
        "--remoteDebuggingPort",
        "9222",
        "--toolProfile",
        "slim"
      ]
    }
  }
}

场景 3 — LAUNCH 自启 Cloak(自动化 / 可重登)

适合:不需要已有登录态;接受可能出现「Chrome 正受到自动测试软件的控制」黄条。

{
  "mcpServers": {
    "jjx-js-reverse-mcp": {
      "command": "cmd",
      "args": [
        "/c",
        "node",
        "你的jjx-js-reverse-mcp路径/build/src/index.js",
        "--executablePath",
        "你的chrome.exe路径",
        "--isolated",
        "--toolProfile",
        "slim"
      ]
    }
  }
}
  • --isolated:临时 profile,减少「browser already running / profile 占用」。
  • 不要与已占用同一 profile 的 bat 实例抢目录;冲突时先关多余浏览器,或改回 ATTACH。

场景 4 — 两套并存(ATTACH + LAUNCH,对话时选用)

不想反复改配置时,注册两个 server,在 Cursor 里启用/选用对应那一个:

{
  "mcpServers": {
    "jjx-attach": {
      "command": "cmd",
      "args": [
        "/c",
        "node",
        "你的jjx-js-reverse-mcp路径/build/src/index.js",
        "--remoteDebuggingPort",
        "9333",
        "--toolProfile",
        "slim"
      ]
    },
    "jjx-launch": {
      "command": "cmd",
      "args": [
        "/c",
        "node",
        "你的jjx-js-reverse-mcp路径/build/src/index.js",
        "--executablePath",
        "你的chrome.exe路径",
        "--isolated",
        "--toolProfile",
        "slim"
      ]
    }
  }
}

注意:两个都启用时,Agent 可能调到「错的」那套;提示词里写明用 jjx-attachjjx-launch,或只启用其中一个。

场景 5 — 工具面更小(observe / hook)

只改 --toolProfile,模式参数不变。

侦察(更少工具、决策更快):

--toolProfile observe

Hook / 断点为主:

--toolProfile hook

全量(含 performance / heapsnapshot / 重型 AI / 深层 Wasm):

--toolProfile full
Profile 大约用途 说明
full 全能力 默认;含 close_page、performance trace、heapsnapshot、深层 Wasm
slim 日常逆向 推荐;含 deobfuscate_code / understand_code / analyze_wasm_module不含 close_page(防误关登录页)、不含 heap/trace
observe 只读侦察 不含 navigate_page / new_page / close_page / 点击填表
hook Hook + 调试 聚焦注入与断点

场景 6 — 关闭 Stealth(纯调试)

在 ATTACH 或 LAUNCH 的 args 末尾追加:

"--no-stealth"

强风控站点逆向一般保持默认 Stealth(勿加该项)。

场景 7 — ATTACH 自动探测端口

探测本机 9222–9225;找不到则报错且不 launch

{
  "mcpServers": {
    "jjx-js-reverse-mcp": {
      "command": "cmd",
      "args": [
        "/c",
        "node",
        "你的jjx-js-reverse-mcp路径/build/src/index.js",
        "--autoConnect",
        "--toolProfile",
        "slim"
      ]
    }
  }
}

桌面 bat 若固定 9333,不在 9222–9225 范围内时请用场景 1 的显式端口,不要依赖 --autoConnect


提示词与配置的关系

你想做的事 正确做法
接管 bat 已开浏览器 mcp.json 用 ATTACH + 端口一致;提示词写「禁止 launch / new_page」
MCP 自己开浏览器 mcp.json 改成 LAUNCH 并 Reload(或用 jjx-launch 条目)
只改提示词切换模式 无效——服务端不读聊天内容

本地可参考话术模版:

  • 你的ATTACH模式提示词模版路径
  • 你的LAUNCH模式提示词模版路径

更多说明:docs/guides/browser-modes.mddocs/guides/anti-detect.md


CDP 反检测(精简)

默认开启基础 CDP leak guard(可用 --no-stealth 关闭):

  1. CdpLeakGuard:清理 cdc_* / selenium 全局、修补 navigator.webdriver、最小 chrome.*、Error stack 脱敏;新文档预注入 + 导航后补注
  2. evaluate_script / 注入路径:优先 CDP Runtime.evaluate,减少 __puppeteer_evaluation_script__ 泄漏
  3. 已移除StealthScripts2025(Chrome 131 UA / Canvas / WebGL / Audio 等指纹伪装)——过时且易与真实内核冲突

工具:enable_cdp_guard / inject_stealth(等同基础 guard)/ stealth_status
手动 UA:set_user_agent(不改 Client Hints)

强风控请用 CloakBrowser 原生指纹 + 真实登录态 ATTACH。本 MCP 不做「可过强检测」的全家桶 stealth;协议级方案(如 rebrowser-patches)需单独集成,未内置。

详见 docs/guides/anti-detect.md


能力概览

  • Hook:create_hook / inject_hook(默认 persist 跨导航)/ get_hook_data / remove_hook(顺带清页面 store)/ hook_function
  • 调试:脚本源码、断点、XHR break、步进、callframe evaluate(hook_function 等走 CDP safeEvaluateIife
  • 浏览器:导航、snapshot+uid 点击/填表、fill_form、网络/控制台、会话态
  • 逆向:采集、反混淆、加密检测、Wasm、rebuild、证据导出
  • 观测:performance_*(含 Insight)、take_heapsnapshot、轻量 page_vitals_audit——多在 fullperformance_start_tracereload 默认 false
  • 采集保会话:已在目标 URL 时 collect_code / collect_wasm 默认不 goto;显式 forceNavigate=true 才刷新;MCP 选中页上不会强改 UA
  • DOM / session:query_dom、存取 localStorage 等优先 CDP,减少 puppeteer sourceURL 泄漏

稳定性注意(逆向流程)

  1. list_pages + select_page:未选中页时 collector 会直接报错,不会再偷偷连默认 9222。
  2. collect_code 只采集一次:修复了旧版 returnMode=full 双次 collect;大站优先 returnMode=summary
  3. inject_hook 默认 persist:导航后 hook 仍在;若 hook 了 JSON.stringify 等全局,可能干扰后续页内 JSON 序列化——慎用或及时 remove_hook / 刷新。
  4. restore_session_state 默认不导航:需跳转时传 navigateToSavedUrl=true
  5. attach_browser:若当前是 LAUNCH 会话,shutdown 会关掉自启浏览器再改连(响应里有 previousLaunchClosed)。
  6. --autoConnect 只扫 9222–9225:其他端口请用 --remoteDebuggingPort

开发

npm install
npm run build
npm start -- --remoteDebuggingPort 9333 --toolProfile slim

压测:

# LAUNCH + ATTACH 主流程
node scripts/stress-reverse-flow.mjs

# 扫描修复项回归(profile / safeEval / getActivePage / hook persist)
node scripts/stress-fix-regression.mjs

要求:Node ^20.19 || ^22.12 || >=23

License

Apache-2.0。基于 chrome-devtools-mcpjs-reverse-strong-mcp 演进,见 NOTICE

推荐服务器

Baidu Map

Baidu Map

百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。

官方
精选
JavaScript
Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

官方
精选
本地
TypeScript
VeyraX

VeyraX

一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。

官方
精选
本地
graphlit-mcp-server

graphlit-mcp-server

模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。

官方
精选
TypeScript
Kagi MCP Server

Kagi MCP Server

一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

官方
精选
Python
e2b-mcp-server

e2b-mcp-server

使用 MCP 通过 e2b 运行代码。

官方
精选
Neon MCP Server

Neon MCP Server

用于与 Neon 管理 API 和数据库交互的 MCP 服务器

官方
精选
Exa MCP Server

Exa MCP Server

模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。

官方
精选