Перехват трафика

Перехват HTTP и HTTPS-трафика на Mac, Windows и Linux

Прокси для отладки, который показывает каждый запрос вашего приложения целиком: с расшифровкой HTTPS, сообщениями веб-сокетов, честным временем ответа и правкой запросов и ответов на лету. С компьютера, телефона и эмулятора.

Экран трафика Microkoi со списком перехваченных запросов, деревом узлов и панелью запроса и ответа.

Три шага до первого запроса

  1. 1

    Запустите прокси

    Кнопка «Запустить» поднимает прокси на 127.0.0.1:9090. Порт можно поменять в настройках.

  2. 2

    Направьте трафик

    Укажите этот адрес как HTTP-прокси в системных настройках сети или только в отлаживаемом приложении.

  3. 3

    Установите сертификат

    Кнопка «Установить сертификат» добавляет корневой сертификат в хранилище вашей системы — и содержимое HTTPS становится видно.

Всё, что ушло по проводу и вернулось

Запрос, ответ, время и структура API — без переключения между окнами.

  • Запрос и ответ рядом

    Панель обмена разделена на две колонки, чтобы сверять запрос с ответом, не переключая вкладки.

  • Дерево узлов

    Узел, сегменты пути и методы со счётчиками обращений и ошибок — карта API, собранная из трафика.

  • Фильтр перехвата

    Расшифровываются только нужные узлы. Остальные проходят сквозным туннелем и не записываются.

  • Честное время

    Время до первого байта и полное время измеряются вокруг реального обращения к серверу.

  • Поиск по заголовкам и телам

    Поиск по адресу, заголовкам и текстовым телам запросов и ответов, фильтры по классам кода от 2xx до 5xx.

  • Пауза потока

    Список замирает, а новые обмены копятся в буфере — их число видно на кнопке.

  • Точки останова

    Запрос задерживается перед отправкой на сервер, ответ — перед отдачей приложению. Поправьте и отпустите.

  • Телефон и эмуляторы

    Пошаговая настройка устройства с QR-кодом для установки сертификата. Трафик телефона — в том же списке.

  • Сообщения веб-сокетов

    Кадры разбираются в сообщения: направление, время от начала соединения, размер и содержимое с подсветкой JSON.

  • Большие тела целиком

    Тела до 50 МБ сохраняются полностью файлами, а старый трафик убирается по сроку и объёму.

Как это устроено

Расшифровка HTTPS собственным сертификатом

Для защищённых соединений Microkoi на лету выпускает сертификат для каждого узла и подписывает его корневым сертификатом, созданным на вашем компьютере при первом запуске. Сертификат уникален для установки, а его закрытый ключ хранится в файле, доступном только вашей учётной записи.

  • Установка одной кнопкой: связка ключей на macOS, хранилище текущего пользователя на Windows, системное хранилище на Linux
  • Для служб, работающих от другого пользователя, приложение покажет готовую команду доверия на уровне системы и кнопку проверки
  • Соединение с настоящим сервером проверяется полностью: цепочка, срок действия, имя узла
  • Пока сертификат не установлен, защищённые запросы видны по узлу, времени и размеру

Фильтр перехвата для каждого проекта

У каждого рабочего пространства свой список узлов: перехватывать все, только выбранные или все, кроме выбранных. Узел задаётся именем или маской вида *.example.com — можно просто вставить адрес целиком, и Microkoi выделит из него узел.

  • Узел вне фильтра идёт сквозным туннелем — без расшифровки и без записи
  • Банки, почта и приложения с привязкой к сертификату продолжают работать во время отладки
  • Правила хранятся в пространстве и приходят команде вместе с репозиторием
  • Узлы, которые уже встречались в трафике, предлагаются одним нажатием

Тела, JSON и изображения

Тело передаётся приложению потоком без задержки и одновременно сохраняется: до 256 КБ — в базе пространства, больше — целиком файлом, до 50 МБ. В память попадает только начало, поэтому гигабайтная загрузка через прокси не раздувает память приложения. Сжатые ответы распаковываются только для показа и сохранения: наружу они уходят ровно такими, какими пришли.

  • JSON с подсветкой и форматированием, копирование одной кнопкой
  • Изображения показываются картинкой с типом, размером и подложкой для прозрачности
  • Заголовки, параметры адреса и поля формы — таблицами «ключ — значение», включая составные формы с файлами
  • Вкладка исходного вида: запрос или ответ целиком, как он ушёл по проводу
  • Сохранение тела в файл с понятным именем, собранным из пути запроса — целиком, даже если на экране показано начало
  • Кнопка «cURL» копирует перехваченный запрос командой для терминала

Точки останова: правка запросов и ответов на лету

Точка останова задерживает перехваченный обмен: запрос — перед отправкой на сервер, ответ — перед отдачей приложению. Поверх любого экрана открывается редактор: поправьте метод, адрес, заголовки и тело запроса или код, заголовки и тело ответа — и отпустите. Так проверяют, как приложение переживёт другой код ответа, лишнее поле или пустой список, не меняя ни сервер, ни приложение.

  • Правило задаётся методом, узлом и путём с масками — или одной кнопкой «Остановка» в панели обмена
  • «Продолжить», «Без изменений», «Прервать» — и очередь, если остановлено несколько обменов
  • Сжатый ответ показывается распакованным, длина тела выставляется сама
  • В трафике остаётся то, что реально ушло и вернулось, а время на точке из длительности вычитается
  • Через 10 минут без решения обмен продолжается без изменений

