jshookmcp:通过 CDP 对已登录的真实 Chrome 进行插桩
Jshookmcp – instrument your real signed-in Chrome via CDP
jshookmcp 发布 @jshookmcp/jshook,一个面向 AI 智能体的搜索优先、profile 感知逆向工程工作区,可通过 CDP 对已登录的真实 Chrome 进行插桩。
@jshookmcp/jshook
面向 AI 智能体的搜索优先、配置感知逆向工程工作区。
Hook 页面、捕获网络、反混淆 bundle、反汇编 WASM、插桩进程——让一个 MCP 服务器把整个攻击面保持在触手可及之处,同时不让模型淹没在 schema 中。
English · 中文
有何不同 · 能力 · 使用场景 · 亮点 · 传输 · 注册表 · 架构 · 构建
由 Swiftproxy 赞助
— 用于 Web 自动化的优质住宅代理 · 10% 折扣码:PROXY90
jshook 有何不同
大多数用于 JS 分析的 MCP 服务器只暴露少量手写工具,或封装单一浏览器引擎。jshook 更接近一个前端逆向工程操作系统——36 个自发现域、一个让 token 成本保持可控的搜索优先元工具,以及能在页面损坏和会话断开后存活的运行时恢复:
- 搜索优先、配置感知。
search配置加载约 3K token 的工具元数据;full配置以约 109K token 暴露全部 735 个工具(测量于 2026-10-10——该数字随工具数量增长,因此当目录扩大时请重新测量)。智能体随任务增长在两者之间切换——search→workflow→full——而不是从第一轮起就淹没在 schema 中。 - 运行时恢复与会话隔离。可流式 HTTP 会话在重连后恢复已激活的域、浏览器附加状态和覆盖率状态;每个客户端的浏览器端状态保持隔离,因此两个智能体无法互相践踏对方的 CDP 会话。
- 全栈浏览器自动化。通过 CDP 使用 Chromium 和 Camoufox 并具备反检测能力、显式输入的 CAPTCHA 求解器(无内置页面/功能探测)、按需生成的自签名 HTTPS 拦截 CA,以及 HTTP/2 帧构建。
- 真正的逆向工程,而非字符串搜索。通过 wabt 进行 WASM 反汇编(
wasm2wat/wasm-decompile/wasm-objdump)、Frida/Ghidra/IDA 桥接、原生 FFI 扫描、硬件断点、PE 内省、GraphQL/Burp Suite 代理桥接,以及 AST 转换——而不是把一次正则调用包装成工具。 - 动态可扩展性。热重载插件、声明式工作流和自动发现让服务器无需重新部署即可持续成长。
能力概览
一览盒中之物。每一行都链接到下方详细的 能力概览。
| 领域 | 亮点 |
|---|---|
| 工具配置 | search(约 3K token,BM25 + 混合向量排序)· workflow(复合脚本)· full(全部 735 个工具) |
| 浏览器自动化 | Chromium 和 Camoufox · 通过 CDP 附加到现有目标 · 反检测预设 · 显式输入 CAPTCHA 求解器 · 弹窗、下载、权限和协议拦截器 |
| 网络拦截 | HTTP/1.1 + HTTP/2 帧构建 · 带自动生成 CA 的 MITM 代理 · WebSocket 捕获 · GraphQL 内省辅助工具 · Burp Suite 桥接 |
| JS Hook 与分析 | LLM 驱动的反混淆 · 加密例程检测 · AST 理解 · source-map 重建 · 脚本/scriptlet 提取与重放 |
| WASM 逆向工程 | wabt 反汇编 / C 转译(wasm2wat / wasm-decompile / wasm-objdump / wasm2c)· Binaryen wasm-opt · 纯 TS 段解析器 · 导入/导出列表 · 按段分组并恢复名称段的字符串提取 · 函数级二进制差异 · 混淆检测 · 函数级和基本块级插桩 |
| 进程与内存取证 | 原生 FFI 扫描 · 交叉引用图 · 硬件断点 · PE 内省 · 实时进程附加 · 带区域保护的内存读写 |
| 二进制插桩 | Frida 桥接 · Ghidra 和 IDA 桥接 · 系统调用挂钩 · TLS 密钥日志和会话工具 · Mojo IPC 分析 |
| Android 与 APK 分析 | APK 静态分诊 · manifest 转储与查询 · apktool 解码 / 构建 · jadx 反编译与代码搜索 · DEX 扫描 · 原生库列表 · APK 签名 · unidbg 模拟 · 运行时 DEX 转储 |
| 原生运行时 | 面向异构架构样本的原生模拟器 · 平台内省 · Mojo IPC · Dart Inspector · 用于设备端流量的 ADB 桥接 |
| 编码与转换 | URL/Base64/Hex/JWT/Protobuf 编码器 · AST 转换 · 流式解码管线 |
| 协调 | 带进度、取消和异步模式的后台任务队列 · 多智能体协调 · 覆盖率报告 |
| 模式优先的元工具 | describe_tool · 带参数校验的 call_tool · coverage_report · search_tools |
| 可插拔扩展注册表 | 热重载插件 · 声明式工作流 · 自动发现域 |
用例
| 场景 | 你做什么 | 涉及的域 |
|---|---|---|
| 快速浏览压缩后的 bundle | search_tools → deobfuscate → search_in_scripts → understand_code |
core |
| 逆向 CAPTCHA 挑战 | 驱动 Camoufox 页面 → 截图 → 用显式输入求解 → 重放 | browser, canvas |
| 捕获并重放 OAuth 流程 | proxy_start(自动 CA)→ network_get_requests → graphql_introspect → graphql_replay |
proxy, network, graphql |
| 逆向 WASM 加密例程 | wasm_dump → wasm_disassemble → generate_hooks → memory_breakpoint |
wasm, binary-instrument, memory |
| 分诊可疑 APK | apk_static_triage → apk_manifest_dump → jadx_decompile → dex_scan_file |
binary-instrument |
| 恢复掉线的浏览器会话 | 重新连接 Streamable HTTP → 恢复已激活的域和浏览器状态 | browser, coordination |
| 审计 Node 进程中的凭据 | process_list → memory_scan_filtered → binary_strings_extract |
process, memory, binary-instrument |
| 构建自定义工作流 | list_extension_workflows → run_extension_workflow |
workflow, extension-registry |
| 在实时进程中挂钩函数 | frida_spawn → frida_attach_interceptor → frida_run_script → frida_enumerate_functions |
binary-instrument |
快速开始
无需全局安装——添加到你的 MCP 客户端配置即可使用。
Claude Desktop / Cursor(claude_desktop_config.json):
{
"mcpServers": {
"jshook": {
"command": "npx",
"args": ["-y", "@jshookmcp/jshook@latest"],
"env": {
"MCP_TOOL_PROFILE": "search",
"npm_config_omit": "optional"
}
}
}
}(Windows:如果找不到 npx,请使用 npx.cmd 绝对路径。)
此轻量配置会跳过可选的 ONNX、Z3、Binaryen、Camoufox 和 Playwright
包。当需要这些完整配置的运行时,请移除 npm_config_omit。
在多个智能体之间共享一个守护进程
默认的 stdio 配置会为每个 MCP 主机启动一个完整的 jshook 进程。要共享 嵌入模型、浏览器运行时和缓存,请启动一个本地 Streamable HTTP 守护进程:
pnpm build pnpm daemon
向量搜索默认对每个客户端的 stdio 进程关闭,对共享的
HTTP 守护进程开启(延迟加载)。当词法搜索足够时,设置 SEARCH_VECTOR_ENABLED=false。
然后使用每个 MCP 客户端的 HTTP/URL 服务器
配置将其指向 http://127.0.0.1:3000/mcp。每个客户端都会收到自己的 MCP 会话和响应路由,而重量级
运行时资源仍保留在一个进程中。保持默认的环回绑定;在将端点暴露到 localhost 之外前,设置 MCP_AUTH_TOKEN。
随着任务增长提升配置
当你开始串联复合脚本时,将 MCP_TOOL_PROFILE 切换为 workflow,或者在你需要所有工具时切换为 full。coverage_report 可按需显示当前激活的集合。
亮点
- 配置文件阶梯。从
search开始(约 3K token 的元数据);在串联复合脚本时升级到workflow;仅当确实需要每个工具时才升级到full。coverage_report显示按需激活的内容。 - 元工具。
describe_tool返回 JSON Schema;call_tool在调用前验证参数;每个工具都附带readOnlyHint/destructiveHint/idempotentHint/openWorldHint。 - 浏览器自动化。通过 CDP 支持 Chromium 和 Camoufox,附加到现有目标,反检测预设,弹窗/下载/权限拦截器,显式输入 CAPTCHA 求解器,在三个文档阶段注入 JS/CSS,跨重连持久化覆盖。
- 网络拦截。自动生成 HTTPS 拦截 CA,HTTP/1.1 + HTTP/2 帧构建,WebSocket 捕获,GraphQL 辅助工具,Burp Suite 桥接——全部位于同一 MCP 工具界面。
- 逆向工程。wabt WASM 反汇编(
wasm2wat/wasm-decompile/wasm-objdump)和 Binaryenwasm-opt,Frida/Ghidra/IDA 桥接,硬件断点,原生 FFI 扫描,PE 内省,系统调用挂钩,AST 转换,source-map 重建。 - 会话恢复。Streamable HTTP 传输在重连后恢复已激活的域、浏览器附加状态和覆盖状态;浏览器端状态按客户端隔离。
- 插件和工作流。放入一个目录,获得一个域。编写 YAML 流水线,将其作为单个工具运行。注册表自动发现。
传输与部署
服务器开箱即支持两种传输。
| 传输 | 何时使用 | 备注 |
|---|---|---|
| stdio | Claude Desktop、Cursor 和其他单主机客户端的默认选择 | 每个 MCP 主机一个完整进程;建议使用轻量级配置文件 |
| Streamable HTTP | 多个代理共享嵌入模型、浏览器运行时和缓存 | 默认绑定到回环地址;在对外暴露前设置 MCP_AUTH_TOKEN |
两种传输暴露相同的工具界面。coverage_report 显示每个会话中激活了哪些域——长时间运行的会话在重连后恢复浏览器附加状态、覆盖状态和工具激活。
生产部署请参阅安全与生产指南。
近期运行时说明
- HTTP 传输现在多路复用独立的 MCP 会话,并在重连后恢复运行时状态。
proxy_start在需要时自动生成本地 HTTPS 拦截 CA。- 浏览器 CAPTCHA 求解现在由显式输入驱动:根据需要传入
taskKind、siteKey、imageBase64、callbackName和responseSelector。有意不使用内置的组件/页面签名探测。
注册表快照
以下内置界面由运行时注册表生成,并在 CI 中检查。
- 包版本:
0.4.2 - 内置工具:
735 - 域:
adb-bridge、binary-instrument、browser、canvas、coordination、core、cross-domain、dart-inspector、debugger、encoding、exploit-dev、extension-registry、graphql、instrumentation、maintenance、memory、mojo-ipc、native-bridge、native-emulator、network、platform、process、protocol-analysis、proxy、session、sourcemap、streaming、syscall-hook、tasks、tls-inspector、trace、transform、v8-inspector、wasm、webgpu、workflow - 注意:此快照由运行时注册表生成;请勿手动编辑计数。
架构
- 运行时注册表——通过
manifest.ts自动发现域;创建一个文件即可添加一个域。 - 延迟初始化——处理程序在首次调用时实例化,而非启动时。
- BM25 + 向量搜索——
search_tools元工具,具有混合排序和自适应权重。 - MCP
ToolAnnotations——每个工具都带有readOnlyHint/destructiveHint/idempotentHint/openWorldHint。 - 配置文件阶梯——
search(约 3K token)→workflow(复合脚本)→full(全部 735 个工具)。 - 传输对称性 — stdio 和 Streamable HTTP 暴露相同的接口;会话按客户端隔离。
从源码构建
要求:Node.js 22.22.2+、pnpm 10.x。
pnpm install pnpm build pnpm start # run the built server from dist/ pnpm dev # run from source under tsx watch pnpm check # drift guards (metadata + openapi + domain + event contracts) + lint + format check + typecheck + unit tests pnpm test # Vitest unit suites pnpm test:e2e # end-to-end browser/tooling suites pnpm daemon # run the Streamable HTTP daemon after build
原生辅助程序通过 pnpm build 打包;首次运行时,服务器可能会根据配置文件下载可选运行时(ONNX、Z3、Binaryen、Camoufox、Playwright)。
项目统计
许可证
来源:Hacker News · github.com