JS Reverse MCP
JS Reverse MCP
English | 中文
AI-first / AI-native MCP-сервер для обратной разработки JavaScript, который позволяет вашим AI-ассистентам для программирования (таким как Claude, Cursor, Copilot) непрерывно отлаживать, локализовать, сохранять и анализировать поведение JavaScript на веб-страницах, как настоящий аналитик.
Это не просто перенос Chrome DevTools API в модель, а реорганизация скриптов, точек останова, сети, WebSocket, состояния браузера и локального файлового I/O в инструменты, пригодные для непрерывного рассуждения и действий AI-агента. Антидетект — одна из возможностей: по умолчанию используется специально перекомпилированный и независимо поддерживаемый форк Patchright, обеспечивающий stealth на уровне протокола, а для сайтов с сильной анти-парсинг-защитой опционально доступен режим маскировки на уровне исходного кода CloakBrowser.
☁️ Спонсор · Sponsored by IPWO
IPWO 住宅代理支持灵活的代理配置,开发者可以根据不同任务选择相应的网络环境,用于网页访问、请求测试、地区化内容分析及自动化工作流。
对于涉及 JS 逆向、浏览器调试和 Web 网络分析的项目,住宅代理也可以作为网络环境的一种补充选择,帮助开发者更灵活地满足不同地区的访问与测试需求。
👉 免费测试入口,9 折优惠码:0204
Related MCP server: Chrome DevTools MCP
☁️ Спонсор · Sponsored by Infistar.cc 无限星河
js-reverse-mcp × Infistar.cc 无限星河|全模型 API · стабильная поддержка AI-отладки
Благодарим Infistar.cc 无限星河 за спонсорство и предоставление сервиса моделей для js-reverse-mcp!
⚡ Стабильная обработка сложных задач отладки: корпоративные каналы с высокой пропускной способностью и многоузловое резервирование, цены от 1/10 официального канала, меньше ограничений, ошибок 429 и разрывов соединения при длительных задачах.
🧠 Один API Key для подключения основных моделей: поддержка ChatGPT, Claude, Gemini, Kimi, GLM, DeepSeek и других моделей, совместимость с AI-инструментами программирования Claude Code, Codex, Cursor и др.
🔎 Помощь в авторизованной отладке и исследованиях безопасности: подходит для многошаговых задач, таких как поиск скриптов, анализ точек останова, отслеживание сетевых запросов, проверка стека вызовов и понимание логики кода.
📦 Эксклюзивные льготы для пользователей проекта: зарегистрируйтесь по эксклюзивной партнёрской ссылке и выполните первый вызов, чтобы получить тестовый баланс на 5 долларов / эксклюзивную скидку на первое пополнение.
Позиционирование: поддержка конфигурации API моделей Claude Code / Codex.
Возможности
AI-native дизайн инструментов: гранулярность инструментов, границы вывода и сообщения об ошибках спроектированы вокруг принятия решений агентом, чтобы не подталкивать модель к бесполезным следующим шагам
Воспроизводимый рабочий процесс: исходный код скриптов, сырые сетевые данные и бинарные результаты можно экспортировать в локальные файлы, а затем использовать как входные данные для дальнейшего анализа
Выполнение в контексте точки останова: при паузе можно вычислять выражения непосредственно в call frame, проверять переменные области видимости, выполнять пошагово и получать контекст исходного кода
Анализ скриптов: список всех загруженных JS, поиск по коду, получение/сохранение исходного кода, автоматическое форматирование больших минифицированных скриптов
Анализ сети и WebSocket: стек вызовов запросов, точки останова XHR, определение Set-Cookie, экспорт сырых body/header, группировка сообщений WebSocket
Воспроизведение состояния браузера: очистка cookies / cache / storage / sessionStorage текущего сайта, воспроизведение cookie и процессов анти-риск-контроля с перезагрузкой
Окно по умолчанию + постоянный статус входа: браузер виден, cookies / localStorage сохраняются между сессиями
Специализированное ядро Patchright: по умолчанию используется независимо поддерживаемый форк Patchright, который постоянно исправляет известные общие черты реализации из апстрима
Опциональный слой антидетекта: stealth на уровне протокола специализированного Patchright включён по умолчанию; для сайтов с сильной анти-парсинг-защитой можно добавить
--cloakдля использования бинарника CloakBrowser
Специализированный форк Patchright
js-reverse-mcp больше не зависит напрямую от публичного пакета Patchright, а использует специально скомпилированный для этого MCP @zhizhuodemao/patchright. Этот форк постоянно поддерживается в отдельном репозитории и развивается вместе с реальными образцами детекта этого MCP.
Больше нет прямой зависимости от публичного пакета Patchright
Корректировка на уровне протокола и перекомпиляция для подтверждённых общих черт реализации из апстрима
Настройки антидетекта не зависят от JS-инъекций на уровне страницы
Сохранены исходные возможности evaluate, locator и управления страницей
Форк постоянно поддерживается в специализированном репозитории для этого MCP
Публичная документация описывает только границы дизайна и не раскрывает внутренние образцы детекта и детали реализации. Цель специализированного форка — уменьшить подтверждённые общие черты реализации, а не гарантировать абсолютную необнаружимость автоматизации браузера.
Системные требования
Быстрый старт (npx)
Установка не требуется, просто добавьте в конфигурацию MCP-клиента:
{
"mcpServers": {
"js-reverse": {
"command": "npx",
"args": ["js-reverse-mcp"]
}
}
}Claude Code
claude mcp add js-reverse npx js-reverse-mcpЕсли у вас ещё нет доступного API моделей или нужно настроить собственный адрес API, обратитесь к: Учебник по настройке API сторонних моделей Claude Code / Codex.
Codex
codex mcp add js-reverse -- npx js-reverse-mcpЕсли у вас ещё нет доступного API моделей или нужно настроить собственный адрес API, обратитесь к: Учебник по настройке API сторонних моделей Claude Code / Codex.
Cursor
Перейдите в Cursor Settings -> MCP -> New MCP Server и используйте конфигурацию выше.
VS Code Copilot
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": ["/你的路径/js-reverse-mcp/build/src/index.js"]
}
}
}AI-first дизайн
Основная цель этого проекта — не «уметь управлять браузером», а позволить AI-агенту стабильно выполнять полный цикл реальной задачи JS-реверса: открыть страницу, пройти анти-риск-контроль, локализовать скрипт, сохранить исходный код, установить точку останова, вызвать поведение, проверить рантайм, экспортировать сетевые материалы, воспроизвести состояние, а затем продолжить рассуждение.
Несколько принципов дизайна проходят через весь код:
Инструменты — это примитивы агента, а не отображение меню DevTools:
list_network_requestsможет выводить индекс, запрашивать детали поreqidи экспортировать точные материалы черезoutputFile;evaluate_scriptможет выполняться на странице, в call frame точки останова, а также принимать входной файл черезlocalFilePath.Вывод должен направлять следующий шаг: вывод списков остаётся коротким и сканируемым; вывод деталей имеет границы; длинные результаты предлагают экспорт; для pending-запросов явно предлагается сначала возобновить выполнение, чтобы агент не ждал ответ, который никогда не завершится.
Локальные файлы — это рабочая среда анализа:
save_script_source,list_network_requests(..., outputFile),evaluate_script(..., localFilePath)позволяют агенту перемещаться между браузером, сетью и локальными файлами, а не впихивать большие фрагменты кода или бинарные данные в контекст чата.Состояние можно очищать, процесс можно воспроизводить: профиль по умолчанию сохраняет статус входа;
--isolatedпредоставляет одноразовую чистую среду;clear_site_dataочищает только состояние, связанное с текущим сайтом, для многократного воспроизведения генерации cookie, инициализации анти-риск-контроля и цепочек запросов.Антидетект служит цепочке отладки: тихая навигация CDP, реальный viewport, Google referer, специализированный форк Patchright и CloakBrowser нацелены на то, чтобы агент мог войти на целевую страницу и продолжить анализ, а не превращать проект в универсальный краулер-фреймворк.
Механизм антидетекта (поддерживающая возможность)
Антидетект — одна из базовых поддерживающих возможностей js-reverse-mcp. Слой-обёртка (сам этот MCP) использует ноль JS-инъекций, не делает хаков Object.defineProperty (это само по себе сигнал для детекта). Весь антидетект реализован в двух непересекающихся слоях:
Слой | Режим по умолчанию | Режим |
Слой протокола (CDP) | Специализированный форк Patchright: не вызывает | То же |
Слой исходного кода (бинарный патч C++) | Нет — напрямую используется системный Google Chrome | Бинарник CloakBrowser (патчи маскировки на уровне исходного кода по платформам, покрывают |
Каталог профиля |
|
|
Фактический браузер | Установленный вами Google Chrome (с Web Store, расширениями, sync) | Специальная сборка Chromium (без сервисов Google, без Web Store) |
Дополнительные меры на уровне навигации (действуют в обоих режимах):
Тихая навигация CDP — при загрузке страницы не активируются
Network.enable/Debugger.enable, сбор запросов/консоли идёт только через слушатели Playwright, пока какой-либо инструмент явно не потребует CDPGoogle Referer —
new_pageпо умолчанию используетreferer: https://www.google.com/Реальный viewport — отключён фейковый viewport Playwright 1280×720 по умолчанию, браузер показывает реальный размер экрана
Когда включать --cloak: только если вышеперечисленного недостаточно и сайт блокирует по отпечатку. Подробнее в docs/cloak.md.
Список инструментов (24)
Страница и навигация
Инструмент | Описание |
| Список открытых страниц или выбор контекста отладки по индексу |
| Создание новой страницы и переход по URL |
| Навигация, назад, вперёд или обновление страницы |
| Список всех frame (iframe) или выбор контекста выполнения |
| Строгое совпадение и клик по единственному видимому элементу в текущем frame |
| Снимок экрана страницы |
Анализ скриптов
Инструмент | Описание |
| Список всех загруженных JavaScript-скриптов на странице |
| Получение фрагмента исходного кода скрипта, поддержка диапазона строк или смещения символов |
| Сохранение полного исходного кода скрипта в локальный файл (для больших/минифицированных/WASM-файлов) |
| Поиск строки или регулярного выражения во всех скриптах |
Точки останова и управление выполнением
Инструмент | Описание |
| Автоматическая установка точки останова по поиску текста в коде (для минифицированного кода) |
| Установка точки останова XHR/Fetch по шаблону URL |
| Удаление точки останова по ID, URL или всех с явным action |
| Список всех активных точек останова |
| Получение статуса паузы, стека вызовов и переменных области видимости |
| Пауза или возобновление выполнения с явным action |
| Пошаговая отладка (over/into/out), возврат позиции и контекста исходного кода |
Сеть и WebSocket
Инструмент | Описание |
| Список сетевых запросов, просмотр деталей или экспорт сырых материалов header/body/query |
| Очистка собранных запросов и body cache текущей страницы после явного подтверждения |
| Получение JavaScript-стека вызовов сетевого запроса |
| Список WebSocket-соединений, анализ паттернов сообщений или получение деталей сообщений |
Состояние браузера
Инструмент | Описание |
| Очистка cookies, origin storage и sessionStorage, связанных с текущим сайтом; возможность явно выбрать очистку глобального HTTP cache |
Инструменты проверки
Инструмент | Описание |
| Выполнение JavaScript на странице или в контексте точки останова, поддержка main world, сохранения результата и чтения одного локального входного файла |
| Список сообщений консоли или получение деталей одного сообщения по msgid |
Примеры использования
Базовый процесс JS-реверса
Открыть целевую страницу
打开 https://example.com 并列出所有加载的 JS 脚本Найти целевую функцию
在所有脚本中搜索包含 "encrypt" 的代码Установить точку останова
在加密函数入口处设置断点Вызвать и проанализировать
在页面上触发操作,断点命中后检查参数、调用栈和作用域变量Анализ протокола WebSocket
列出 WebSocket 连接,分析消息模式,查看特定类型的消息内容Рекомендуемый агентом полный процесс захвата
Поскольку на этапе навигации CDP намеренно остаётся тихим, при первом входе на целевую страницу домены Network / Debugger не открываются сразу. Рекомендуемый процесс: сначала пройти анти-риск-контроль, затем обновить страницу для захвата:
1. new_page 打开目标页
2. 调用 list_network_requests 激活 collectors
3. navigate_page(type="reload") 刷新页面
4. 再次 list_network_requests 查看完整请求
5. 对关键 reqid 使用 outputFile 导出原始材料Процесс воспроизведения Cookie / анти-риск-контроля
1. clear_site_data(confirm=true) 清理当前站点状态
2. navigate_page(type="reload") 重新触发初始化
3. list_network_requests 找到设置 cookie 或提交 sensor 的请求
4. 导出 requestBody / responseHeaders / responseBody
5. 用 evaluate_script + localFilePath 在页面上下文中复算或验证Параметры конфигурации
CLI остаётся минималистичным, все флаги опциональны. Для 99% сценариев достаточно настроек по умолчанию. При работе с локальными файлами рекомендуется использовать --allowedRoots для ограничения каталогов, доступных агенту на чтение/запись.
Параметр | Описание | Значение по умолчанию |
| Переключение на скрытый бинарник CloakBrowser (вместо системного Chrome). Включает патчи маскировки на уровне исходного кода C++ по платформам. При первом запуске автоматически загружается бинарник ~200MB; идентичность отпечатка сохраняется в профиле. Подробнее в docs/cloak.md. |
|
| Использование временного user-data-dir (cookies/localStorage не сохраняются, автоматическая очистка при закрытии) |
|
| Подключение к уже запущенному экземпляру Chrome (CDP HTTP endpoint, например | – |
| Запись MCP-журнала отладки в обычный файл с правами | – |
| Повторяемый параметр для указания локальных каталогов, доступных агенту на чтение/запись; разрешаются реальные пути, символьные ссылки за пределы отклоняются. При включении отключаются страницы браузера | – |
Примеры конфигурации
По умолчанию — системный Chrome + постоянный статус входа (рекомендуется для большинства сценариев отладки):
{
"mcpServers": {
"js-reverse": {
"command": "npx",
"args": ["js-reverse-mcp"]
}
}
}--cloak — сайты с сильной анти-парсинг-защитой (защита Cloudflare Turnstile / DataDome / FingerprintJS):
Настоятельно рекомендуется: заранее скачать бинарник (одноразово, ~30–60 секунд). Если этого не сделать, при первом запуске MCP с
--cloakбудет тихо загружаться ~200MB, и будет выглядеть, будто MCP завис:npx cloakbrowser install(пакет
cloakbrowserуже установлен черезoptionalDependencies, эта команда просто запускает его встроенную логику загрузки бинарника, с индикатором прогресса)
{
"mcpServers": {
"js-reverse-cloak": {
"command": "npx",
"args": ["js-reverse-mcp", "--cloak"]
}
}
}Два параллельных экземпляра — профили двух экземпляров MCP физически изолированы, переключение в зависимости от целевого сайта:
{
"mcpServers": {
"js-reverse": {
"command": "npx",
"args": ["js-reverse-mcp"]
},
"js-reverse-cloak": {
"command": "npx",
"args": ["js-reverse-mcp", "--cloak"]
}
}
}--isolated — каждый раз новый профиль (cookies/localStorage не сохраняются):
{
"mcpServers": {
"js-reverse": {
"command": "npx",
"args": ["js-reverse-mcp", "--isolated"]
}
}
}Подключение к уже запущенному Chrome / стороннему браузеру с отпечатком
--browserUrl принимает только CDP endpoint (HTTP endpoint, отвечающий на /json/version), а не приватный Local API вендора. Как получить CDP-порт для локального Chrome, AdsPower, BitBrowser и других сценариев — в отдельной документации:
📖 docs/cdp-endpoint.md — как получить CDP-порт для отладки
Кратчайший путь (локальный Chrome):
# 先关掉所有 Chrome 窗口,然后
/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome \
--remote-debugging-port=9222 --user-data-dir=/tmp/chrome-debug{
"mcpServers": {
"js-reverse": {
"command": "npx",
"args": ["js-reverse-mcp", "--browserUrl", "http://127.0.0.1:9222"]
}
}
}CDP-порт браузеров с отпечатком (AdsPower, BitBrowser и др.) меняется случайным образом при каждом запуске, поэтому сначала нужно запустить браузер через Local API вендора и извлечь порт. Шаги и примеры скриптов — в документации выше.
Устранение неполадок
Блокировка анти-парсинг-системой
Если доступ к некоторым сайтам блокируется (например, Zhihu возвращает 40362, бесконечный цикл вызова Cloudflare):
Сначала попробуйте
--isolated— используйте новый профиль, чтобы исключить загрязнение остаточным состоянием:"args": ["js-reverse-mcp", "--isolated"]Если не помогло, включите
--cloak— включите патчи маскировки на уровне исходного кода по платформам:"args": ["js-reverse-mcp", "--cloak"]В последнюю очередь рассмотрите ручную очистку постоянного профиля (статус входа будет потерян):
rm -rf ~/.cache/chrome-devtools-mcp/chrome-profile
Когда стоит включать --cloak, а когда нет — в docs/cloak.md.
Оценка маршрутизации агента (для мейнтейнеров)
npm run eval:routing:validate офлайн проверяет фактические tools/list MCP, server instructions и 30 контрактов выбора инструментов из evals/tool-routing.json; эта команда не обращается к модельным endpoint'ам и включена в presubmit.
Оценка реальных моделей — явный opt-in, она вызывает OpenAI-compatible Chat Completions endpoint для каждого пункта и может привести к расходам:
MCP_ROUTING_EVAL_ENDPOINT=https://api.example.com/v1/chat/completions \
MCP_ROUTING_EVAL_MODEL=model-name \
MCP_ROUTING_EVAL_API_KEY=secret \
npm run eval:routingMCP_ROUTING_EVAL_API_KEY можно опустить для локальных endpoint'ов без аутентификации; удалённые endpoint'ы с учётными данными должны использовать HTTPS, HTTP разрешён только для loopback. Таймаут одного запроса можно настроить через MCP_ROUTING_EVAL_TIMEOUT_MS. По умолчанию требуется 100% прохождение, при сравнении моделей можно задать порог (0, 1] через MCP_ROUTING_EVAL_MIN_PASS_RATE. Оценка не выводит API key, endpoint или тело ответа об ошибке endpoint'а.
Предупреждение о безопасности
Этот инструмент раскрывает содержимое браузера MCP-клиенту, позволяя проверять, отлаживать и изменять любые данные в браузере. Не используйте его на страницах, содержащих конфиденциальную информацию.
evaluate_script.localFilePath и различные outputFile/filePath позволяют процессу MCP читать или записывать файлы на хост-машине. В производственных или общих средах следует использовать один или несколько --allowedRoots, чтобы сузить доступ до выделенной рабочей директории; при отсутствии конфигурации область доступа ничем не ограничена. После включения --allowedRoots страницы браузера file:, view-source:file: и filesystem:file: также отклоняются, что предотвращает обход границ директорий через навигацию в браузере; при необходимости отладки локальных страниц этот параметр можно не настраивать только в сеансах, где явно принимается риск раскрытия локальных файлов.
Лицензия
Apache-2.0
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to debug frontend applications by providing direct access to browser DevTools, React state, DOM inspection, and runtime debugging capabilities. Bridges the gap between AI and complex web applications for autonomous debugging and issue resolution.1MIT
- AlicenseNot gradedqualityAmaintenanceEnables AI coding assistants to control and inspect a live Chrome browser through Chrome DevTools. Provides browser automation, performance analysis, debugging capabilities, and network request monitoring.2,211,10449,751Apache 2.0
- AlicenseAqualityCmaintenanceEnables AI assistants to debug JavaScript and TypeScript applications by connecting to Chrome DevTools Protocol-compatible debuggers, allowing them to set breakpoints, step through code, inspect variables, and evaluate expressions with full source map support.18142Apache 2.0
- AlicenseNot gradedqualityDmaintenanceProvides comprehensive Chrome browser debugging capabilities including DOM inspection, network monitoring, console logs, JavaScript execution, breakpoint debugging, and screenshot capture for AI-assisted frontend development.4MIT
Related MCP Connectors
Live browser debugging for AI assistants — DOM, console, network via MCP.
AI-powered browser automation — navigate, click, fill forms, and extract data from any website.
Give AI coding agents access to your Vynix visual feedback, bug reports, and AI diagnosis.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/zhizhuodemao/js-reverse-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server