Перехват с телефона и эмуляторов

Кнопка «Устройство» открывает пошаговую настройку: разрешить подключения из локальной сети, указать прокси в настройках Wi-Fi телефона и установить сертификат по QR-коду. Трафик устройства появляется в том же списке, что и трафик компьютера.

  • Подключения из сети включаются только явным переключателем, и пока они разрешены, у прокси на экране стоит пометка «в сети»
  • Страница сертификата с инструкциями для iOS и Android и отпечатком для сверки открывается прямо с телефона
  • Диалог показывает подключившиеся устройства и время их последнего запроса
  • Эмулятор Android обращается к компьютеру по адресу 10.0.2.2, симулятор iOS использует настройки самого компьютера
  • Устройства из сети не могут обратиться через прокси к адресам самого компьютера

Карта API из перехваченного трафика

Плоский список отвечает на вопрос «что происходило только что», дерево узлов — на вопрос «с чем вообще работает приложение». Оно строится по всему сохранённому трафику, а не только по загруженной странице списка.

  • Повторные вызовы собираются в счётчик, а адреса с разными параметрами — в один узел
  • Счётчик ошибок поднимается вверх по ветке и виден даже в свёрнутом дереве
  • Щелчок по ветке фильтрует список по узлу, началу пути или методу
  • Ветку можно сохранить коллекцией запросов в API-клиенте

Веб-сокеты: не только рукопожатие

Запрос с переключением протокола записывается как обычный обмен со статусом 101 и появляется в списке сразу. Если в настройках включён перехват веб-сокетов, Microkoi собирает кадры в сообщения и показывает их во вкладке «Сообщения» панели обмена.

  • У каждого сообщения видно направление, время от начала соединения, размер и содержимое
  • Текст показывается с подсветкой JSON и копируется одной кнопкой, служебные ping и pong скрыты переключателем
  • Сводка соединения считает сообщения и байты в каждую сторону
  • Пока перехват включён, из рукопожатия убирается сжатие кадров — иначе содержимое не разобрать по одному сообщению

Быстро на десятках тысяч запросов

Перехват не должен замедлять приложение, которое вы отлаживаете. Прокси не пишет на диск сам: обмены собираются в пачки и сохраняются одной транзакцией, а интерфейс получает только новые записи.

  • Список рисует только видимые строки и подгружает следующие при прокрутке
  • Если очередь переполнится, приложение честно покажет число пропущенных обменов
  • Трафик хранится в базе рабочего пространства и доступен после перезапуска
  • Старые обмены удаляются сами: по умолчанию через 14 дней или при объёме больше 2 ГБ — оба предела настраиваются или отключаются

Вопросы и ответы

Как перехватить HTTPS-трафик на Mac?

Запустите прокси в Microkoi, укажите 127.0.0.1:9090 как веб-прокси и защищённый веб-прокси в настройках сети macOS или только в нужном приложении, затем нажмите «Установить сертификат» и подтвердите паролем. Содержимое HTTPS-запросов появится в списке.

Почему некоторые приложения перестают работать через прокси?

Приложения с привязкой к сертификату не доверяют никакому постороннему сертификату. Исключите их узлы фильтром перехвата — тогда их трафик пойдёт сквозным туннелем без расшифровки. Microkoi намеренно не обходит такую защиту.

Можно ли перехватывать трафик с телефона?

Да. Кнопка «Устройство» на экране трафика проведёт по настройке: разрешить подключения из локальной сети, указать прокси в настройках Wi-Fi телефона и установить сертификат по QR-коду. Включайте подключения из сети только в доверенной сети и на время отладки.

Как изменить ответ сервера на лету?

Поставьте точку останова на нужный адрес — кнопкой «Остановка» в панели обмена или в списке «Остановки». Когда ответ придёт, откроется редактор: поменяйте код, заголовки или тело и нажмите «Продолжить». Если подменять ответ нужно постоянно, удобнее сделать мок.

Видно ли содержимое веб-сокетов?

Да, если включить перехват веб-сокетов в настройках прокси. Тогда кадры собираются в сообщения, и во вкладке «Сообщения» видно направление, время, размер и текст каждого из них. Без этой настройки соединение просто проходит через прокси, а в списке остаётся запрос переключения протокола.

Замедляет ли перехват работу приложения?

Тела передаются потоком без задержки, а запись на диск вынесена из пути соединения. Время в списке — это время настоящего ответа сервера, а не накладные расходы прокси.

Попробуйте на своём проекте

Бета-версия бесплатна и не требует регистрации. Скачайте, выберите папку проекта и запустите прокси — через пару минут в списке появятся первые запросы.

Версия 0.9.0 · macOS, Windows и Linux · без регистрации