Перехват HTTP и HTTPS-трафика на Mac, Windows и Linux
Прокси для отладки, который показывает каждый запрос вашего приложения целиком: с расшифровкой HTTPS, сообщениями веб-сокетов, честным временем ответа и правкой запросов и ответов на лету. С компьютера, телефона и эмулятора.
Три шага до первого запроса
- 1
Запустите прокси
Кнопка «Запустить» поднимает прокси на 127.0.0.1:9090. Порт можно поменять в настройках.
- 2
Направьте трафик
Укажите этот адрес как HTTP-прокси в системных настройках сети или только в отлаживаемом приложении.
- 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 использует настройки самого компьютера
- Устройства из сети не могут обратиться через прокси к адресам самого компьютера
Поиск по заголовкам и телам
Узел и путь ищутся по подстроке, а заголовки и текстовые тела — полнотекстовым индексом по началу слов, без учёта регистра. Так находится запрос с нужным идентификатором заказа, токеном или сообщением об ошибке, даже если он был тысячу обменов назад.
- В индекс попадают метод, адрес, все заголовки и первые 64 КБ каждого текстового тела
- Двоичные тела и изображения не индексируются
Карта API из перехваченного трафика
Плоский список отвечает на вопрос «что происходило только что», дерево узлов — на вопрос «с чем вообще работает приложение». Оно строится по всему сохранённому трафику, а не только по загруженной странице списка.
- Повторные вызовы собираются в счётчик, а адреса с разными параметрами — в один узел
- Счётчик ошибок поднимается вверх по ветке и виден даже в свёрнутом дереве
- Щелчок по ветке фильтрует список по узлу, началу пути или методу
- Ветку можно сохранить коллекцией запросов в API-клиенте
Веб-сокеты: не только рукопожатие
Запрос с переключением протокола записывается как обычный обмен со статусом 101 и появляется в списке сразу. Если в настройках включён перехват веб-сокетов, Microkoi собирает кадры в сообщения и показывает их во вкладке «Сообщения» панели обмена.
- У каждого сообщения видно направление, время от начала соединения, размер и содержимое
- Текст показывается с подсветкой JSON и копируется одной кнопкой, служебные ping и pong скрыты переключателем
- Сводка соединения считает сообщения и байты в каждую сторону
- Пока перехват включён, из рукопожатия убирается сжатие кадров — иначе содержимое не разобрать по одному сообщению
Быстро на десятках тысяч запросов
Перехват не должен замедлять приложение, которое вы отлаживаете. Прокси не пишет на диск сам: обмены собираются в пачки и сохраняются одной транзакцией, а интерфейс получает только новые записи.
- Список рисует только видимые строки и подгружает следующие при прокрутке
- Если очередь переполнится, приложение честно покажет число пропущенных обменов
- Трафик хранится в базе рабочего пространства и доступен после перезапуска
- Старые обмены удаляются сами: по умолчанию через 14 дней или при объёме больше 2 ГБ — оба предела настраиваются или отключаются
Вопросы и ответы
Как перехватить HTTPS-трафик на Mac?
Запустите прокси в Microkoi, укажите 127.0.0.1:9090 как веб-прокси и защищённый веб-прокси в настройках сети macOS или только в нужном приложении, затем нажмите «Установить сертификат» и подтвердите паролем. Содержимое HTTPS-запросов появится в списке.
Почему некоторые приложения перестают работать через прокси?
Приложения с привязкой к сертификату не доверяют никакому постороннему сертификату. Исключите их узлы фильтром перехвата — тогда их трафик пойдёт сквозным туннелем без расшифровки. Microkoi намеренно не обходит такую защиту.
Можно ли перехватывать трафик с телефона?
Да. Кнопка «Устройство» на экране трафика проведёт по настройке: разрешить подключения из локальной сети, указать прокси в настройках Wi-Fi телефона и установить сертификат по QR-коду. Включайте подключения из сети только в доверенной сети и на время отладки.
Как изменить ответ сервера на лету?
Поставьте точку останова на нужный адрес — кнопкой «Остановка» в панели обмена или в списке «Остановки». Когда ответ придёт, откроется редактор: поменяйте код, заголовки или тело и нажмите «Продолжить». Если подменять ответ нужно постоянно, удобнее сделать мок.
Видно ли содержимое веб-сокетов?
Да, если включить перехват веб-сокетов в настройках прокси. Тогда кадры собираются в сообщения, и во вкладке «Сообщения» видно направление, время, размер и текст каждого из них. Без этой настройки соединение просто проходит через прокси, а в списке остаётся запрос переключения протокола.
Замедляет ли перехват работу приложения?
Тела передаются потоком без задержки, а запись на диск вынесена из пути соединения. Время в списке — это время настоящего ответа сервера, а не накладные расходы прокси.