jjx-js-reverse-mcp
jjx-js-reverse-mcp
Единый MCP для обратного инжиниринга JavaScript: полное Hook / точки останова / отладка скриптов + цепочка операций с браузером + CDP антидетекция.
Один процесс подключается только к одному браузеру, решая проблему одновременного использования js-reverse-mcp и chrome-devtools-mcp, приводящего к открытию двух окон.
Режим определяется параметрами запуска, а не подсказками в диалоге.
Подсказки не могут заставить MCP «автоматически распознать» ATTACH / LAUNCH; для смены режима изменитеmcp.jsonи перезагрузите, или зарегистрируйте две записи MCP и выбирайте нужную.
Быстрый выбор
Ваш сценарий | Рекомендуемый режим | Ключевые параметры |
Уже используете bat / вручную открыли браузер и вошли, нужно сохранить сессию | ATTACH |
|
Полная автоматизация с нуля, можно перелогиниться, не беспокоитесь о желтой полосе | LAUNCH |
|
Повседневный реверс-инжиниринг, меньше шума от инструментов | Любой режим + |
|
Только разведка (чтение скриптов/сети, запрет навигации и закрытия страниц) | Любой режим + |
|
Фокус на Hook / точках останова | Любой режим + |
|
Нужен performance trace / снимки кучи / глубокая декомпиляция Wasm | Любой режим + |
|
Чистая отладка, отключить CDP leak guard | Любой режим + |
|
Related MCP server: camoufox-reverse-mcp
Жизненный цикл браузера в двух режимах
Режим | Когда использовать | CLI (взаимоисключающие) | При выходе |
ATTACH | Браузер уже открыт с |
| Только |
LAUNCH | Нужно, чтобы MCP сам запустил Chrome/CloakBrowser |
| Закрывает экземпляр, запущенный MCP |
Параметры ATTACH и LAUNCH взаимоисключающие (нельзя одновременно указывать
--remoteDebuggingPortи--executablePath).При неудаче ATTACH не будет скрытно открыт новый браузер (чтобы избежать ситуации «думал, что подключился, а запустил еще один»).
Во время работы можно вызвать
attach_browserдля динамического подключения; нет симметричного инструмента «динамический launch» — для самостоятельного запуска обязательно используйте параметр LAUNCH.
Инструменты: get_browser_mode / attach_browser / check_browser_health
ATTACH: Пример CLI
# 1) 手动启动(桌面 bat 常用 9333;也可 9222)
"你的chrome.exe路径" ^
--remote-debugging-port=9333 --remote-allow-origins=*
# 2) 在浏览器里打开目标站并登录
# 3) MCP 接管(端口必须一致)
node build/src/index.js --remoteDebuggingPort 9333 --toolProfile slim
# 或
node build/src/index.js --browserUrl http://127.0.0.1:9333 --toolProfile slimLAUNCH: Пример CLI
node build/src/index.js ^
--executablePath "你的chrome.exe路径" ^
--isolated ^
--toolProfile slimCursor mcp.json: копируйте под свой сценарий
Путь к глобальной конфигурации обычно: %USERPROFILE%\.cursor\mcp.json
После изменения обязательно: Settings → Tools & MCP → Reload соответствующего сервера.
Пути изменяйте под свою систему: путь_к_вашему_jjx-js-reverse-mcp, путь_к_вашему_chrome.exe.
Сценарий 1 — ATTACH для повседневного реверса (рекомендуется)
Подходит: сохранение сессии, меньше новых окон, совместно с Cloak Browser.bat.
{
"mcpServers": {
"jjx-js-reverse-mcp": {
"command": "cmd",
"args": [
"/c",
"node",
"你的jjx-js-reverse-mcp路径/build/src/index.js",
"--remoteDebuggingPort",
"9333",
"--toolProfile",
"slim"
]
}
}
}Порядок: запустить bat → вручную открыть целевой сайт → Reload MCP (если не загрузился) → в диалоге потребовать «запретить new_page / запретить launch, сначала list_pages».
Сценарий 2 — ATTACH классический 9222
Когда браузер запущен с --remote-debugging-port=9222:
{
"mcpServers": {
"jjx-js-reverse-mcp": {
"command": "cmd",
"args": [
"/c",
"node",
"你的jjx-js-reverse-mcp路径/build/src/index.js",
"--remoteDebuggingPort",
"9222",
"--toolProfile",
"slim"
]
}
}
}Сценарий 3 — LAUNCH самостоятельный запуск Cloak (автоматизация / возможность перелогина)
Подходит: не требуется существующая сессия; допустимо появление желтой полосы «Chrome под управлением автоматизированного ПО».
{
"mcpServers": {
"jjx-js-reverse-mcp": {
"command": "cmd",
"args": [
"/c",
"node",
"你的jjx-js-reverse-mcp路径/build/src/index.js",
"--executablePath",
"你的chrome.exe路径",
"--isolated",
"--toolProfile",
"slim"
]
}
}
}--isolated: временный профиль, уменьшает проблемы «browser already running / профиль занят».Не конфликтуйте с экземпляром bat, использующим тот же профиль; при конфликте закройте лишние браузеры или вернитесь к ATTACH.
Сценарий 4 — Два набора (ATTACH + LAUNCH, выбор в диалоге)
Чтобы не менять конфигурацию каждый раз, зарегистрируйте два сервера и в Cursor включайте/выбирайте нужный:
{
"mcpServers": {
"jjx-attach": {
"command": "cmd",
"args": [
"/c",
"node",
"你的jjx-js-reverse-mcp路径/build/src/index.js",
"--remoteDebuggingPort",
"9333",
"--toolProfile",
"slim"
]
},
"jjx-launch": {
"command": "cmd",
"args": [
"/c",
"node",
"你的jjx-js-reverse-mcp路径/build/src/index.js",
"--executablePath",
"你的chrome.exe路径",
"--isolated",
"--toolProfile",
"slim"
]
}
}
}Примечание: если оба включены, Agent может вызвать «не тот»; укажите в подсказке jjx-attach или jjx-launch, или включите только один.
Сценарий 5 — Меньше инструментов (observe / hook)
Меняйте только --toolProfile, параметры режима остаются.
Разведка (меньше инструментов, быстрее решения):
--toolProfile observeВ основном Hook / точки останова:
--toolProfile hookПолный набор (включая performance / heapsnapshot / тяжелый AI / глубокий Wasm):
--toolProfile fullProfile | Примерное назначение | Описание |
| Полные возможности | По умолчанию; включает |
| Повседневный реверс | Рекомендуется; включает |
| Только чтение, разведка | Не включает |
| Hook + отладка | Фокус на инъекции и точках останова |
Сценарий 6 — Отключение Stealth (чистая отладка)
Добавьте в конец args для ATTACH или LAUNCH:
"--no-stealth"Для реверса сайтов с сильной антидетекцией обычно оставляйте Stealth по умолчанию (не добавляйте этот параметр).
Сценарий 7 — ATTACH с автоопределением порта
Сканирует порты 9222–9225 на локальной машине; если не находит, выдает ошибку и не запускает LAUNCH:
{
"mcpServers": {
"jjx-js-reverse-mcp": {
"command": "cmd",
"args": [
"/c",
"node",
"你的jjx-js-reverse-mcp路径/build/src/index.js",
"--autoConnect",
"--toolProfile",
"slim"
]
}
}
}Если ваш bat использует фиксированный порт 9333, который не входит в диапазон 9222–9225, используйте явное указание порта из сценария 1, не полагайтесь на --autoConnect.
Соотношение подсказок и конфигурации
Что вы хотите сделать | Правильное действие |
Подключиться к уже открытому через bat браузеру | В |
MCP сам открывает браузер | Измените |
Переключить режим только подсказкой | Не работает — сервер не читает содержимое чата |
Локальные шаблоны фраз для справки:
путь_к_вашему_шаблону_подсказки_ATTACHпуть_к_вашему_шаблону_подсказки_LAUNCH
Подробнее: docs/guides/browser-modes.md, docs/guides/anti-detect.md
CDP антидетекция (кратко)
По умолчанию включена базовая CDP leak guard (можно отключить с помощью --no-stealth):
CdpLeakGuard: очищает глобальныеcdc_*/ selenium, исправляетnavigator.webdriver, минимизируетchrome.*, десенсибилизирует Error stack; предварительная инъекция в новые документы + повторная инъекция после навигацииevaluate_script/ пути инъекции: приоритет CDPRuntime.evaluate, уменьшение утечки__puppeteer_evaluation_script__Удалено:
StealthScripts2025(маскировка User-Agent Chrome 131 / Canvas / WebGL / Audio и т.д.) — устарело и может конфликтовать с реальным ядром
Инструменты: enable_cdp_guard / inject_stealth (аналог базового guard) / stealth_status
Ручной User-Agent: set_user_agent (не меняет Client Hints)
Для сайтов с сильной антидетекцией используйте нативные отпечатки CloakBrowser + реальную сессию ATTACH. Данный MCP не предоставляет «всеобъемлющего» stealth для прохождения жестких проверок; протокольные решения (например, rebrowser-patches) требуют отдельной интеграции и не встроены.
Подробнее в docs/guides/anti-detect.md.
Обзор возможностей
Hook:
create_hook/inject_hook(persist по умолчанию, сохраняется при навигации) /get_hook_data/remove_hook(попутно очищает store страницы) /hook_function…Отладка: исходный код скриптов, точки останова, XHR break, пошаговое выполнение, evaluate в callframe (
hook_functionи др. через CDPsafeEvaluateIife)Браузер: навигация, снимок+uid клик/заполнение форм,
fill_form, сеть/консоль, состояние сессииРеверс: сбор, деобфускация, обнаружение шифрования, Wasm, восстановление, экспорт доказательств
Наблюдение:
performance_*(включая Insight),take_heapsnapshot, легкийpage_vitals_audit— в основном вfull;reloadдляperformance_start_traceпо умолчанию falseСбор с сохранением сессии: при нахождении на целевом URL
collect_code/collect_wasmпо умолчанию не делаютgoto; обновление только при явномforceNavigate=true; на выбранной странице MCP не будет принудительно менять User-AgentDOM / сессия:
query_dom, чтение/запись localStorage и т.д. приоритетно через CDP, уменьшая утечку sourceURL от Puppeteer
Важные замечания по стабильности (процесс реверса)
Сначала
list_pages+select_page: если страница не выбрана, коллектор сразу выдаст ошибку, не будет скрытно подключаться к 9222 по умолчанию.collect_codeсобирает только один раз: исправлена ошибка двойногоcollectв старой версии сreturnMode=full; для больших сайтов предпочтительнееreturnMode=summary.inject_hookpersist по умолчанию: хук остается после навигации; если вы заフックнулиJSON.stringifyи другие глобальные функции, это может помешать сериализации JSON на странице — используйте с осторожностью и своевременно вызывайтеremove_hook/ обновляйте страницу.restore_session_stateпо умолчанию не выполняет навигацию: для перехода передайтеnavigateToSavedUrl=true.attach_browser: если текущая сессия LAUNCH, shutdown закроет самостоятельно запущенный браузер и переподключится (в ответе будетpreviousLaunchClosed).--autoConnectсканирует только 9222–9225: для других портов используйте--remoteDebuggingPort.
Разработка
npm install
npm run build
npm start -- --remoteDebuggingPort 9333 --toolProfile slimНагрузочное тестирование:
# LAUNCH + ATTACH 主流程
node scripts/stress-reverse-flow.mjs
# 扫描修复项回归(profile / safeEval / getActivePage / hook persist)
node scripts/stress-fix-regression.mjsТребования: Node ^20.19 || ^22.12 || >=23
License
Apache-2.0. Основан на chrome-devtools-mcp и js-reverse-strong-mcp, см. NOTICE.
This server cannot be deployed
Maintenance
Related MCP Connectors
MCP server for understanding Javascript internals from ECMAScript specification.
MCP server to assist with JxBrowser development.
Self-hosted MCP server: 26 deterministic dev, security, and EVM tools.
Official Browserless MCP server: browser automation, scraping, screenshots and PDFs for AI agents.
Related MCP Servers
- AlicenseCqualityDmaintenanceAn MCP server for JavaScript reverse engineering that enables AI to perform browser debugging, script analysis, and automated hook injection. It streamlines complex workflows like deobfuscation, network tracing, and risk assessment through direct browser integration.3534 npm1,035Apache 2.0
- AlicenseBqualityAmaintenanceAn anti-detection browser MCP server designed for JavaScript reverse engineering through the Camoufox engine. It enables AI assistants to perform dynamic debugging, function hooking, and network interception while bypassing sophisticated bot detection mechanisms.39537MIT
- AlicenseNot gradedqualityDmaintenanceA Chrome DevTools Protocol-based MCP server that enables AI coding assistants to control browsers for JavaScript debugging, reverse engineering, web scraping, and API debugging.1,347 npm1Apache 2.0
- AlicenseNot gradedqualityDmaintenanceA powerful MCP server for browser debugging and reverse engineering, providing AI coding assistants with comprehensive browser automation, JavaScript debugging, and network analysis capabilities.49 npm11Apache 2.0