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 代理的典型工作流程
new_page→ 打开目标 URL。list_scripts→ 定位感兴趣的函数(例如搜索encrypt)。set_breakpoint_on_text→ 在函数入口处设置断点。- 触发页面操作;暂停后,使用
get_paused_info和evaluate_script检查参数。 - 使用
list_network_requests … outputFile=…导出相关网络请求。 - 可选地
clear_site_data并重复以重放反机器人流程。
安全提示
- 除非设置了
--allowedRoots,否则服务器可以读写主机上的任意文件,因此应在受控环境中运行。 - 它会向连接的 AI 模型暴露完整的浏览器状态(Cookie、localStorage、控制台输出)——避免在包含敏感数据的页面上使用。
许可证
Apache‑2.0
简而言之: js‑reverse‑mcp 是一个“以 AI 为先”的调试桥梁,将 Chrome DevTools 数据转化为 LLM 代理使用的简洁工具箱,并内置隐蔽功能以应对反爬网站。这是一个真正面向 AI 辅助 JavaScript 逆向工程和自动化网页分析的软件项目。
相关
- 项目
- 项目
- 项目
- 项目
- 项目