@ai-jshook/mcp 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (271) hide show
  1. package/.env.example +38 -0
  2. package/CLAUDE.md +170 -0
  3. package/README.md +564 -0
  4. package/bun.lock +1484 -0
  5. package/dist/index.d.ts +3 -0
  6. package/dist/index.d.ts.map +1 -0
  7. package/dist/index.js +57 -0
  8. package/dist/index.js.map +1 -0
  9. package/dist/modules/analyzer/AISummarizer.d.ts +41 -0
  10. package/dist/modules/analyzer/AISummarizer.d.ts.map +1 -0
  11. package/dist/modules/analyzer/AISummarizer.js +186 -0
  12. package/dist/modules/analyzer/AISummarizer.js.map +1 -0
  13. package/dist/modules/analyzer/CodeAnalyzer.d.ts +28 -0
  14. package/dist/modules/analyzer/CodeAnalyzer.d.ts.map +1 -0
  15. package/dist/modules/analyzer/CodeAnalyzer.js +1287 -0
  16. package/dist/modules/analyzer/CodeAnalyzer.js.map +1 -0
  17. package/dist/modules/analyzer/IntelligentAnalyzer.d.ts +114 -0
  18. package/dist/modules/analyzer/IntelligentAnalyzer.d.ts.map +1 -0
  19. package/dist/modules/analyzer/IntelligentAnalyzer.js +1176 -0
  20. package/dist/modules/analyzer/IntelligentAnalyzer.js.map +1 -0
  21. package/dist/modules/browser/BrowserModeManager.d.ts +31 -0
  22. package/dist/modules/browser/BrowserModeManager.d.ts.map +1 -0
  23. package/dist/modules/browser/BrowserModeManager.js +241 -0
  24. package/dist/modules/browser/BrowserModeManager.js.map +1 -0
  25. package/dist/modules/captcha/AICaptchaDetector.d.ts +32 -0
  26. package/dist/modules/captcha/AICaptchaDetector.d.ts.map +1 -0
  27. package/dist/modules/captcha/AICaptchaDetector.js +387 -0
  28. package/dist/modules/captcha/AICaptchaDetector.js.map +1 -0
  29. package/dist/modules/captcha/CaptchaDetector.d.ts +28 -0
  30. package/dist/modules/captcha/CaptchaDetector.d.ts.map +1 -0
  31. package/dist/modules/captcha/CaptchaDetector.js +513 -0
  32. package/dist/modules/captcha/CaptchaDetector.js.map +1 -0
  33. package/dist/modules/collector/CodeCache.d.ts +37 -0
  34. package/dist/modules/collector/CodeCache.d.ts.map +1 -0
  35. package/dist/modules/collector/CodeCache.js +188 -0
  36. package/dist/modules/collector/CodeCache.js.map +1 -0
  37. package/dist/modules/collector/CodeCollector.d.ts +107 -0
  38. package/dist/modules/collector/CodeCollector.d.ts.map +1 -0
  39. package/dist/modules/collector/CodeCollector.js +796 -0
  40. package/dist/modules/collector/CodeCollector.js.map +1 -0
  41. package/dist/modules/collector/CodeCompressor.d.ts +65 -0
  42. package/dist/modules/collector/CodeCompressor.d.ts.map +1 -0
  43. package/dist/modules/collector/CodeCompressor.js +245 -0
  44. package/dist/modules/collector/CodeCompressor.js.map +1 -0
  45. package/dist/modules/collector/DOMInspector.d.ts +51 -0
  46. package/dist/modules/collector/DOMInspector.d.ts.map +1 -0
  47. package/dist/modules/collector/DOMInspector.js +437 -0
  48. package/dist/modules/collector/DOMInspector.js.map +1 -0
  49. package/dist/modules/collector/PageController.d.ts +79 -0
  50. package/dist/modules/collector/PageController.d.ts.map +1 -0
  51. package/dist/modules/collector/PageController.js +287 -0
  52. package/dist/modules/collector/PageController.js.map +1 -0
  53. package/dist/modules/collector/SmartCodeCollector.d.ts +38 -0
  54. package/dist/modules/collector/SmartCodeCollector.d.ts.map +1 -0
  55. package/dist/modules/collector/SmartCodeCollector.js +208 -0
  56. package/dist/modules/collector/SmartCodeCollector.js.map +1 -0
  57. package/dist/modules/collector/StreamingCollector.d.ts +46 -0
  58. package/dist/modules/collector/StreamingCollector.d.ts.map +1 -0
  59. package/dist/modules/collector/StreamingCollector.js +127 -0
  60. package/dist/modules/collector/StreamingCollector.js.map +1 -0
  61. package/dist/modules/crypto/CryptoDetector.d.ts +22 -0
  62. package/dist/modules/crypto/CryptoDetector.d.ts.map +1 -0
  63. package/dist/modules/crypto/CryptoDetector.js +168 -0
  64. package/dist/modules/crypto/CryptoDetector.js.map +1 -0
  65. package/dist/modules/crypto/CryptoDetectorEnhanced.d.ts +31 -0
  66. package/dist/modules/crypto/CryptoDetectorEnhanced.d.ts.map +1 -0
  67. package/dist/modules/crypto/CryptoDetectorEnhanced.js +269 -0
  68. package/dist/modules/crypto/CryptoDetectorEnhanced.js.map +1 -0
  69. package/dist/modules/crypto/CryptoRules.d.ts +59 -0
  70. package/dist/modules/crypto/CryptoRules.d.ts.map +1 -0
  71. package/dist/modules/crypto/CryptoRules.js +234 -0
  72. package/dist/modules/crypto/CryptoRules.js.map +1 -0
  73. package/dist/modules/debugger/BlackboxManager.d.ts +14 -0
  74. package/dist/modules/debugger/BlackboxManager.d.ts.map +1 -0
  75. package/dist/modules/debugger/BlackboxManager.js +98 -0
  76. package/dist/modules/debugger/BlackboxManager.js.map +1 -0
  77. package/dist/modules/debugger/DebuggerManager.d.ts +138 -0
  78. package/dist/modules/debugger/DebuggerManager.d.ts.map +1 -0
  79. package/dist/modules/debugger/DebuggerManager.js +777 -0
  80. package/dist/modules/debugger/DebuggerManager.js.map +1 -0
  81. package/dist/modules/debugger/EventBreakpointManager.d.ts +30 -0
  82. package/dist/modules/debugger/EventBreakpointManager.d.ts.map +1 -0
  83. package/dist/modules/debugger/EventBreakpointManager.js +125 -0
  84. package/dist/modules/debugger/EventBreakpointManager.js.map +1 -0
  85. package/dist/modules/debugger/RuntimeInspector.d.ts +54 -0
  86. package/dist/modules/debugger/RuntimeInspector.d.ts.map +1 -0
  87. package/dist/modules/debugger/RuntimeInspector.js +277 -0
  88. package/dist/modules/debugger/RuntimeInspector.js.map +1 -0
  89. package/dist/modules/debugger/ScriptManager.d.ts +94 -0
  90. package/dist/modules/debugger/ScriptManager.d.ts.map +1 -0
  91. package/dist/modules/debugger/ScriptManager.js +433 -0
  92. package/dist/modules/debugger/ScriptManager.js.map +1 -0
  93. package/dist/modules/debugger/WatchExpressionManager.d.ts +52 -0
  94. package/dist/modules/debugger/WatchExpressionManager.d.ts.map +1 -0
  95. package/dist/modules/debugger/WatchExpressionManager.js +136 -0
  96. package/dist/modules/debugger/WatchExpressionManager.js.map +1 -0
  97. package/dist/modules/debugger/XHRBreakpointManager.d.ts +21 -0
  98. package/dist/modules/debugger/XHRBreakpointManager.d.ts.map +1 -0
  99. package/dist/modules/debugger/XHRBreakpointManager.js +81 -0
  100. package/dist/modules/debugger/XHRBreakpointManager.js.map +1 -0
  101. package/dist/modules/deobfuscator/ASTOptimizer.d.ts +12 -0
  102. package/dist/modules/deobfuscator/ASTOptimizer.d.ts.map +1 -0
  103. package/dist/modules/deobfuscator/ASTOptimizer.js +234 -0
  104. package/dist/modules/deobfuscator/ASTOptimizer.js.map +1 -0
  105. package/dist/modules/deobfuscator/AdvancedDeobfuscator.d.ts +52 -0
  106. package/dist/modules/deobfuscator/AdvancedDeobfuscator.d.ts.map +1 -0
  107. package/dist/modules/deobfuscator/AdvancedDeobfuscator.js +985 -0
  108. package/dist/modules/deobfuscator/AdvancedDeobfuscator.js.map +1 -0
  109. package/dist/modules/deobfuscator/Deobfuscator.d.ts +23 -0
  110. package/dist/modules/deobfuscator/Deobfuscator.d.ts.map +1 -0
  111. package/dist/modules/deobfuscator/Deobfuscator.js +487 -0
  112. package/dist/modules/deobfuscator/Deobfuscator.js.map +1 -0
  113. package/dist/modules/deobfuscator/JSVMPDeobfuscator.d.ts +19 -0
  114. package/dist/modules/deobfuscator/JSVMPDeobfuscator.d.ts.map +1 -0
  115. package/dist/modules/deobfuscator/JSVMPDeobfuscator.js +594 -0
  116. package/dist/modules/deobfuscator/JSVMPDeobfuscator.js.map +1 -0
  117. package/dist/modules/deobfuscator/JScramberDeobfuscator.d.ts +28 -0
  118. package/dist/modules/deobfuscator/JScramberDeobfuscator.d.ts.map +1 -0
  119. package/dist/modules/deobfuscator/JScramberDeobfuscator.js +239 -0
  120. package/dist/modules/deobfuscator/JScramberDeobfuscator.js.map +1 -0
  121. package/dist/modules/deobfuscator/PackerDeobfuscator.d.ts +38 -0
  122. package/dist/modules/deobfuscator/PackerDeobfuscator.d.ts.map +1 -0
  123. package/dist/modules/deobfuscator/PackerDeobfuscator.js +191 -0
  124. package/dist/modules/deobfuscator/PackerDeobfuscator.js.map +1 -0
  125. package/dist/modules/detector/ObfuscationDetector.d.ts +35 -0
  126. package/dist/modules/detector/ObfuscationDetector.d.ts.map +1 -0
  127. package/dist/modules/detector/ObfuscationDetector.js +278 -0
  128. package/dist/modules/detector/ObfuscationDetector.js.map +1 -0
  129. package/dist/modules/emulator/AIEnvironmentAnalyzer.d.ts +32 -0
  130. package/dist/modules/emulator/AIEnvironmentAnalyzer.d.ts.map +1 -0
  131. package/dist/modules/emulator/AIEnvironmentAnalyzer.js +548 -0
  132. package/dist/modules/emulator/AIEnvironmentAnalyzer.js.map +1 -0
  133. package/dist/modules/emulator/BrowserAPIDatabase.d.ts +34 -0
  134. package/dist/modules/emulator/BrowserAPIDatabase.d.ts.map +1 -0
  135. package/dist/modules/emulator/BrowserAPIDatabase.js +326 -0
  136. package/dist/modules/emulator/BrowserAPIDatabase.js.map +1 -0
  137. package/dist/modules/emulator/BrowserEnvironmentRules.d.ts +47 -0
  138. package/dist/modules/emulator/BrowserEnvironmentRules.d.ts.map +1 -0
  139. package/dist/modules/emulator/BrowserEnvironmentRules.js +493 -0
  140. package/dist/modules/emulator/BrowserEnvironmentRules.js.map +1 -0
  141. package/dist/modules/emulator/EnvironmentEmulator.d.ts +27 -0
  142. package/dist/modules/emulator/EnvironmentEmulator.d.ts.map +1 -0
  143. package/dist/modules/emulator/EnvironmentEmulator.js +1113 -0
  144. package/dist/modules/emulator/EnvironmentEmulator.js.map +1 -0
  145. package/dist/modules/emulator/EnvironmentEmulatorEnhanced.d.ts +26 -0
  146. package/dist/modules/emulator/EnvironmentEmulatorEnhanced.d.ts.map +1 -0
  147. package/dist/modules/emulator/EnvironmentEmulatorEnhanced.js +493 -0
  148. package/dist/modules/emulator/EnvironmentEmulatorEnhanced.js.map +1 -0
  149. package/dist/modules/emulator/templates/chrome-env.d.ts +260 -0
  150. package/dist/modules/emulator/templates/chrome-env.d.ts.map +1 -0
  151. package/dist/modules/emulator/templates/chrome-env.js +253 -0
  152. package/dist/modules/emulator/templates/chrome-env.js.map +1 -0
  153. package/dist/modules/hook/AIHookGenerator.d.ts +53 -0
  154. package/dist/modules/hook/AIHookGenerator.d.ts.map +1 -0
  155. package/dist/modules/hook/AIHookGenerator.js +353 -0
  156. package/dist/modules/hook/AIHookGenerator.js.map +1 -0
  157. package/dist/modules/hook/HookManager.d.ts +67 -0
  158. package/dist/modules/hook/HookManager.d.ts.map +1 -0
  159. package/dist/modules/hook/HookManager.js +1225 -0
  160. package/dist/modules/hook/HookManager.js.map +1 -0
  161. package/dist/modules/monitor/ConsoleMonitor.d.ts +140 -0
  162. package/dist/modules/monitor/ConsoleMonitor.d.ts.map +1 -0
  163. package/dist/modules/monitor/ConsoleMonitor.js +834 -0
  164. package/dist/modules/monitor/ConsoleMonitor.js.map +1 -0
  165. package/dist/modules/monitor/PerformanceMonitor.d.ts +65 -0
  166. package/dist/modules/monitor/PerformanceMonitor.d.ts.map +1 -0
  167. package/dist/modules/monitor/PerformanceMonitor.js +175 -0
  168. package/dist/modules/monitor/PerformanceMonitor.js.map +1 -0
  169. package/dist/modules/stealth/StealthScripts2025.d.ts +17 -0
  170. package/dist/modules/stealth/StealthScripts2025.d.ts.map +1 -0
  171. package/dist/modules/stealth/StealthScripts2025.js +274 -0
  172. package/dist/modules/stealth/StealthScripts2025.js.map +1 -0
  173. package/dist/modules/symbolic/JSVMPSymbolicExecutor.d.ts +69 -0
  174. package/dist/modules/symbolic/JSVMPSymbolicExecutor.d.ts.map +1 -0
  175. package/dist/modules/symbolic/JSVMPSymbolicExecutor.js +232 -0
  176. package/dist/modules/symbolic/JSVMPSymbolicExecutor.js.map +1 -0
  177. package/dist/modules/symbolic/SymbolicExecutor.d.ts +69 -0
  178. package/dist/modules/symbolic/SymbolicExecutor.d.ts.map +1 -0
  179. package/dist/modules/symbolic/SymbolicExecutor.js +346 -0
  180. package/dist/modules/symbolic/SymbolicExecutor.js.map +1 -0
  181. package/dist/server/AIHookToolDefinitions.d.ts +3 -0
  182. package/dist/server/AIHookToolDefinitions.d.ts.map +1 -0
  183. package/dist/server/AIHookToolDefinitions.js +284 -0
  184. package/dist/server/AIHookToolDefinitions.js.map +1 -0
  185. package/dist/server/AIHookToolHandlers.d.ts +50 -0
  186. package/dist/server/AIHookToolHandlers.d.ts.map +1 -0
  187. package/dist/server/AIHookToolHandlers.js +311 -0
  188. package/dist/server/AIHookToolHandlers.js.map +1 -0
  189. package/dist/server/AdvancedToolDefinitions.d.ts +3 -0
  190. package/dist/server/AdvancedToolDefinitions.d.ts.map +1 -0
  191. package/dist/server/AdvancedToolDefinitions.js +218 -0
  192. package/dist/server/AdvancedToolDefinitions.js.map +1 -0
  193. package/dist/server/AdvancedToolHandlers.d.ts +85 -0
  194. package/dist/server/AdvancedToolHandlers.d.ts.map +1 -0
  195. package/dist/server/AdvancedToolHandlers.js +431 -0
  196. package/dist/server/AdvancedToolHandlers.js.map +1 -0
  197. package/dist/server/BrowserToolDefinitions.d.ts +3 -0
  198. package/dist/server/BrowserToolDefinitions.d.ts.map +1 -0
  199. package/dist/server/BrowserToolDefinitions.js +841 -0
  200. package/dist/server/BrowserToolDefinitions.js.map +1 -0
  201. package/dist/server/BrowserToolHandlers.d.ts +290 -0
  202. package/dist/server/BrowserToolHandlers.d.ts.map +1 -0
  203. package/dist/server/BrowserToolHandlers.js +784 -0
  204. package/dist/server/BrowserToolHandlers.js.map +1 -0
  205. package/dist/server/CacheToolDefinitions.d.ts +3 -0
  206. package/dist/server/CacheToolDefinitions.d.ts.map +1 -0
  207. package/dist/server/CacheToolDefinitions.js +166 -0
  208. package/dist/server/CacheToolDefinitions.js.map +1 -0
  209. package/dist/server/DebuggerToolDefinitions.d.ts +3 -0
  210. package/dist/server/DebuggerToolDefinitions.d.ts.map +1 -0
  211. package/dist/server/DebuggerToolDefinitions.js +600 -0
  212. package/dist/server/DebuggerToolDefinitions.js.map +1 -0
  213. package/dist/server/DebuggerToolHandlers.d.ts +230 -0
  214. package/dist/server/DebuggerToolHandlers.d.ts.map +1 -0
  215. package/dist/server/DebuggerToolHandlers.js +935 -0
  216. package/dist/server/DebuggerToolHandlers.js.map +1 -0
  217. package/dist/server/MCPServer.d.ts +55 -0
  218. package/dist/server/MCPServer.d.ts.map +1 -0
  219. package/dist/server/MCPServer.js +1344 -0
  220. package/dist/server/MCPServer.js.map +1 -0
  221. package/dist/server/TokenBudgetToolDefinitions.d.ts +3 -0
  222. package/dist/server/TokenBudgetToolDefinitions.d.ts.map +1 -0
  223. package/dist/server/TokenBudgetToolDefinitions.js +114 -0
  224. package/dist/server/TokenBudgetToolDefinitions.js.map +1 -0
  225. package/dist/services/LLMService.d.ts +41 -0
  226. package/dist/services/LLMService.d.ts.map +1 -0
  227. package/dist/services/LLMService.js +792 -0
  228. package/dist/services/LLMService.js.map +1 -0
  229. package/dist/types/index.d.ts +527 -0
  230. package/dist/types/index.d.ts.map +1 -0
  231. package/dist/types/index.js +2 -0
  232. package/dist/types/index.js.map +1 -0
  233. package/dist/utils/AdaptiveDataSerializer.d.ts +27 -0
  234. package/dist/utils/AdaptiveDataSerializer.d.ts.map +1 -0
  235. package/dist/utils/AdaptiveDataSerializer.js +215 -0
  236. package/dist/utils/AdaptiveDataSerializer.js.map +1 -0
  237. package/dist/utils/CacheAdapters.d.ts +30 -0
  238. package/dist/utils/CacheAdapters.d.ts.map +1 -0
  239. package/dist/utils/CacheAdapters.js +83 -0
  240. package/dist/utils/CacheAdapters.js.map +1 -0
  241. package/dist/utils/TokenBudgetManager.d.ts +52 -0
  242. package/dist/utils/TokenBudgetManager.d.ts.map +1 -0
  243. package/dist/utils/TokenBudgetManager.js +190 -0
  244. package/dist/utils/TokenBudgetManager.js.map +1 -0
  245. package/dist/utils/UnifiedCacheManager.d.ts +55 -0
  246. package/dist/utils/UnifiedCacheManager.d.ts.map +1 -0
  247. package/dist/utils/UnifiedCacheManager.js +207 -0
  248. package/dist/utils/UnifiedCacheManager.js.map +1 -0
  249. package/dist/utils/cache.d.ts +13 -0
  250. package/dist/utils/cache.d.ts.map +1 -0
  251. package/dist/utils/cache.js +92 -0
  252. package/dist/utils/cache.js.map +1 -0
  253. package/dist/utils/config.d.ts +7 -0
  254. package/dist/utils/config.d.ts.map +1 -0
  255. package/dist/utils/config.js +93 -0
  256. package/dist/utils/config.js.map +1 -0
  257. package/dist/utils/detailedDataManager.d.ts +60 -0
  258. package/dist/utils/detailedDataManager.d.ts.map +1 -0
  259. package/dist/utils/detailedDataManager.js +204 -0
  260. package/dist/utils/detailedDataManager.js.map +1 -0
  261. package/dist/utils/logger.d.ts +16 -0
  262. package/dist/utils/logger.d.ts.map +1 -0
  263. package/dist/utils/logger.js +47 -0
  264. package/dist/utils/logger.js.map +1 -0
  265. package/dist/utils/parallel.d.ts +40 -0
  266. package/dist/utils/parallel.d.ts.map +1 -0
  267. package/dist/utils/parallel.js +148 -0
  268. package/dist/utils/parallel.js.map +1 -0
  269. package/package.json +94 -0
  270. package/server.json +39 -0
  271. package/tsconfig.dev.json +14 -0
