Перехват и просмотр трафика
Пока перехват включён, записывается каждый прошедший через прокси запрос: сам запрос и ответ, их заголовки и тела, статус, тайминг и TLS-сертификат сервера.
Перехваченные запросы группируются по хостам, по приложениям, из которых они пришли, и по устройствам — так трафик одной программы или одного телефона можно смотреть отдельно. Нужные хосты можно закрепить, а те, которые не нужно расшифровывать, — отправить в список исключений прямо из перехваченного запроса.
Очистка сессии удаляет всё записанное. Остановка перехвата запись не стирает.
Как сузить выборку
Работают два механизма:
- текстовый поиск по перехваченным запросам;
- фильтр из правил, объединённых через AND (должны совпасть все) или OR (достаточно одного).
Правило фильтра срабатывает по URL, пути, методу, схеме или статусу. Для URL и пути доступны равенство, вхождение, начало, окончание и регулярное выражение; для статуса — класс кода (2xx, 3xx, 4xx, 5xx), точный код, диапазон или состояние запросов, у которых кода нет вовсе: ещё выполняется, ошибка, пропущен без расшифровки. Количество правил в фильтре ограничено, а отдельные правила можно выключать, не удаляя.
Что видно по одному запросу
- Заголовки запроса и ответа.
- Тело — в виде, подходящем типу содержимого: JSON как сворачиваемое дерево, HTML отрисованным, изображения с размерами,
multipart/form-dataполями с превью для файлов, двоичные данные как hex. По текстовым телам работает поиск. - Авторизация, обнаруженная в запросе: схема, заголовок, из которого она взята, и декодированный токен.
- Исходное HTTP-сообщение — таким, каким оно ушло в сеть.
- Сводка — хост, путь, схема, версия HTTP, приложение-источник, статус, длительность, размеры тел, временные метки и TLS-сертификат сервера (субъект, издатель, срок действия, серийный номер, отпечаток, SANs).
Слишком большие тела в просмотрщик не загружаются — их можно сохранить в файл.
Потоки
Ответ с Content-Type: text/event-stream передаётся клиенту в реальном времени, а его события записываются по мере поступления. WebSocket-соединения записываются кадр за кадром: направление, тип кадра, размер и данные; двоичные данные показываются как hex, текстовые форматируются, если разбираются как JSON.
Для обоих есть пределы: 1000 записей на запрос и до 64 КиБ на один кадр WebSocket.
Если событие в потоке есть, а до страницы не доходит, вставьте сырой ответ в парсер SSE: он покажет, что из него прочитает браузер и что молча отбросит.
У странного поведения стримов есть свои разборы: SSE приходит одним куском, стрим обрывается через 60 секунд, ромбики вместо текста в стриме, лимит шести соединений и WebSocket closed with code 1006.
Тайминг
Время измеряется по фазам, поэтому медленный запрос можно разложить: чтение тела запроса, сопоставление с правилами локальной подмены, заданная в правиле задержка, время на брейкпоинте, установка соединения с сервером, ожидание ответа, чтение тела ответа и время приостановки ответа до передачи клиенту. Также записывается, было соединение новым или переиспользованным.
Ошибки
Запрос, не получивший ответа, записывается с причиной: не разрешился DNS, сервер отклонил TLS-соединение прокси, не удался TLS-handshake с клиентом, соединение отклонено, сброшено или истёк таймаут, клиент закрыл соединение первым, не завершился апгрейд до WebSocket. Рядом с объяснением сохраняется исходная ошибка.
Если вместо тела показано зашифрованное содержимое, значит сертификат не установлен или ему не доверяют на стороне клиента — см. Установка сертификата.
Как выгрузить данные
Отдельный запрос можно скопировать или сохранить: заголовки, тело или исходное HTTP-сообщение.
Как записать HAR-файл
Браузер записывает HAR только для одной вкладки. Solpuga записывает его для всего, что идёт через прокси: мобильного приложения, десктопной программы, скрипта или нескольких браузеров сразу.
- Включите перехват и воспроизведите проблему. Чтобы тела HTTPS-запросов читались, нужен установленный сертификат. Телефон подключается по инструкции Мобильные устройства.
- В меню Инструменты выберите Экспорт сессии как HAR… (
Cmd/Ctrl + Shift + E) или нажмите кнопку загрузки в заголовке окна, рядом с очисткой. - Сохраните файл.
В файл попадает вся сессия в формате HAR 1.2. Он открывается в Chrome DevTools, Charles, Fiddler, Insomnia и Postman, а без установки программ — в просмотрщике HAR прямо в браузере. Пока ничего не перехвачено, экспорт недоступен.
Нужен HAR одной вкладки браузера? Его сохраняют инструменты разработчика: как записать HAR-файл в Яндекс Браузере, Chrome, Firefox и Safari.
Что окажется в файле:
- незавершённые запросы не попадают, неудачные экспортируются со статусом
0; - тела сохраняются расшифрованными и распакованными, а заголовки ответа — такими, как пришли, поэтому некоторые импортёры пытаются распаковать содержимое второй раз;
- двоичные тела ответов кодируются в base64, двоичные тела запросов не экспортируются и помечаются комментарием.
Как открыть HAR-файл
Файл .har из браузера или другого прокси открывается в меню Инструменты, пункт Импорт сессии из HAR… (Cmd/Ctrl + Shift + I). Второй способ: открыть его через приложение из файлового менеджера.
Он открывается в отдельном окне только для чтения, со своим списком и инспектором, поэтому живой перехват не затрагивается. Тела и исходные сообщения из него можно сохранять в файлы. Файлы больше 500 МБ не принимаются.