Skip to main content
Glama

JS Reverse MCP

基于 Chrome DevTools Protocol (CDP) 的 MCP 服务器,让 AI 编码助手(Claude、Cursor、Windsurf 等)能够直接控制浏览器进行 JavaScript 调试、逆向分析、网页抓取和 API 调试。

基于 google-deepmind/chrome-devtools-mcp v0.10.2,添加了逆向工程相关工具增强。

功能特点

  • JS 调试: 断点、单步执行、调用栈、作用域变量检查

  • 脚本分析: 搜索/获取所有加载的 JS 脚本源码,精确定位压缩文件中的位置

  • 函数 Hook: Hook 任意函数(包括 webpack/rollup 模块内部函数),记录调用和返回值

  • 反混淆: 基于 AST(Babel)的 deobfuscate——作用域安全的变量重命名、常量折叠、死代码/不可达代码消除、字符串/数字规范化

  • 加密检测: 自动识别 CryptoJS、WebCrypto 等加密库,Hook 加密调用

  • 网络分析: 请求拦截/修改/Mock、XHR 断点、WebSocket 监控、请求调用栈追踪

  • 网页抓取: CSS 选择器提取、表格/链接/结构化数据/元数据提取

  • API 调试: 在浏览器上下文中发送 HTTP 请求,管理多账号 Token,Firebase 登录

  • Protobuf: 编解码 Protobuf 消息,解析 gRPC-Connect API 响应

  • DOM 调试: DOM 断点、表单监控、输入框变化追踪

  • 全局变量: 监控全局变量变化,快照对比找出差异

  • 代码覆盖率: 分析 JS 代码执行覆盖率,识别未使用的代码

Related MCP server: BrowserGenie MCP Server

系统要求

安装

git clone https://github.com/1600822305/js-reverse-mcp.git
cd js-reverse-mcp
npm install
npm run build

MCP 客户端配置

方式一:自动启动 Chrome(推荐新手)

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

方式二:连接已运行的 Chrome(推荐逆向场景)

第一步:以调试模式启动 Chrome(需先关闭所有 Chrome 窗口)

Windows

"C:\Program Files\Google\Chrome\Application\chrome.exe" --remote-debugging-port=9222 --user-data-dir="%TEMP%\chrome-debug"

macOS

/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --remote-debugging-port=9222 --user-data-dir=/tmp/chrome-debug

第二步:配置 MCP 连接

{
  "mcpServers": {
    "js-reverse": {
      "command": "node",
      "args": [
        "/你的路径/js-reverse-mcp/build/src/index.js",
        "--browser-url=http://127.0.0.1:9222"
      ]
    }
  }
}

方式三:WebSocket 连接(支持自定义 Header)

{
  "mcpServers": {
    "js-reverse": {
      "command": "node",
      "args": [
        "/你的路径/js-reverse-mcp/build/src/index.js",
        "--ws-endpoint=ws://127.0.0.1:9222/devtools/browser/<id>",
        "--ws-headers={\"Authorization\":\"Bearer token\"}"
      ]
    }
  }
}

Claude Code

claude mcp add js-reverse node /你的路径/js-reverse-mcp/build/src/index.js

Cursor / Windsurf

进入 MCP 设置,添加上述 JSON 配置。


完整工具列表

脚本分析

工具

描述

list_scripts

列出页面中所有加载的 JS 脚本(含 URL、sourceMap 信息)

get_script_source

获取脚本源码,支持行范围或字符偏移(适用于压缩文件)

find_in_script

在脚本中查找文本,返回精确行号和列号及上下文

search_in_sources

在所有已加载脚本中搜索字符串或正则表达式

断点管理

工具

描述

set_breakpoint

在指定 URL 和行号设置断点,支持条件断点

set_breakpoint_on_text

通过搜索代码文本自动定位并设置断点(适用于压缩代码)

remove_breakpoint

移除断点

list_breakpoints

列出所有活动断点

调试控制

工具

描述

get_paused_info

获取暂停状态、调用栈和作用域变量

resume

恢复执行

pause

暂停执行

step_over

单步跳过(不进入函数体)

step_into

单步进入函数

step_out

单步跳出当前函数

evaluate_on_callframe

在暂停的调用帧上下文中求值表达式

函数 Hook 与追踪

工具

描述

hook_function