package/README.md ADDED
@@ -0,0 +1,564 @@
1
+ # JSHook Reverse Tool
2
+
3
+ <div align="center">
4
+
5
+ 让 AI 助手成为你的浏览器逆向专家 | Let AI be your browser reverse engineering expert
6
+
7
+ [![npm version](https://img.shields.io/npm/v/@ai-jshook/mcp.svg)](https://www.npmjs.com/package/@ai-jshook/mcp)
8
+ [![npm downloads](https://img.shields.io/npm/dm/@ai-jshook/mcp.svg)](https://www.npmjs.com/package/@ai-jshook/mcp)
9
+ [![MCP Registry](https://img.shields.io/badge/MCP-Registry-blue)](https://registry.modelcontextprotocol.io/servers/io.github.715494637.ai-jshook)
10
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
11
+ [![Node Version](https://img.shields.io/badge/node-%3E%3D18.0.0-brightgreen)](https://nodejs.org/)
12
+ [![TypeScript](https://img.shields.io/badge/TypeScript-5.0+-blue)](https://www.typescriptlang.org/)
13
+ [![MCP](https://img.shields.io/badge/MCP-Protocol-orange)](https://modelcontextprotocol.io/)
14
+
15
+ [快速开始](#快速开始) • [核心功能](#核心功能) • [使用场景](#使用场景) • [文档](#文档)
16
+
17
+ </div>
18
+
19
+ ---
20
+
21
+ ## ⚡ 一键安装
22
+
23
+ ### 从 npm 安装
24
+
25
+ ```bash
26
+ # 使用 npx(无需安装)
27
+ npx @ai-jshook/mcp
28
+
29
+ # 或全局安装
30
+ npm install -g @ai-jshook/mcp
31
+
32
+ ```
33
+
34
+ ## 什么是 JSHook?
35
+
36
+ JSHook 是一个基于 **MCP (Model Context Protocol)** 的 JavaScript 逆向工程工具,通过 **80+ 个专业工具**,让 Claude、ChatGPT 等 AI 助手能够自动化完成复杂的网页分析、调试和逆向任务。
37
+
38
+ ### 为什么选择 JSHook?
39
+
40
+ - **AI 原生设计** - 专为 AI 助手优化,自然语言即可操作
41
+ - **反检测能力** - 集成 2024-2025 最新反爬虫技术
42
+ - **深度调试** - Chrome DevTools Protocol 完整集成
43
+ - **网络拦截** - 捕获所有 HTTP 请求/响应
44
+ - **智能 Hook** - AI 自动生成 Hook 代码
45
+ - **验证码识别** - AI 视觉识别各类验证码
46
+
47
+ ---
48
+
49
+ ## 核心功能
50
+
51
+ ### 1. 浏览器自动化 (35 个工具)
52
+
53
+ 完整的浏览器控制能力,从页面导航到 DOM 操作,从截图到设备模拟。
54
+
55
+ ```javascript
56
+ // 示例:自动化登录流程
57
+ browser_launch()
58
+ stealth_inject() // 注入反检测脚本
59
+ page_navigate(url="https://example.com/login")
60
+ page_type(selector="#username", text="user@example.com")
61
+ page_type(selector="#password", text="********")
62
+ page_click(selector="#loginBtn")
63
+ ```
64
+
65
+ **亮点功能**:
66
+ - ✅ 2024-2025 最新反检测技术(隐藏 webdriver、Canvas指纹处理)
67
+ - ✅ AI 视觉验证码识别(滑块/图形/reCAPTCHA)
68
+ - ✅ 智能等待和自动重试
69
+ - ✅ 移动设备模拟
70
+
71
+ ### 2. 专业调试器 (38 个工具)
72
+
73
+ 基于 Chrome DevTools Protocol,提供 IDE 级别的调试能力。
74
+
75
+ ```javascript
76
+ // 示例:调试加密算法
77
+ debugger_enable()
78
+
79
+ // 在所有加密API调用处暂停
80
+ xhr_breakpoint_set(urlPattern="*/api/sign*")
81
+ event_breakpoint_set(eventName="fetch")
82
+
83
+ // 监控关键变量
84
+ watch_add(expression="window.crypto_params", name="加密参数")
85
+
86
+ // 等待断点命中
87
+ debugger_wait_for_paused()
88
+ get_call_stack() // 查看调用栈
89
+ watch_evaluate_all() // 查看所有监控变量
90
+ ```
91
+
92
+ **亮点功能**:
93
+ - ✅ 代码断点、条件断点、异常断点
94
+ - ✅ XHR/Fetch 断点(拦截网络请求)
95
+ - ✅ 事件断点(点击、定时器、WebSocket)
96
+ - ✅ Watch 表达式、调用栈分析
97
+ - ✅ Blackboxing(屏蔽第三方库)
98
+ - ✅ 调试会话保存/加载
99
+
100
+ ### 3. 网络监控 (6 个工具)
101
+
102
+ 捕获和分析所有 HTTP 流量,支持请求过滤和响应解析。
103
+
104
+ ```javascript
105
+ // 示例:分析 API 请求
106
+ network_enable()
107
+ page_navigate(url="https://api.example.com")
108
+
109
+ // 过滤包含 "api" 的请求
110
+ network_get_requests(url="api", method="POST")
111
+
112
+ // 查看响应体
113
+ network_get_response_body(requestId="xxx")
114
+
115
+ // 统计分析
116
+ network_get_stats()
117
+ ```
118
+
119
+ **亮点功能**:
120
+ - ✅ 捕获请求头、POST 数据、响应体
121
+ - ✅ 智能过滤(URL、方法、类型)
122
+ - ✅ 统计分析(请求数、失败率、耗时)
123
+
124
+ ### 4. AI Hook 生成器 (7 个工具)
125
+
126
+ 用自然语言描述需求,AI 自动生成专业的 Hook 代码。
127
+
128
+ ```javascript
129
+ // 示例:Hook Fetch API
130
+ ai_hook_generate({
131
+ description: "监控所有 API 请求,记录 URL 和参数",
132
+ target: { type: "api", name: "fetch" },
133
+ behavior: {
134
+ captureArgs: true,
135
+ captureReturn: true,
136
+ logToConsole: true
137
+ },
138
+ condition: {
139
+ urlPattern: ".*api.*"
140
+ }
141
+ })
142
+
143
+ // 注入 Hook(必须在页面加载前)
144
+ ai_hook_inject(hookId="fetch-hook", method="evaluateOnNewDocument")
145
+
146
+ // 获取捕获的数据
147
+ ai_hook_get_data(hookId="fetch-hook")
148
+ ```
149
+
150
+ **支持的 Hook 类型**:
151
+ - 🎯 函数 Hook(`btoa`, `atob`, `eval`)
152
+ - 🎯 API Hook(`fetch`, `XMLHttpRequest`, `WebSocket`)
153
+ - 🎯 对象方法(`crypto.subtle.encrypt`)
154
+ - 🎯 属性拦截、事件监听
155
+
156
+ ### 5. 性能分析 (4 个工具)
157
+
158
+ Web Vitals 指标、代码覆盖率、内存快照。
159
+
160
+ ```javascript
161
+ performance_get_metrics(includeTimeline=true)
162
+ performance_start_coverage() // 启动覆盖率收集
163
+ // ... 操作页面 ...
164
+ performance_stop_coverage() // 获取未使用的代码
165
+ performance_take_heap_snapshot() // 内存分析
166
+ ```
167
+
168
+ ### 6. 缓存与预算管理 (6 个工具)
169
+
170
+ 智能管理 Token 预算和缓存,防止上下文溢出。
171
+
172
+ ```javascript
173
+ get_token_budget_stats() // 查看 Token 使用情况
174
+ get_cache_stats() // 查看缓存统计
175
+
176
+ // Token 使用率 > 80% 时
177
+ manual_token_cleanup() // 清理 Token
178
+ smart_cache_cleanup() // 智能清理缓存
179
+ ```
180
+
181
+ ---
182
+
183
+ ## 使用场景
184
+
185
+ ### 🔓 网页逆向
186
+
187
+ - 分析混淆加密的 JavaScript 代码
188
+ - 定位加密算法和签名生成逻辑
189
+ - 提取 API 请求参数
190
+
191
+ ### 🕷️ 爬虫开发
192
+
193
+ - 突破反爬虫检测(webdriver、Canvas指纹)
194
+ - 自动处理验证码(滑块/图形/reCAPTCHA)
195
+ - 捕获动态加载数据
196
+
197
+ ### 🛡️ 安全测试
198
+
199
+ - 漏洞挖掘和渗透测试
200
+ - XSS/CSRF 检测
201
+ - API 安全分析
202
+
203
+ ### ⚡ 性能优化
204
+
205
+ - 识别无用代码(代码覆盖率)
206
+ - 分析加载性能(Web Vitals)
207
+ - 内存泄漏检测
208
+
209
+ ---
210
+
211
+ ## 快速开始
212
+
213
+ ### 环境要求
214
+
215
+ - **Node.js**: >= 18.0.0
216
+ - **操作系统**: Windows / macOS / Linux
217
+ - **LLM API**: OpenAI 或 Anthropic API Key
218
+
219
+ ### 安装方式
220
+
221
+ #### 方式一:直接使用 npx(推荐)⭐
222
+
223
+ 无需安装,直接配置即可使用。编辑 Claude Desktop 配置文件 `claude_desktop_config.json`:
224
+
225
+ ```json
226
+ {
227
+ "mcpServers": {
228
+ "jshook": {
229
+ "command": "npx",
230
+ "args": ["-y", "ai-jshook"],
231
+ "env": {
232
+ "OPENAI_API_KEY": "sk-...",
233
+ "DEFAULT_LLM_PROVIDER": "openai"
234
+ }
235
+ }
236
+ }
237
+ }
238
+ ```
239
+
240
+ #### 方式二:全局安装
241
+
242
+ ```bash
243
+ npm install -g @ai-jshook/mcp
244
+ ```
245
+
246
+ 配置文件:
247
+ ```json
248
+ {
249
+ "mcpServers": {
250
+ "jshook": {
251
+ "command": "ai-jshook-mcp",
252
+ "env": {
253
+ "OPENAI_API_KEY": "sk-...",
254
+ "DEFAULT_LLM_PROVIDER": "openai"
255
+ }
256
+ }
257
+ }
258
+ }
259
+ ```
260
+
261
+ #### 方式三:从源码安装(开发者)
262
+
263
+ ```bash
264
+ git clone https://github.com/715494637/jshook-reverse-tool.git
265
+ cd jshook-reverse-tool
266
+ npm install
267
+ npm run build
268
+ ```
269
+
270
+ 配置文件:
271
+ ```json
272
+ {
273
+ "mcpServers": {
274
+ "jshook": {
275
+ "command": "node",
276
+ "args": ["C:/path/to/jshook/dist/index.js"],
277
+ "env": {
278
+ "OPENAI_API_KEY": "sk-...",
279
+ "DEFAULT_LLM_PROVIDER": "openai"
280
+ }
281
+ }
282
+ }
283
+ }
284
+ ```
285
+
286
+ ### 环境变量配置
287
+
288
+ 在 MCP 配置的 `env` 字段中设置以下变量:
289
+
290
+ **必需配置**:
291
+ ```json
292
+ {
293
+ "OPENAI_API_KEY": "sk-...", // OpenAI API Key
294
+ "DEFAULT_LLM_PROVIDER": "openai" // 使用 openai
295
+ }
296
+ ```
297
+
298
+ 或使用 Anthropic:
299
+ ```json
300
+ {
301
+ "ANTHROPIC_API_KEY": "sk-ant-...", // Anthropic API Key
302
+ "DEFAULT_LLM_PROVIDER": "anthropic" // 使用 anthropic
303
+ }
304
+ ```
305
+
306
+ **可选配置**:
307
+ ```json
308
+ {
309
+ "PUPPETEER_HEADLESS": "false", // 是否无头模式
310
+ "PUPPETEER_TIMEOUT": "30000", // 超时时间(毫秒)
311
+ "ENABLE_CACHE": "true", // 启用缓存
312
+ "LOG_LEVEL": "info", // 日志级别
313
+ "OPENAI_HEADERS": "{\"proxy\":\"http://proxy.example.com:8080\"}" // OpenAI 自定义请求头(JSON格式)
314
+ }
315
+ ```
316
+
317
+ **自定义请求头支持**(新增):
318
+ 支持通过 `OPENAI_HEADERS` 环境变量配置自定义请求头,可用于:
319
+ - 设置代理服务器
320
+ - 添加自定义认证头
321
+ - 配置请求路由
322
+
323
+ 示例:
324
+ ```json
325
+ {
326
+ "OPENAI_HEADERS": "{\"proxy\":\"http://proxy.example.com:8080\",\"X-Custom-Header\":\"value\"}"
327
+ }
328
+ ```
329
+
330
+ ### 启动使用
331
+
332
+ 重启 Claude Desktop,现在可以使用自然语言调用 JSHook 的所有工具了!
333
+
334
+ ```
335
+ 你:帮我分析 https://example.com 的加密算法
336
+
337
+ Claude:
338
+ 1. 启动浏览器并注入反检测脚本
339
+ 2. 访问目标网站
340
+ 3. 获取所有脚本,查找加密相关代码
341
+ 4. 设置断点拦截加密函数调用
342
+ 5. 分析加密逻辑...
343
+ ```
344
+
345
+ ---
346
+
347
+ ## 典型工作流
348
+
349
+ ### 场景 1: 分析加密算法
350
+
351
+ ```
352
+ 用户:帮我分析 https://api.example.com 的签名算法
353
+
354
+ AI 自动执行:
355
+ 1. browser_launch() + stealth_inject()
356
+ 2. network_enable() + debugger_enable()
357
+ 3. page_navigate("https://api.example.com")
358
+ 4. get_all_scripts() → 找到可疑脚本
359
+ 5. xhr_breakpoint_set(urlPattern="*/api/*") → 拦截 API 请求
360
+ 6. watch_add("window.signParams") → 监控签名参数
361
+ 7. 触发请求 → debugger_wait_for_paused()
362
+ 8. 分析调用栈和变量 → 定位签名算法
363
+ ```
364
+
365
+ ### 场景 2: 验证码自动检测
366
+
367
+ ```
368
+ 用户:访问 https://login.example.com 并告诉我是否有验证码
369
+
370
+ AI 自动执行:
371
+ 1. browser_launch()
372
+ 2. page_navigate("https://login.example.com")
373
+ 3. captcha_detect() → AI 视觉识别
374
+ → 返回: { detected: true, type: "slider", vendor: "geetest" }
375
+ 4. captcha_wait(timeout=300000) → 等待用户完成
376
+ ```
377
+
378
+ ### 场景 3: Hook API 调用
379
+
380
+ ```
381
+ 用户:监控所有 Fetch 请求,记录 URL 和参数
382
+
383
+ AI 自动执行:
384
+ 1. ai_hook_generate({
385
+ description: "监控所有 Fetch 请求",
386
+ target: { type: "api", name: "fetch" },
387
+ behavior: { captureArgs: true, captureReturn: true }
388
+ })
389
+ 2. ai_hook_inject(method="evaluateOnNewDocument")
390
+ 3. page_navigate("https://target.com")
391
+ 4. 用户操作页面...
392
+ 5. ai_hook_get_data() → 获取所有捕获的请求
393
+ ```
394
+
395
+ ---
396
+
397
+ ## 项目结构
398
+
399
+ ```
400
+ jshook-reverse-tool/
401
+ ├── src/
402
+ │ ├── index.ts # MCP 服务器入口
403
+ │ ├── server/
404
+ │ │ ├── MCPServer.ts # 主服务器类(使用 McpServer API)
405
+ │ │ ├── *ToolDefinitions.ts # 工具定义
406
+ │ │ └── *ToolHandlers.ts # 工具实现
407
+ │ ├── modules/ # 核心模块
408
+ │ │ ├── collector/ # 浏览器自动化
409
+ │ │ ├── debugger/ # 调试器
410
+ │ │ ├── hook/ # Hook 管理
411
+ │ │ ├── crypto/ # 加密检测
412
+ │ │ └── captcha/ # 验证码识别
413
+ │ ├── services/
414
+ │ │ └── LLMService.ts # AI 服务封装(支持自定义请求头)
415
+ │ ├── types/
416
+ │ │ └── index.ts # 核心类型定义
417
+ │ └── utils/ # 工具函数
418
+ │ ├── config.ts # 配置管理(含 parseHeadersEnv)
419
+ │ ├── TokenBudgetManager.ts # Token 预算管理
420
+ │ └── UnifiedCacheManager.ts # 统一缓存管理
421
+ ├── docs/ # 文档
422
+ │ ├── MCP功能介绍.md # 完整功能文档
423
+ │ ├── 技术文档.md # 技术实现细节
424
+ │ └── 浏览器逆向实战教程.md # 实战案例
425
+ ├── test/ # 测试用例
426
+ ├── CLAUDE.md # Claude Code 项目文档
427
+ ├── bun.lock # Bun 依赖锁定文件
428
+ └── package.json
429
+ ```
430
+
431
+ ---
432
+
433
+ ## 开发命令
434
+
435
+ ```bash
436
+ # 开发模式(自动重启)
437
+ npm run dev
438
+
439
+ # 构建项目
440
+ npm run build
441
+
442
+ # 运行测试
443
+ npm test
444
+
445
+ # 代码检查
446
+ npm run lint
447
+
448
+ # 格式化代码
449
+ npm run format
450
+
451
+ # 完整检查(lint + build + verify)
452
+ npm run check
453
+ ```
454
+
455
+ ---
456
+
457
+ ## 文档
458
+
459
+ - 📘 [MCP 功能介绍](./docs/MCP功能介绍.md) - 80+ 工具完整说明
460
+ - 📗 [浏览器逆向实战教程](./docs/浏览器逆向实战教程.md) - 实战案例
461
+
462
+ ---
463
+
464
+ ## 常见问题
465
+
466
+ ### Q: 网络监控没有捕获到请求?
467
+
468
+ **A**: 必须在 `page_navigate` **前**调用 `network_enable()`,或使用:
469
+ ```javascript
470
+ page_navigate(url="...", enableNetworkMonitoring=true)
471
+ ```
472
+
473
+ ### Q: 验证码检测失败?
474
+
475
+ **A**: 确保使用支持 Vision API 的模型(GPT-4o、Claude 3.5 Sonnet)。如果使用不支持视觉的模型(如 DeepSeek),会返回截图让你手动分析。
476
+
477
+ ### Q: Token 用完了怎么办?
478
+
479
+ **A**:
480
+ ```javascript
481
+ manual_token_cleanup() // 清理 Token
482
+ smart_cache_cleanup() // 智能清理缓存
483
+ clear_all_caches() // 完全重置(慎用)
484
+ ```
485
+
486
+ ### Q: 如何跳过第三方库代码?
487
+
488
+ **A**:
489
+ ```javascript
490
+ blackbox_add_common() // 一键屏蔽常见库
491
+ // 或手动添加
492
+ blackbox_add(urlPattern="*jquery*")
493
+ ```
494
+
495
+ ---
496
+
497
+ ## 安全与法律
498
+
499
+ JSHook 是一个**合法的逆向工程和安全研究工具**。
500
+
501
+ ### ✅ 合法使用场景
502
+
503
+ - 渗透测试授权项目
504
+ - 安全研究和漏洞分析
505
+ - CTF 竞赛和教育培训
506
+ - 自己网站的性能优化
507
+ - 爬虫开发和调试
508
+
509
+ ### ❌ 禁止用途
510
+
511
+ - 未授权的攻击和破解
512
+ - 大规模爬取他人数据
513
+ - 绕过付费墙和版权保护
514
+ - DoS 攻击和供应链投毒
515
+
516
+ **使用本工具即表示你理解并遵守相关法律法规。**
517
+
518
+ ---
519
+
520
+ ## 技术栈
521
+
522
+ - **运行时**: Node.js 18+, TypeScript 5.0+
523
+ - **浏览器自动化**: Puppeteer, Chrome DevTools Protocol
524
+ - **AI 集成**: OpenAI API, Anthropic API
525
+ - **MCP 协议**: @modelcontextprotocol/sdk
526
+ - **AST 处理**: @babel/parser, @babel/traverse
527
+ - **测试**: Jest
528
+
529
+ ---
530
+
531
+ ## 贡献
532
+
533
+ 欢迎贡献代码、报告问题或提出建议!
534
+
535
+ 1. Fork 本仓库
536
+ 2. 创建特性分支 (`git checkout -b feature/AmazingFeature`)
537
+ 3. 提交更改 (`git commit -m 'Add some AmazingFeature'`)
538
+ 4. 推送到分支 (`git push origin feature/AmazingFeature`)
539
+ 5. 打开 Pull Request
540
+
541
+ ---
542
+
543
+ ## 许可证
544
+
545
+ 本项目采用 MIT 许可证 - 详见 [LICENSE](LICENSE) 文件
546
+
547
+ ---
548
+
549
+ ## 致谢
550
+
551
+ - [Puppeteer](https://github.com/puppeteer/puppeteer) - 浏览器自动化
552
+ - [Chrome DevTools Protocol](https://chromedevtools.github.io/devtools-protocol/) - 调试协议
553
+ - [Model Context Protocol](https://modelcontextprotocol.io/) - AI 工具协议
554
+ - [Babel](https://babeljs.io/) - JavaScript 编译器
555
+
556
+ ---
557
+
558
+ <div align="center">
559
+
560
+ **如果这个项目对你有帮助,请给一个 ⭐ Star!**
561
+
562
+ Made with ❤️ by op要喝op果奶
563
+
564
+ </div>