JS反向MCP
英语| 中文
一个JavaScript逆向工程MCP服务器,使AI编码助手(Claude、Cursor、Copilot)能够调试和分析网页中的JavaScript代码。
建立在 Patchright 反检测引擎具有多层反机器人绕过功能,使其能够在知乎和谷歌等具有机器人检测功能的网站上工作。
特性
- 反检测浏览器:基于Patchright(Playwright反检测分支),60多个隐形发射论点,绕过主流反机器人系统
- 剧本分析:列出所有加载的JS脚本、搜索代码、获取/保存源代码
- 断点调试:设置/删除断点、条件断点、在压缩代码中的精确定位
- 执行控制:暂停/恢复执行,使用源上下文逐步调试(over/into/out)
- 运行时检查:在断点处计算表达式,检查作用域变量
- 网络分析:查看请求发起者调用堆栈,设置XHR断点,WebSocket消息分析
需求
- v20.19或更高版本
- 铬 稳定的
快速入门(npx)
无需安装。添加到MCP客户端配置中:
{
"mcpServers": {
"js-reverse": {
"command": "npx",
"args": ["js-reverse-mcp"]
}
}
}克劳德代码
claude mcp add js-reverse npx js-reverse-mcp法典
codex mcp add js-reverse -- npx js-reverse-mcp光标
首选 Cursor Settings -> MCP -> New MCP Server,并使用上述配置。
VS代码副本
code --add-mcp '{"name":"js-reverse","command":"npx","args":["js-reverse-mcp"]}'本地安装(替代方案)
git clone https://github.com/zhizhuodemao/js-reverse-mcp.git
cd js-reverse-mcp
npm install
npm run build然后在MCP配置中使用本地路径:
{
"mcpServers": {
"js-reverse": {
"command": "node",
"args": ["/path/to/js-reverse-mcp/build/src/index.js"]
}
}
}反检测
js反向mcp包括多层反检测措施,适用于具有bot检测的网站:
反检测架构
| 图层 | 描述 |
|---|---|
| Patchright引擎 | C++级反检测补丁,删除 navigator.webdriver,避免 Runtime.enable 泄漏 |
| 60+Stealth Args | 删除自动化签名,绕过无头检测、GPU/网络/行为指纹欺骗 |
| 有害精氨酸去除 | 排除 --enable-automation 以及另外4个默认的Playwright参数 |
| 静默CDP导航 | 导航工具不激活CDP域,仅通过Playwright级别的侦听器捕获请求,防止反机器人脚本检测调试协议活动 |
| Google Referer欺骗 | 所有导航都会自动包含 referer: https://www.google.com/ |
| 持久登录状态 | 默认情况下使用持久用户数据目录,跨会话保留登录状态 |
工具(21)
页面和导航
| 工具 | 说明 |
|---|---|
select_page | 列出打开的页面,或按索引选择一个页面作为调试上下文 |
new_page | 创建新页面并导航到URL |
navigate_page | 导航、返回、前进或重新加载 |
select_frame | 列出所有框架(iframe),或选择一个作为执行上下文 |
take_screenshot | 截取页面截图 |
脚本分析
| 工具 | 说明 |
|---|---|
list_scripts | 列出页面中加载的所有JavaScript脚本 |
get_script_source | 按行范围或字符偏移量获取脚本源代码段 |
save_script_source | 将完整脚本源保存到本地文件(适用于大/缩小/WASM文件) |
search_in_sources | 在所有脚本中搜索字符串或正则表达式模式 |
断点和执行控制
| 工具 | 说明 |
|---|---|
set_breakpoint_on_text | 通过搜索代码文本设置断点(适用于压缩代码) |
break_on_xhr | 按URL模式设置XHR/Fetch断点 |
remove_breakpoint | 按ID、URL或全部删除断点;自动恢复 |
list_breakpoints | 列出所有活动断点 |
get_paused_info | 获取暂停状态、调用堆栈和作用域变量 |
pause_or_resume | 切换暂停/恢复执行 |
step | 作为响应,跳过、进入或退出源上下文 |
网络和WebSocket
| 工具 | 说明 |
|---|---|
list_network_requests | 列出网络请求,或按请求获取一个 |
get_request_initiator | 获取网络请求的JavaScript调用堆栈 |
get_websocket_messages | 列出WebSocket连接、分析消息或获取消息详细信息 |
检查
| 工具 | 说明 |
|---|---|
evaluate_script | 在页面中执行JavaScript(支持暂停上下文、主世界和将结果/二进制数据保存到文件) |
list_console_messages | 列出控制台消息,或通过msgid获取消息 |
用法示例
JS逆向工程基本工作流程
- 打开目标页面
Open https://example.com and list all loaded JS scripts- 查找目标函数
Search all scripts for code containing "encrypt"- 设置断点
Set a breakpoint at the entry of the encryption function- 触发和分析
Trigger an action on the page, then inspect arguments, call stack and scope variables when the breakpoint hitsWebSocket协议分析
List WebSocket connections, analyze message patterns, view messages of specific types配置选项
| 选项 | 描述 | 默认值 |
|---|---|---|
--browserUrl, -u | 连接到正在运行的Chrome实例 | - |
--wsEndpoint, -w | WebSocket端点连接 | - |
--headless | 在无头模式下运行 | false |
--executablePath, -e | 自定义Chrome可执行文件路径 | - |
--isolated | 使用临时用户数据目录(每次刷新) | false |
--channel | Chrome频道:稳定、金丝雀、测试版、开发版 | 稳定 |
--viewport | 初始视口大小,例如。 1280x720 | 实际尺寸 |
--hideCanvas | 启用画布指纹噪声 | false |
--blockWebrtc | 阻止WebRTC以防止真正的IP泄漏 | false |
--disableWebgl | 禁用WebGL以防止GPU指纹识别 | false |
--noStealth | 禁用隐形启动参数(用于调试) | false |
--proxyServer | 代理服务器配置 | - |
--logFile | 调试日志文件路径 | - |
示例配置
增强的抗检测(画布噪声+WebRTC阻断):
{
"mcpServers": {
"js-reverse": {
"command": "npx",
"args": ["js-reverse-mcp", "--hideCanvas", "--blockWebrtc"]
}
}
}隔离模式(无持久登录,每次更新配置文件):
{
"mcpServers": {
"js-reverse": {
"command": "npx",
"args": ["js-reverse-mcp", "--isolated"]
}
}
}连接到正在运行的Chrome实例
- 启动Chrome(先关闭所有Chrome窗口,然后重新启动):
macOS
/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --remote-debugging-port=9222 --user-data-dir=/tmp/chrome-debug视窗
"C:\Program Files\Google\Chrome\Application\chrome.exe" --remote-debugging-port=9222 --user-data-dir="%TEMP%\chrome-debug"- 配置MCP连接:
{
"mcpServers": {
"js-reverse": {
"command": "npx",
"args": ["js-reverse-mcp", "--browser-url=http://127.0.0.1:9222"]
}
}
}故障排除
被反机器人系统阻止
如果您在访问某些网站时被阻止(例如知乎返回错误40362):
- 清除受污染的轮廓:删除
~/.cache/chrome-devtools-mcp/chrome-profile目录 - 使用隔离模式:添加
--isolated旗帜 - 启用画布噪波:添加
--hideCanvas旗帜
安全通知
此工具向MCP客户端公开浏览器内容,允许检查、调试和修改浏览器中的任何数据。不要在包含敏感信息的页面上使用它。
许可证
阿帕奇-2.0
