JS Reverse
noone-hub/jsreverser-mcp · 683 stars · TypeScript · Apache-2.0
MCP server JSReverser-MCP 是一个面向 JavaScript 逆向分析的 MCP 工具,专门用于帮助开发者在真实浏览器环境中高效定位前端核心逻辑。它 将脚本检索、断点调试、函数 Hook、网络请求追踪、调用链分析、混淆还原和风险评估整合为统一能力,可直接接入 Claude、 Codex、Cursor 等支持 MCP 的客户端。你可以连接已开启的 Chrome,在登录态页面下持续采样请求参数与返回数据,快速定位签名、 加密、鉴权和关键业务流程。工具同时支持自动化页面操作与结构化报告导出,适合用于接口分析、安全研究、前端调试与工程排障等 场景
Install
claude mcp add js-reverse node /ABSOLUTE/PATH/JSReverser-MCP/build/src/index.jsThese repos do not share one command. When an entry shows a command, it was copied as published. Check the repo's README before you run it.
Files
JS Reverse MCP
一个把前端 JavaScript 逆向流程标准化的 MCP 服务。 目标不是只做页面调试,而是把页面观察、运行时采样、本地复现、补环境和证据沉淀串成一套可复用工作流。
核心方法论
本项目默认遵循以下方法论:
Observe-firstHook-preferredBreakpoint-lastRebuild-orientedEvidence-firstPure-extraction-after-pass
这意味着:
- 先在浏览器里确认请求、脚本、函数和依赖来源
- 再做最小化 Hook 采样
- 再导出 local rebuild
- 再在 Node 里逐项补环境
- 每一步都沉淀为 task artifact,而不是只留在对话里
已沉淀链路
以下参数链路已有公开索引,可作为仓库内复用入口:
- 某东
h5st参数 - 索引:scripts/cases/README.md
- Case:scripts/cases/jd-h5st-pure-node.mjs
- 某手
falcon风控参数 - 索引:scripts/cases/README.md
- Case:scripts/cases/ks-hxfalcon-pure-node.mjs
- 某音
a-bogus参数 - 索引:scripts/cases/README.md
- Case:scripts/cases/douyin-a-bogus-pure-node.mjs
说明:
- README 首页只展示脱敏后的参数类型和公开入口
- 真实
artifacts/tasks/<task-id>/默认视为本地私有任务目录 - Git 默认只提交
artifacts/tasks/_TEMPLATE/
参数蓝图库
公开参数方法已沉淀到 docs/knowledge/parameter-blueprints/,用于替代旧的可运行 case 入口。查看和贡献方式:
node build/src/index.js --list-parameter-workflows
node build/src/index.js --show-parameter-workflow jd-h5st
node build/src/index.js --export-parameter-workflow-template
node build/src/index.js --validate-parameter-workflow docs/knowledge/parameter-blueprints/jd-h5st
贡献规范见 docs/guides/parameter-workflow-contribution.md。
支持的能力
页面观察与脚本定位
先回答“页面里有哪些脚本、目标代码大概在哪”。
list_scripts:列出当前页面已加载的脚本,先建立脚本范围。get_script_source:查看指定脚本源码,适合继续阅读具体实现。find_in_script:在单个脚本里定位字符串、变量名或特征片段。search_in_scripts:在已采集脚本缓存中批量搜索,适合缩小候选脚本范围。
Hook 与运行时采样
先做最小侵入式观测,确认运行时到底调用了什么。
create_hook:创建可复用的 hook 定义,用于后续注入页面。inject_hook:把已有 hook 注入当前页面,开始采样目标行为。get_hook_data:读取 hook 采集到的调用记录和摘要结果。hook_function:直接 hook 全局函数或对象方法,记录参数和返回值。trace_function:按源码函数名做调用追踪,适合跟调用链。
断点与调试控制
当 hook 不够时,再进入暂停式调试。
set_breakpoint:按脚本 URL 和行号设置断点。set_breakpoint_on_text:按代码文本自动定位并设置断点。resume:继续执行到下一个断点或执行结束。pause:手动暂停当前页面的 JavaScript 执行。step_over/step_into/step_out:单步控制执行路径,分别对应跳过、进入、跳出函数。
请求链路与网络分析
定位目标请求,确认是谁发起、带了什么参数。
list_network_requests:列出当前页面的网络请求,先找到目标请求。get_network_request:查看单个请求的详细内容,包括请求头、响应和载荷。get_request_initiator:追溯某个请求是谁触发的,帮助定位调用链。break_on_xhr:在目标请求发出时中断,适合抓参数生成前的现场。
页面状态与运行前检查
补看页面运行状态、控制台输出和本地状态依赖。
check_browser_health:检查浏览器连接和当前页是否可控,适合作为起手验证。diagnose_environment:输出 Node、浏览器、路径和依赖状态,适合第一次启动建议和故障排查。recommend_next_step:根据当前证据推荐下一步动作。explain_reverse_stage:解释当前逆向阶段、输入要求和退出条件。list_console_messages:查看当前页面 console 输出,适合回看 hook 和 trace 日志。get_storage:读取 cookie、localStorage、sessionStorage,确认状态依赖。evaluate_script:在当前选中 frame 内执行一段函数,做小范围运行时验证。search_in_sources:在所有已加载源码中搜索关键字,快速缩小可疑代码范围。
WebSocket 观察与消息分组
处理长连接、直播流或二进制帧时,用这组工具先分流再细看。
list_websocket_connections:列出当前页面的 WebSocket 连接,先拿到目标wsid。analyze_websocket_messages:按帧特征做消息分组,适合先识别不同消息类型。get_websocket_messages:查看某个连接或某个分组下的消息摘要和内容。
本地复现与补环境
把页面证据带回本地,逐步补齐 Node 运行环境。
export_rebuild_bundle:导出本地复现工程所需的入口、补环境和证据材料。diff_env_requirements:根据报错和观测能力比对当前缺失的环境能力。record_reverse_evidence:把关键观察结果写入 task artifact,避免证据只留在对话里。
页面自动化
做最小必要的页面操作,复现触发条件并辅助取证。
navigate_page:跳转、回退、刷新当前页面。query_dom:查询页面元素,确认选择器和节点状态。click_element:按选择器触发点击,复现页面动作。hover_element/select_option:处理菜单悬停和原生下拉框选择。type_text:向输入框写入文本,驱动表单交互。press_key/upload_file:补齐键盘提交和文件上传场景。scroll_page/wait_for_network_idle:稳定触发懒加载和请求结束后的取证。set_viewport/emulate_device:复现移动端或特定视口下的签名链路。get_all_links:快速盘点页面链接,辅助发现跳转入口。take_screenshot:截取页面当前状态,保留可视化证据。
深度分析
在拿到代码和运行时证据后,继续做结构理解与去混淆。
collect_code:采集页面代码,支持按优先级或范围控制采样量。understand_code:结合静态分析和 AI 做代码结构、业务逻辑与风险理解。deobfuscate_code:对混淆代码做清理、还原和辅助分析。risk_panel:聚合代码分析、加密检测和 hook 信号,输出综合风险视图。
会话与登录态复用
save_session_state:保存当前页面的 cookie 和存储状态到内存快照。restore_session_state:把快照恢复到当前页面,复用登录态和现场。dump_session_state:把会话快照导出为 JSON 文件,便于持久化。load_session_state:从已有 JSON 或字符串重新载入会话快照。
逆向任务编排与 Agent 消费
start_reverse_task/create_reverse_task_from_request:从目标、请求或页面证据创建 task artifact,供后续 summarize / progress / orchestration 复用。manage_reverse_task:默认入口就是manage_reverse_task,支持get / summarize以及archive / restore / search / tag / prune / compare。orchestrate_reverse_task:按阶段推进观察、采样、重建、验证和提纯,输出recommendedStrategy、agentGuidance、fallbackPlan和skipSteps。run_reverse_agent:提供面向 agent 的一站式任务运行入口。query_reverse_task:读取 compact 摘要、下一步建议、outputMode、artifacts、patchSuggestions、evidenceAggregates和可续跑 payload。get_rebuild_health_report:汇总 local rebuild 健康状态,辅助 env-fix。export_rebuild_bundle支持 portable bundle / replay bundle 导出,便于把env-pass结果交给后续纯算法提取。
CLI cheatsheet:
node build/src/index.js --doctor
node build/src/index.js --manageReverseTask list
node build/src/index.js --manageReverseTask get --taskId <taskId>
node build/src/index.js --manageReverseTask summarize --taskId <taskId>
node build/src/index.js --manageReverseTask progress --taskId <taskId>
node build/src/index.js --manageReverseTask search --query sign --tag jd
node build/src/index.js --manageReverseTask compare --taskId <taskId> --otherTaskId <otherTaskId>
node build/src/index.js --orchestrateReverseTask <taskId>
node build/src/index.js --orchestrateReverseTask <taskId> --execute --resume
node build/src/index.js --orchestrateReverseTask <taskId> --strategy env-fix
node build/src/index.js --orchestrateReverseTask <taskId> --executionOverrides '{"resume":true}'
node build/src/index.js --runReverseAgent <taskId>
更多细节见:
- docs/guides/reverse-task-orchestration.md
- docs/guides/mcp-agent-quick-reference.md
- docs/guides/mcp-client-auto-resume-example.md
- docs/reference/reverse-agent-response.schema.json
- docs/reference/reverse-agent-schema-versioning.md
完整参数说明见 docs/reference/tool-reference.md。 按逆向流程选工具可继续看 docs/reference/reverse-workflow.md。
外部 AI 怎么配置
这个项目支持把外部 LLM 作为“分析增强层”接进来,当前支持:
openaianthropicgemini
配置入口本质上是进程环境变量。 通过 MCP 客户端启动时,优先在 MCP server 配置里的 env 传入;.env 只适合你直接本地运行 node build/src/index.js 或 npm run start 的场景。
推荐方式示例:
[mcp_servers.js-reverse]
command = "node"
args = ["/ABSOLUTE/PATH/JSReverser-MCP/build/src/index.js"]
[mcp_servers.js-reverse.env]
DEFAULT_LLM_PROVIDER = "anthropic"
ANTHROPIC_API_KEY = "your_key"
ANTHROPIC_MODEL = "claude-3-5-sonnet-20241022"
如果你是直接在项目目录本地启动,也可以使用 .env:
# 三选一:openai / anthropic / gemini
DEFAULT_LLM_PROVIDER=gemini
# OpenAI
OPENAI_API_KEY=your_key
OPENAI_MODEL=gpt-4o
OPENAI_BASE_URL=
# Anthropic / Claude
ANTHROPIC_API_KEY=your_key
ANTHROPIC_MODEL=claude-3-5-sonnet-20241022
ANTHROPIC_BASE_URL=
# Gemini
GEMINI_API_KEY=your_key
GEMINI_MODEL=gemini-2.0-flash-exp
# 如果不用 API,也可以走本地 CLI
GEMINI_CLI_PATH=gemini-cli
说明:
DEFAULT_LLM_PROVIDER决定默认走哪个 providergemini支持两种模式:有GEMINI_API_KEY时走 API;没有时会尝试走GEMINI_CLI_PATHopenai和anthropic需要对应 API key- 如果你配了多个 provider,实际使用哪个,仍由
DEFAULT_LLM_PROVIDER决定
哪些功能依赖外部 AI
强依赖外部 AI 的功能:
understand_code- 内部会调用 LLM 做代码语义理解、业务逻辑提取、安全风险补充
可选启用外部 AI 的功能:
detect_crypto- 只有传
useAI=true时才会额外调用 LLM;不传时主要依赖本地规则和 AST 分析 analyze_target- 传
useAI=true时会在一站式分析里启用更深的 AI 辅助分析 risk_panel- 参数里有
useAI,但当前实现主体仍以本地分析结果聚合为主
有 AI 时效果更好,但不配也能运行的功能:
deobfuscate_code- 本地规则、AST 优化、专项反混淆管线始终可用;配置外部 AI 后,复杂语义清理、VM 结构理解、部分编码型混淆降级分析会更完整
完全不依赖外部 AI 的功能:
- 浏览器接管
- Hook / 断点 / Console / Storage / Network / WebSocket
collect_codeexport_rebuild_bundlediff_env_requirementsrecord_reverse_evidence
如果没配外部 AI,典型影响是:
understand_code会先返回本地静态分析结果,并在aiRuntime里提示 provider / CLI fallback 状态detect_crypto(useAI=true)会退回本地分析或忽略 AI 增强deobfuscate_code仍可跑,但某些高难度混淆的解释和清理质量会下降
标准任务结构
任务目录统一使用:
artifacts/tasks/_TEMPLATE/artifacts/tasks/<task-id>/
推荐目录结构:
task.jsonruntime-evidence.jsonlnetwork.jsonlscripts.jsonlenv/env.jsenv/polyfills.jsenv/entry.jsenv/capture.jsonrun/report.md
职责边界:
env.js- 基础宿主对象和最小 shim
polyfills.js- 代理诊断层、
watch、safeFunction、makeFunction entry.js- 运行入口、目标脚本加载、first divergence 输出
标准执行流程
推荐流程:
- 页面观察
- 运行时采样
- 证据入库
- local rebuild
- 逐项补环境
- first divergence 定位
env-pass后再进入纯算法 / 风控逻辑提纯
默认原则:
- 不要跳过页面证据直接猜环境
- 不要一次性全量模拟浏览器
Facts
- Kind
- MCP server
- Repo
- noone-hub/jsreverser-mcp
- Group
- Uncategorized
- Stars
- 683
- License
- Apache-2.0
- Language
- TypeScript
- Last push
- 2026-05-31
- Forks
- 195
- 1Everythingmodelcontextprotocol/serversThis MCP server attempts to exercise all the features of the MCP protocol. It is not intended to be a useful server, but rather a test server for builders of MCP clients. It implements prompts, tools, resources, sampling, and more to showcase MCP capabilities.85.8k
- 2Fetchmodelcontextprotocol/serversA Model Context Protocol server that provides web content fetching capabilities. This server enables LLMs to retrieve and process content from web pages, converting HTML to markdown for easier consumption.85.8k
- 3Gitmodelcontextprotocol/serversA Model Context Protocol server for Git repository interaction and automation. This server provides tools to read, search, and manipulate Git repositories via Large Language Models.85.8k
- 4Memorymodelcontextprotocol/serversA basic implementation of persistent memory using a local knowledge graph. This lets Claude remember information about the user across chats.85.8k
- 5Sequential Thinkingmodelcontextprotocol/serversAn MCP server implementation that provides a tool for dynamic and reflective problem-solving through a structured thinking process.85.8k
- 6Timemodelcontextprotocol/serversA Model Context Protocol server that provides time and timezone conversion capabilities. This server enables LLMs to get current time information and perform timezone conversions using IANA timezone names, with automatic system timezone detection.85.8k