Можно ли перехватить и анализировать трафик WebSocket в прокси-инструменте Charles?

«Можно ли перехватить и анализировать трафик WebSocket в прокси-инструменте Charles?» — вопрос из категории Инструменты тестирования, который задают на 10% собеседований QA Тестировщик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Да, Charles Proxy поддерживает перехват и анализ трафика WebSocket (WS/WSS).

Настройка для захвата WebSocket-трафика:

  1. Включите поддержку WebSocket: Proxy → SSL Proxying Settings → Enable WebSocket.
  2. Добавьте целевой хост и порт (например, *.example.com:443) в Proxy → SSL Proxying Settings.
  3. Убедитесь, что устройство/браузер используют Charles как прокси, и доверенный сертификат Charles установлен.

Что можно увидеть в Charles:

  • Handshake: Начальное HTTP-соединение с заголовками Upgrade: websocket.
  • Сообщения (Frames): Отдельные текстовые или бинарные сообщения, отправленные в обе стороны.
  • Метаданные: Временные метки, размер, направление (Outgoing/Incoming).

Пример отображения сообщения в Charles:

WebSocket Message (text)
Timestamp: 14:25:10.123
Direction: Outgoing
Content: {"type":"chat","user":"Alice","message":"Hello!"}

Ограничения и особенности:

  • Charles отображает сообщения как отдельные события, а не как непрерывный поток.
  • Для зашифрованного WebSocket (WSS) требуется расшифровка SSL.
  • Можно использовать Breakpoints для модификации сообщений на лету, что полезно для тестирования обработки ошибок клиентом.