zhizhuodemao/js-reverse-mcp

AI Agent-first JS 逆向 MCP Server:有头 Chrome 调试、断点、网络/WebSocket 分析、Patchright 反检测,可选 CloakBrowser。

是什么

js‑reverse‑mcp 是一个基于 Node.js 的 MCP(模型控制程序)服务器,允许大型语言模型代理(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,获取源码(包括压缩版/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 调用栈,检查 WebSocket 流量。
浏览器状态 clear_site_data 重置当前站点的 Cookie、存储、缓存(适用于重放反机器人流程)。
工具 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,然后将 MCP 指向构建好的 index.js。
  • 可选标志 –
    • --cloak – 启用 CloakBrowser(首次运行时下载约 200 MiB 二进制文件)。
    • --isolated – 每次会话使用新的 user-data-dir 启动。
    • --browserUrl <CDP‑endpoint> – 连接到已运行的 Chrome(或 AdsPower 等指纹浏览器)。
    • --allowedRoots <path> – 限制代理可读写哪些主机目录。

AI 代理的典型工作流程

  1. new_page → 打开目标 URL。
  2. list_scripts → 定位感兴趣的函数(例如搜索 encrypt)。
  3. set_breakpoint_on_text → 在函数入口处设置断点。
  4. 触发页面操作;暂停后,使用 get_paused_info 和 evaluate_script 检查参数。
  5. 使用 list_network_requests … outputFile=… 导出相关网络请求。
  6. 可选地 clear_site_data 并重复以重放反机器人流程。

安全提示

  • 除非设置了 --allowedRoots,否则服务器可以读写主机上的任意文件,因此应在受控环境中运行。
  • 它会向连接的 AI 模型暴露完整的浏览器状态(Cookie、localStorage、控制台输出)——避免在包含敏感数据的页面上使用。

许可证

Apache‑2.0


简而言之: js‑reverse‑mcp 是一个“以 AI 为先”的调试桥梁,将 Chrome DevTools 数据转化为 LLM 代理使用的简洁工具箱,并内置隐蔽功能以应对反爬网站。这是一个真正面向 AI 辅助 JavaScript 逆向工程和自动化网页分析的软件项目。

相关

  • 项目
  • 项目
  • 项目
  • 项目
  • 项目