Hook 全局函数或对象方法(如 fetchXMLHttpRequest.prototype.open),记录调用参数和返回值

unhook_function

移除函数 Hook

list_hooks

列出所有活动的 Hook

trace_function

追踪任意函数调用(包括 webpack/rollup 打包的模块内部函数),使用条件断点实现,不暂停执行

网络调试

工具

描述

list_network_requests

列出页面所有网络请求(基于 DevTools 面板)

break_on_xhr

设置 XHR/Fetch URL 断点

remove_xhr_breakpoint

移除 XHR 断点

search_network

在 CDP 抓包仓库中按 URL/方法/状态/资源类型检索,支持跨请求/响应体全文搜索(导航后仍保留)

get_response_body

按数字 id 获取抓到的完整响应体(二进制返回 base64)

export_har

将抓到的网络流量导出为 HAR 1.2 文件(可含响应体)

replay_request

在页面上下文用 fetch() 重放抓到的请求(带 Cookie),可覆盖 URL/方法/头/体

add_network_rule

新增拦截规则(替代旧 intercept_requests):单一 Fetch 派发器,多规则共存,支持 Request/Response 两个阶段,可改写真实响应体

list_network_rules

列出活动拦截规则及命中统计

remove_network_rule

按 id 移除拦截规则(移除最后一条后自动关闭 Fetch 拦截)

monitor_websocket

通过 CDP 原生事件捕获 WebSocket 帧(含导航前/二进制帧,不可被页面探测)

stop_websocket_monitor

停止 WebSocket 捕获(已抓数据保留)

list_websocket_connections

列出追踪的 WebSocket 连接及收发计数

list_websocket_messages

列出抓到的 WebSocket 帧,可按连接/方向/URL/内容过滤(二进制显示为 base64)

monitor_eventsource

通过 CDP 捕获 Server-Sent Events (EventSource) 消息

stop_eventsource_monitor

停止 SSE 捕获

list_eventsource_messages

列出抓到的 SSE 消息,可按 URL/内容过滤

set_network_conditions

模拟网络条件(离线/限速/延迟)并可覆盖 User-Agent(CDP Network 域)

set_extra_headers

为后续所有请求设置额外 HTTP 头(传空对象清除)

clear_network_conditions

重置网络模拟、UA 覆盖与额外头

API 调试与 Token 管理

工具

描述

api_request

在浏览器上下文中发送 HTTP 请求(共享 Cookie 和 Origin),支持自动注入 Token

save_token

保存认证 Token(支持 Firebase/JWT/API Key/Bearer 等类型)

list_tokens

列出所有已保存的 Token

set_active_token

设置当前活动 Token

delete_token

删除已保存的 Token

Protobuf / gRPC

工具

描述

encode_protobuf

将字段编码为 Protobuf 二进制(无需 .proto 文件)

decode_protobuf

解码 Protobuf 二进制:传入 data(Hex/Base64)或 url(自动请求并解析 gRPC-Connect 响应)

网页抓取

工具

描述

extract

统一抽取工具,用 type 选择模式:elements(CSS 选择器取文本/属性/innerHTML)/ structured(字段 Schema,可跨 containerSelector 取列表,字段可取属性或 innerHTML)/ links(链接,支持 URL 正则过滤)/ table(表格行列)/ textBlocks(按标题层级分块)。auto(默认)有 fields 走 structured 否则 elements;可先 clickSelector+waitForSelector/waitMs 再抽取

extract_metadata

提取页面元数据(JSON-LD、Open Graph、Twitter Card、标准 meta)

extract_form_data

提取表单结构和当前值(含隐藏字段;默认返回所有表单、密码打码)

加密检测与分析

工具

描述

detect_encryption

检测加密库/算法/编码:scope 可选 page(运行时全局,默认)/scripts(扫描所有脚本源码中的加密函数)/both

analyze_encoded_string

分析字符串的编码类型(Base64/Hex/JWT/URL 编码等)并解码

hook_crypto_functions

自动 Hook CryptoJS、JSEncrypt、Web Crypto API 等常见加密库

反混淆

工具

描述

beautify_script

美化压缩/混淆的 JavaScript 代码

deobfuscate

基于 AST(Babel)的反混淆:作用域安全的变量重命名、常量折叠、死代码/不可达代码消除、字符串/数字规范化

代码覆盖率

工具

描述

start_js_coverage

