1. Можно ли использовать Bruno или JetBrains HTTP Client?
Краткий ответ: Это будет очень неудобно.
Подробный ответ:
Обе эти программы отлично справляются с REST, GraphQL и даже “чистыми” WebSockets (в JetBrains HTTP Client вы можете написать WEBSOCKET wss://...). Но проблема заключается в самом протоколе STOMP.
STOMP — это текстовый протокол, который требует строгого форматирования. Самое главное — каждый STOMP-фрейм должен заканчиваться нулевым байтом (null byte, \x00 или \0).
В обычных HTTP-клиентах, даже если они поддерживают WebSockets, отправить этот невидимый нулевой байт в конце каждого сообщения вручную крайне сложно или невозможно. Из-за этого сервер просто не поймет, где закончилось ваше сообщение, и соединение зависнет.
Что использовать вместо них:
- Если хочется интерфейс: Postman (в новых версиях есть поддержка WebSockets, и там проще передавать бинарные символы/сырые сообщения) или специализированные веб-инструменты вроде APIC.
- Идеальный вариант для реверс-инжиниринга STOMP — короткий скрипт на Python (как я показывал ранее). Он возьмет на себя всю черновую работу по добавлению нужных байтов и форматированию.
2. Как перехватить всю сессию (создать дамп для анализа)?
Для этого есть два отличных способа: простой (встроенный в браузер) и профессиональный.
Способ А: Встроенный в Chrome (Экспорт HAR-файла)
Это самый быстрый способ сохранить всю игру от начала до конца, чтобы потом спокойно изучить все сообщения в текстовом редакторе.
- Откройте Developer Tools → вкладка Network.
- Отфильтруйте по WS (WebSockets).
- Начните и сыграйте полную партию от начала до конца.
- Кликните правой кнопкой мыши в любом месте списка запросов и выберите Save all as HAR with content.
- Сохранится
.harфайл (по сути, это огромный JSON). - Откройте этот файл в любом редакторе кода (VS Code, JetBrains). Найдите там ваш WebSocket-запрос, и в его объекте будут массивы
messages— вы увидите полную хронологию всех отправленных и полученных STOMP-фреймов.
Способ Б: Профессиональный прокси (Proxyman / Charles Proxy)
Так как вы используете Mac, я настоятельно рекомендую попробовать Proxyman (у него есть бесплатная версия, которой хватит с головой). Это приложение, которое ставится между вашим браузером и интернетом.
- Установите Proxyman.
- Он попросит установить свой сертификат в систему (чтобы уметь читать HTTPS-трафик) — соглашайтесь.
- Откройте dicechess.com в браузере и играйте.
- В Proxyman вы увидите ваш WebSocket-запрос к серверу. Если вы нажмете на него, в нижней панели откроется вкладка, которая будет в реальном времени красиво показывать все входящие и исходящие STOMP-сообщения.
- Там же можно делать фильтрацию, искать по тексту, копировать конкретные JSON-объекты и даже повторять отправку некоторых сообщений.
Для реверс-инжиниринга веб-сокетов Proxyman (или его аналог Charles) — это инструмент номер один. Он сразу покажет всю структуру общения игры.