开始收集 JavaScript 代码覆盖率(若已在收集会提示)

stop_js_coverage

停止收集并生成报告,可按覆盖率阈值过滤

全局变量监控

工具

描述

list_globals

列出页面上所有自定义全局变量(排除浏览器内置)

watch_global

监控全局变量变化,记录修改时的调用栈

unwatch_global

停止监控全局变量

list_watchers

列出所有活动的变量监控器

snapshot_globals

创建全局变量快照

diff_globals

对比快照找出新增/修改的全局变量

DOM 断点与表单

工具

描述

break_on_subtree_modified

DOM 子树修改时触发断点

break_on_attribute_modified

元素属性修改时触发断点

break_on_node_removed

元素被删除时触发断点

remove_dom_breakpoint

移除 DOM 断点

monitor_form_submit

监控表单提交,捕获所有字段值

stop_form_monitor

停止表单监控

monitor_input_changes

实时监控输入框变化(包括密码框)

stop_input_monitor

停止输入监控

检查工具

工具

描述

inspect_object

深度检查 JavaScript 对象结构、原型链和方法

get_storage

获取 Cookie、localStorage、sessionStorage

monitor_events

监控元素或 window 上的 DOM 事件

stop_monitor

停止事件监控

页面导航

工具

描述

list_pages

列出浏览器中所有打开的页面

select_page

选择一个页面作为调试上下文

new_page

创建新页面并导航到 URL

navigate_page

导航当前页面(支持前进/后退/刷新)

页面交互

工具

描述

take_screenshot

截取页面截图(支持全页面/元素)

take_snapshot

获取页面无障碍树快照

evaluate_script

在页面中执行 JavaScript

list_console_messages

获取控制台消息


使用示例

逆向加密参数

1. list_pages → 选择目标页面
2. search_in_sources "encrypt" → 找到加密函数位置
3. set_breakpoint_on_text "encryptData(" → 在加密函数入口设断点
4. 触发页面操作 → 断点命中
5. get_paused_info → 查看参数和调用栈
6. evaluate_on_callframe "arguments[0]" → 查看明文数据

Hook 所有网络请求

hook_function "fetch" → 记录所有 fetch 调用的 URL、参数和响应
hook_function "XMLHttpRequest.prototype.open" → 同时监控 XHR

分析 Protobuf API

1. list_network_requests → 找到 content-type: application/proto 的请求
2. decode_protobuf url="https://..." → 直接请求并解码响应

代码覆盖率分析

1. start_js_coverage
2. 与页面交互,触发业务流程
3. stop_js_coverage minCoverage=30 → 只显示覆盖率低于30%的脚本(找死代码)

反混淆流程

1. list_scripts → 找到混淆脚本的 scriptId
2. deobfuscate scriptId="..." → AST 反混淆(变量重命名 + 常量折叠 + 死代码消除 + 字符串/数字规范化)
3. deobfuscate scriptId="..." aggressive=true → 更激进地重命名短名/_0x 前缀名
4. (仅需美化时)beautify_script scriptId="..." → 纯格式化

CLI 配置选项

选项

描述

默认值

--browser-url, -u

连接到已运行的 Chrome(HTTP URL)

--ws-endpoint, -w

连接到已运行的 Chrome(WebSocket URL)

--ws-headers

WebSocket 连接的自定义 Header(JSON 格式)

--headless

无头模式运行

false

--executable-path, -e

自定义 Chrome 可执行文件路径

--isolated

使用临时用户数据目录,关闭后自动清理

false

--channel

Chrome 通道:stable / canary / beta / dev

stable

--viewport

初始视口大小,如 1280x720

--proxy-server

Chrome 代理服务器配置

--accept-insecure-certs

忽略 SSL 证书错误(自签名/过期证书)

false

--log-file

调试日志输出路径

--no-category-network

禁用所有网络相关工具

--chrome-arg

传递额外参数给 Chrome(可多次指定)


安全提示

此工具将浏览器内容完整暴露给 MCP 客户端,允许检查、调试和修改浏览器中的任何数据(包括 Cookie、Token、请求内容)。请勿在含有敏感信息的页面上使用,并确保 MCP 客户端来源可信。

许可证

Apache-2.0 — Copyright 2025 Google LLC

A
license - permissive license
-
quality - not tested
B
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

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/1600822305/js-reverse-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server