Как посмотреть трафик своего мобильного приложения: пошаговый гайд по mitmproxy и Charles
Содержание статьи
- Введение: зачем разработчику и тестировщику видеть трафик своего приложения
- Предварительная подготовка: инструменты, требования и что установить
- Базовые понятия: как работает mitm-прокси и зачем нужен свой сертификат
- Шаг 1: настраиваем прокси в сети на android и ios
- Шаг 2: устанавливаем и доверяем корневому сертификату
- Шаг 3: то же самое на эмуляторе android и симуляторе ios
- Шаг 4: работа с ssl pinning в вашей отладочной сборке
- Шаг 5: читаем и анализируем трафик
- Как мобильные прокси помогают проверить приложение из другой сети и региона
- Проверка результата: чек-лист успешной настройки
- Типичные ошибки и решения
- Дополнительные возможности и продвинутые настройки
- Faq: часто задаваемые вопросы
- Заключение
Вы разрабатываете или тестируете мобильное приложение и хотите точно знать, какие запросы оно отправляет на сервер и что получает в ответ? Этот пошаговый гайд проведет вас от чистого листа до полного контроля над сетевым трафиком вашего собственного приложения. Мы разберем самые популярные инструменты 2026 года, научимся устанавливать доверенный сертификат на телефон, эмулятор и симулятор, а также аккуратно обходить SSL pinning в отладочных сборках штатными средствами.
Важно с самого начала: все, что описано ниже, относится исключительно к вашему собственному приложению или к приложению, на исследование которого у вас есть письменное разрешение владельца. Это материал для инженеров качества и разработчиков, а не инструкция по вмешательству в чужие программы. Подробно об этом мы поговорим в разделе про правила и этику.
Введение: зачем разработчику и тестировщику видеть трафик своего приложения
Мобильное приложение общается с сервером постоянно: логинится, тянет каталог товаров, отправляет аналитику, синхронизирует данные. Пока все работает, эти запросы остаются невидимыми. Но как только что-то ломается, вопрос звучит одинаково: что именно ушло на сервер и что вернулось?
Умение читать трафик своего приложения решает сразу несколько задач:
- Проверка интеграций. Вы видите точный формат запросов к вашему API, заголовки, тело, коды ответов. Легко понять, кто виноват в баге: клиент или бэкенд.
- Воспроизведение багов. Когда тестировщик сообщает о проблеме, вы можете посмотреть реальную последовательность запросов и повторить сценарий.
- Аудит утечек. Вы проверяете, не уходит ли наружу лишнее: токены в логах, персональные данные в аналитике, избыточные поля.
- Тестирование сценариев ошибок. Можно подменить ответ сервера и посмотреть, как приложение поведет себя при ошибке 500 или таймауте.
Что вы получите в итоге
После прохождения гайда вы сможете поднять локальный прокси на компьютере, направить через него трафик телефона, расшифровать защищенные HTTPS-запросы, читать их в удобном интерфейсе, повторять и подменять ответы. Все это для своего приложения.
Для кого этот гайд
Материал написан для QA-инженеров, мобильных разработчиков и технических специалистов, которые хотят разобраться в сетевом слое своего приложения. Уровень: для начинающих, но с элементами для продвинутых.
Что нужно знать заранее
Достаточно базового понимания того, что такое HTTP-запрос, сервер и клиент. Знание командной строки будет плюсом, но мы разберем и графические инструменты. Глубоких знаний криптографии не потребуется.
Сколько времени потребуется
Первая настройка займет от одного до двух часов, включая установку инструментов и сертификатов. Повторные запуски будут занимать пару минут.
Предварительная подготовка: инструменты, требования и что установить
Прежде чем нырять в трафик, соберем рабочее окружение. Разберем четыре популярных инструмента и выберем подходящий именно вам.
Сравнение инструментов: mitmproxy, Charles, Proxyman и Burp
Каждый из этих инструментов умеет работать как MITM-прокси, то есть посредник между вашим приложением и сервером. Отличия в интерфейсе, цене и удобстве.
- mitmproxy. Бесплатный и открытый. Работает в терминале, но имеет и веб-интерфейс mitmweb. Идеален для тех, кто любит скрипты и автоматизацию на Python. Кроссплатформенный.
- Charles. Платный, с пробным периодом. Классический графический интерфейс на Java, работает на Windows, macOS и Linux. Очень популярен у мобильных QA благодаря простоте.
- Proxyman. Современный инструмент с красивым интерфейсом, изначально для macOS, есть версии для Windows и Linux. Удобная автоматическая настройка сертификатов.
- Burp Suite. Инструмент из мира безопасности. Мощный, есть бесплатная Community-версия. Немного избыточен для простого просмотра трафика, но полезен для продвинутого анализа.
Совет: Если вы новичок и хотите быстро увидеть результат, начните с Charles или Proxyman. Если любите терминал и автоматизацию, ставьте mitmproxy. Для целей этого гайда мы будем опираться на mitmproxy и Charles как на самые универсальные варианты.
Системные требования
- Компьютер на Windows, macOS или Linux с правами администратора.
- Мобильное устройство или эмулятор Android либо симулятор iOS.
- Общая сеть Wi-Fi для телефона и компьютера, либо настроенный эмулятор.
- Доступ к исходникам вашего приложения для сборки отладочной версии.
Что скачать и установить
- Скачайте выбранный прокси-инструмент с его официального сайта. Для mitmproxy это установщик под вашу ОС или пакет через менеджер пакетов.
- Установите инструмент, следуя стандартному мастеру установки для вашей системы.
- Для Android-эмулятора установите Android Studio с эмулятором и образом системы без сервисов Google, если хотите легко работать с системным хранилищем сертификатов.
- Для iOS-симулятора на macOS установите Xcode из App Store.
⚠️ Внимание: Скачивайте инструменты только с официальных сайтов разработчиков. Прокси-программы имеют глубокий доступ к трафику, поэтому подделки могут быть опасны. Проверяйте подписи установщиков там, где это возможно.
Резервные копии и подготовка устройства
Работа с сертификатами и настройками сети обычно безопасна и обратима. Но перед изменениями стоит подстраховаться.
- Запишите текущие настройки Wi-Fi телефона, чтобы потом вернуть их обратно.
- Используйте для экспериментов отдельное тестовое устройство или профиль, а не основной рабочий телефон.
- Если работаете с рабочим устройством, запомните, какие сертификаты вы устанавливаете, чтобы удалить их после отладки.
✅ Проверка: На этом этапе у вас должен быть установлен прокси-инструмент, готовое тестовое устройство или эмулятор и доступ к сборке своего приложения.
Базовые понятия: как работает MITM-прокси и зачем нужен свой сертификат
Чтобы уверенно двигаться дальше, разберем ключевые термины простыми словами. Это фундамент, без которого шаги будут казаться магией.
Что такое MITM-прокси
MITM расшифровывается как man-in-the-middle, то есть человек посередине. Прокси встает между вашим приложением и сервером. Приложение думает, что говорит с сервером, а сервер думает, что говорит с приложением. На самом деле оба общаются с прокси, который видит и может показать весь трафик.
Для обычного HTTP это работает сразу: данные передаются в открытом виде. Но современные приложения используют HTTPS, где трафик зашифрован. Здесь начинается самое интересное.
Что происходит при TLS-рукопожатии
HTTPS строится поверх протокола TLS. Когда приложение подключается к серверу, они выполняют так называемое рукопожатие. Сервер предъявляет свой сертификат, подтверждающий, что он именно тот, за кого себя выдает. Приложение проверяет этот сертификат по списку доверенных центров сертификации.
Центр сертификации, или CA, это организация, которой доверяют устройства. Ее подпись на сертификате сервера убеждает приложение, что соединение безопасно.
Зачем нужен собственный CA-сертификат
Чтобы прокси мог показать зашифрованный трафик, он должен сам выступать сервером для приложения. Для этого прокси на лету генерирует сертификат для каждого запрашиваемого домена и подписывает его своим собственным корневым сертификатом CA.
Но приложение по умолчанию не доверяет этому самодельному CA. Поэтому мы вручную устанавливаем корневой сертификат прокси в хранилище доверенных сертификатов устройства. После этого приложение видит подпись прокси как надежную и спокойно устанавливает соединение.
Совет: Думайте о корневом сертификате прокси как о пропуске. Пока вы не выдали этот пропуск устройству, оно не пускает прокси читать защищенный трафик.
Почему без доверия видно только имя хоста в SNI
Если сертификат прокси не установлен, приложение откажется устанавливать защищенное соединение через него. Но кое-что все равно будет видно. В начале TLS-рукопожатия передается поле SNI, то есть имя сервера, к которому идет подключение. Оно нужно, чтобы сервер понял, какой сайт запрашивают.
Поэтому даже без доверия к сертификату вы увидите список доменов, к которым обращается приложение, но не сможете прочитать содержимое запросов и ответов. Чтобы читать содержимое, нужен установленный и доверенный сертификат.
Что такое SSL pinning
SSL pinning, или закрепление сертификата, это дополнительная защита. Приложение хранит внутри себя отпечаток ожидаемого сертификата или ключа сервера и проверяет, что сервер предъявил именно его. Даже если в системе есть доверенный сертификат прокси, приложение с pinning его отвергнет, потому что отпечаток не совпадает. О работе с pinning в своих отладочных сборках мы поговорим отдельно.
✅ Проверка: Вы понимаете, что прокси показывает трафик, будучи посредником, а для чтения HTTPS нужен доверенный корневой сертификат прокси на устройстве.
Шаг 1: настраиваем прокси в сети на Android и iOS
Цель этапа: направить весь веб-трафик телефона через ваш компьютер, на котором работает прокси-инструмент.
Готовим компьютер и узнаем его адрес
- Убедитесь, что компьютер и телефон подключены к одной сети Wi-Fi.
- Запустите прокси-инструмент. Для mitmweb в терминале введите команду запуска веб-интерфейса, для Charles просто откройте приложение.
- Проверьте, на каком порту слушает прокси. По умолчанию у mitmproxy это порт 8080, у Charles тоже 8888 или 8080 в зависимости от версии.
- Узнайте локальный IP-адрес компьютера в сети. На Windows это команда просмотра сетевых настроек, на macOS и Linux аналогичная команда в терминале. Адрес выглядит примерно как 192.168.1.15.
Совет: Запишите IP-адрес компьютера и порт прокси на листке. Эти два значения вы будете вводить в настройках телефона.
Настройка прокси на Android
- Откройте на телефоне приложение Настройки.
- Перейдите в раздел Сеть и интернет, затем Wi-Fi.
- Нажмите на имя вашей текущей сети, чтобы открыть ее параметры.
- Найдите пункт Дополнительно или значок карандаша для редактирования сети.
- В поле Прокси выберите значение Вручную.
- В поле Имя хоста прокси введите IP-адрес компьютера, например 192.168.1.15.
- В поле Порт введите порт прокси, например 8080.
- Сохраните настройки, нажав Сохранить.
Настройка прокси на iOS
- Откройте приложение Настройки.
- Перейдите в раздел Wi-Fi.
- Нажмите на синий значок информации рядом с именем вашей сети.
- Прокрутите вниз до раздела Настройка прокси HTTP.
- Выберите режим Вручную.
- В поле Сервер введите IP-адрес компьютера.
- В поле Порт введите порт прокси.
- Вернитесь назад, настройки сохранятся автоматически.
⚠️ Внимание: После настройки прокси весь веб-трафик телефона пойдет через компьютер. Если прокси-инструмент выключен, интернет на телефоне перестанет работать. Это нормально: просто включите прокси или уберите настройки.
Ожидаемый результат
Откройте на телефоне любой браузер и зайдите на простой сайт по HTTP. В интерфейсе прокси должны появиться записи о запросах. Пока HTTPS будет отображаться только как имя хоста, потому что сертификат еще не установлен.
Возможные проблемы. Если ничего не появляется, проверьте, что телефон и компьютер в одной сети, что вы ввели правильный IP и порт, и что на компьютере не блокирует соединения файрвол.
✅ Проверка: В окне прокси видны входящие запросы от телефона хотя бы в виде списка доменов.
Шаг 2: устанавливаем и доверяем корневому сертификату
Цель этапа: сделать так, чтобы устройство доверяло корневому сертификату прокси и позволяло читать содержимое HTTPS-запросов.
Скачиваем сертификат прокси
Когда прокси настроен и телефон ходит через него, есть удобный способ получить сертификат прямо на устройство.
- Откройте на телефоне браузер.
- Для mitmproxy перейдите на специальный служебный адрес mitm.it. Эта страница появляется только когда трафик идет через mitmproxy.
- Вы увидите кнопки для разных платформ. Выберите нужную, например Android или Apple.
- Скачается файл сертификата.
- Для Charles сертификат также доступен через служебный адрес, который показывает сама программа в меню помощи.
Установка на Android 7 и новее
Начиная с Android 7, система разделяет два хранилища сертификатов: пользовательское и системное. Это важнейший момент.
- Пользовательское хранилище. Сюда вы можете установить сертификат без прав root. Но приложения по умолчанию не доверяют пользовательским сертификатам, если только разработчик явно это не разрешил в конфигурации приложения.
- Системное хранилище. Ему доверяют все приложения, но добавить туда сертификат можно только на устройстве с root-доступом или на эмуляторе с образом без Google-сервисов.
Для установки в пользовательское хранилище выполните шаги:
- Откройте Настройки, затем Безопасность.
- Найдите пункт Шифрование и учетные данные или Дополнительные настройки безопасности.
- Выберите Установить сертификат, затем Сертификат CA.
- Система предупредит о рисках, подтвердите установку.
- Укажите скачанный файл сертификата.
- Дайте сертификату понятное имя, например DebugProxy.
Важно: Именно из-за разделения хранилищ на Android 7 и выше ваше приложение может не видеть трафик, даже если сертификат установлен в пользовательское хранилище. Решение через конфигурацию приложения мы разберем на шаге про pinning.
Установка и доверие на iOS
На iOS процесс делится на два этапа: установку профиля и включение доверия.
- После скачивания сертификата iOS сообщит, что профиль загружен.
- Откройте Настройки, вверху появится пункт Профиль загружен.
- Нажмите на него и выберите Установить в правом верхнем углу.
- Введите код-пароль устройства, если он установлен.
- Подтвердите установку профиля.
Теперь ключевой шаг, о котором часто забывают, включение полного доверия:
- Откройте Настройки, затем Основные.
- Перейдите в раздел Об этом устройстве.
- Прокрутите вниз до пункта Доверие сертификатам.
- Найдите ваш сертификат прокси в списке.
- Включите переключатель напротив него, чтобы включить полное доверие к корневому сертификату.
⚠️ Внимание: Без включения переключателя в разделе Доверие сертификатам iOS будет считать сертификат установленным, но не доверенным. HTTPS-трафик читаться не будет. Это самая частая ошибка новичков на iOS.
Ожидаемый результат
Откройте браузер и зайдите на любой сайт по HTTPS. Теперь в интерфейсе прокси вы должны видеть полное содержимое запросов и ответов, а не только имена доменов.
✅ Проверка: В прокси-инструменте отображается расшифрованное содержимое HTTPS-запросов из браузера телефона.
Шаг 3: то же самое на эмуляторе Android и симуляторе iOS
Цель этапа: настроить перехват трафика без физического устройства, прямо на компьютере разработчика.
Эмулятор Android
Эмулятор удобен тем, что вы можете использовать образ без Google-сервисов и получить доступ к системному хранилищу сертификатов.
- В Android Studio откройте Device Manager и создайте виртуальное устройство.
- При выборе образа системы предпочтите вариант без пометки Google Play, чтобы иметь права на системный раздел.
- Запустите эмулятор.
- В расширенных настройках эмулятора можно указать прокси напрямую, либо задать его в настройках Wi-Fi внутри эмулятора так же, как на реальном телефоне.
- Для системного хранилища используйте инструменты командной строки, которые позволяют перезагрузить эмулятор с правом записи в системный раздел и добавить туда сертификат.
Совет: Эмулятор без Google-сервисов и с доступом к системному хранилищу избавляет вас от многих проблем с доверием сертификатам. Это лучший выбор для регулярной отладки.
Симулятор iOS
Симулятор iOS на macOS использует доверенные сертификаты самой системы macOS, что упрощает настройку.
- Установите корневой сертификат прокси в системную связку ключей вашего Mac.
- Откройте приложение Связка ключей, найдите сертификат прокси.
- Двойным щелчком откройте его и в разделе Доверие установите значение Всегда доверять.
- Запустите симулятор через Xcode. Он унаследует доверие к сертификату из macOS.
- Трафик симулятора пойдет через системный прокси Mac, если он настроен, или через прокси, заданный в сетевых настройках.
Ожидаемый результат. В обоих случаях вы видите расшифрованный трафик тестового приложения или браузера, запущенного в эмуляторе либо симуляторе.
Возможные проблемы. Если эмулятор Android не подхватывает прокси, проверьте настройки Wi-Fi внутри него и параметры запуска. Для симулятора iOS убедитесь, что сертификат в связке ключей помечен как доверенный.
✅ Проверка: Трафик из эмулятора или симулятора читается в прокси-инструменте в расшифрованном виде.
Шаг 4: работа с SSL pinning в вашей отладочной сборке
Цель этапа: понять, есть ли в приложении закрепление сертификата, и корректно ослабить его только в отладочной сборке штатными средствами платформы.
Это самый ответственный раздел, поэтому подойдем к нему вдумчиво.
Как понять, что pinning включен
Если сертификат прокси установлен и доверен, браузер показывает трафик, а ваше приложение все равно не работает или ругается на ошибку сети, скорее всего в нем есть pinning.
- В интерфейсе прокси вы увидите обрыв соединения на этапе TLS-рукопожатия для доменов вашего приложения.
- В логах приложения могут появляться сообщения об ошибке проверки сертификата или недоверенной цепочке.
- Часто разработчик и сам знает, что pinning был добавлен намеренно для защиты релиза.
Ослабление pinning на Android через network_security_config
Android предоставляет штатный механизм конфигурации сетевой безопасности. С его помощью можно разрешить доверие пользовательским сертификатам только для отладочной сборки.
- В проекте создайте файл конфигурации сетевой безопасности в ресурсах.
- В нем опишите правила доверия сертификатам именно для отладочной конфигурации, используя специальный блок для debug-переопределений.
- Укажите, что в отладке приложение доверяет пользовательскому хранилищу сертификатов.
- Подключите этот файл в манифесте приложения через соответствующий атрибут.
- Убедитесь, что debug-переопределения применяются только когда приложение собрано в отладочном режиме и никогда в релизе.
Важно: Специальный блок отладочных переопределений работает только когда приложение помечено как отлаживаемое. В релизной сборке эти правила полностью игнорируются системой, что и обеспечивает безопасность.
Ослабление проверок на iOS через настройки в Info.plist
На iOS транспортную безопасность контролирует механизм ATS. В отладочной сборке можно ослабить строгие проверки для конкретных доменов вашего тестового окружения.
- Откройте файл Info.plist вашей отладочной конфигурации.
- Добавьте настройки транспортной безопасности для нужных доменов тестового сервера.
- Помните, что ATS регулирует политику соединений, а собственный pinning в коде приложения нужно отключать отдельно.
- Если pinning реализован в коде, добавьте условие, при котором проверка отпечатка выполняется только в релизной конфигурации.
⚠️ Внимание: Никогда не оставляйте ослабленные проверки в релизной сборке. Это создает реальную уязвимость для пользователей вашего приложения. Все изменения должны действовать строго в отладочной конфигурации и автоматически исчезать в релизе.
Почему только в отладке и никогда в релизе
SSL pinning защищает пользователей вашего приложения от перехвата их трафика. Отключая его в отладке, вы делаете это на своем контролируемом устройстве, ради диагностики, осознанно и временно. В релизе такая защита критически важна и должна оставаться максимально строгой.
Совет: Разделите логику проверки сертификатов по флагу сборки. Настройте так, чтобы даже случайно нельзя было собрать релиз с ослабленными проверками. Это защитит вас от человеческой ошибки.
Ожидаемый результат
После корректной настройки отладочной сборки ваше приложение устанавливает соединение через прокси, и вы видите его расшифрованные запросы и ответы.
✅ Проверка: Запросы вашего приложения к его API отображаются в прокси в читаемом виде, при этом изменения касаются только debug-сборки.
Шаг 5: читаем и анализируем трафик
Цель этапа: научиться находить нужные запросы, фильтровать шум, экспортировать данные, повторять запросы и подменять ответы.
Фильтры и поиск
Даже небольшое приложение генерирует десятки запросов. Фильтры помогают найти нужное.
- Используйте фильтр по домену, чтобы оставить только запросы к вашему API.
- Фильтруйте по типу содержимого, например только JSON-ответы.
- Ищите по строке в теле запроса или ответа, чтобы быстро найти нужный вызов.
- В Charles есть удобное дерево по хостам, в mitmweb гибкая строка фильтров.
Совет: Настройте фильтр так, чтобы отображались только домены вашего приложения. Это сразу уберет лишний фоновый трафик системы и сторонних сервисов.
Экспорт в HAR
Формат HAR это стандартный способ сохранить сессию трафика в один файл. Он удобен для передачи бэкенд-команде или прикрепления к баг-репорту.
- Выделите нужные запросы или всю сессию.
- Выберите пункт экспорта в формат HAR в меню инструмента.
- Сохраните файл и приложите его к задаче в трекере.
Повтор запроса
Иногда нужно повторить один и тот же запрос несколько раз, например чтобы проверить идемпотентность или воспроизвести баг.
- Выберите нужный запрос в списке.
- Используйте функцию повтора, в Charles это Repeat, в mitmproxy команда повтора потока.
- При необходимости отредактируйте запрос перед повтором, изменив заголовки или тело.
Подмена ответа для тестирования сценариев ошибок
Это мощная возможность. Вы можете заставить приложение получить нужный вам ответ вместо настоящего.
- Настройте правило подмены, в Charles это функции Map Local или Breakpoints, в mitmproxy скрипты на Python.
- Задайте, что при запросе к определенному адресу возвращается заранее подготовленный ответ, например ошибка 500 или пустой список.
- Запустите сценарий в приложении и посмотрите, как оно обрабатывает ошибку.
Совет: С помощью подмены ответов удобно тестировать поведение приложения при плохом интернете, при ошибках сервера и при неожиданных данных, не трогая настоящий бэкенд.
✅ Проверка: Вы умеете фильтровать трафик, экспортировать HAR, повторять запрос и подменять ответ на своем приложении.
Как мобильные прокси помогают проверить приложение из другой сети и региона
Отдельно стоит рассказать про мобильные прокси. Это прокси-серверы, работающие через реальные мобильные операторские сети. Они полезны для тестирования того, как ваше приложение ведет себя, когда пользователь заходит с мобильного интернета в другом регионе.
Зачем это нужно QA
- Проверка регионального контента. Многие приложения показывают разные данные в зависимости от региона пользователя. Мобильный прокси позволяет увидеть приложение глазами пользователя из нужного региона.
- Тестирование на мобильной сети. Поведение приложения на мобильном интернете отличается от Wi-Fi: другие задержки, смена IP, особенности операторских сетей. Мобильный прокси помогает воспроизвести такие условия.
- Проверка геозависимой логики. Если ваш бэкенд определяет регион по IP, вы можете убедиться, что логика работает корректно для разных мест.
Важно: Использовать мобильные прокси стоит только для тестирования собственного приложения и в рамках закона. Это инструмент QA для проверки корректности региональной логики, а не средство обхода чего-либо. Сервисы мобильных прокси, такие как MobileProxy.space, предоставляют легальный доступ к мобильным IP для подобных задач.
Совет: Комбинируйте мобильный прокси для смены точки выхода с локальным MITM-прокси для чтения трафика. Так вы одновременно видите содержимое запросов и проверяете региональное поведение.
Проверка результата: чек-лист успешной настройки
Пройдитесь по этому списку, чтобы убедиться, что все работает как надо.
- Прокси-инструмент запущен и слушает нужный порт.
- Телефон, эмулятор или симулятор направляет трафик через прокси.
- Корневой сертификат прокси установлен и доверен на устройстве.
- HTTPS-трафик браузера читается в расшифрованном виде.
- В отладочной сборке приложения ослаблен pinning штатными средствами.
- Запросы вашего приложения к API отображаются в прокси полностью.
- Вы умеете фильтровать, экспортировать, повторять и подменять запросы.
Как протестировать
- Запустите отладочную сборку приложения.
- Выполните типичный сценарий, например вход и загрузку главного экрана.
- Убедитесь, что в прокси появились запросы к вашему API с читаемым телом.
- Повторите один запрос и подмените один ответ, чтобы проверить реакцию приложения.
Показатели успеха. Вы видите полный жизненный цикл сетевого взаимодействия своего приложения и можете влиять на него для тестирования.
Типичные ошибки и решения
Разберем частые проблемы по схеме проблема, причина, решение.
Приложение игнорирует системный прокси
Проблема: трафик не появляется в прокси, хотя браузер работает. Причина: приложение использует собственный сетевой стек, который не читает системные настройки прокси. Решение: в отладочной сборке настройте сетевой клиент так, чтобы он учитывал системный прокси, либо используйте прозрачный режим прокси на уровне сети.
Трафик по QUIC не виден
Проблема: часть запросов отсутствует. Причина: приложение использует протокол QUIC поверх UDP, который обычные HTTP-прокси не перехватывают. Решение: в отладочной сборке временно отключите поддержку QUIC в сетевом клиенте, чтобы трафик пошел по обычному HTTPS и стал виден в прокси.
Нюансы Android 14
Проблема: сертификат установлен, но приложение его не видит. Причина: в новых версиях Android правила управления пользовательскими сертификатами стали строже, и приложения по умолчанию не доверяют им. Решение: используйте конфигурацию сетевой безопасности с debug-переопределениями либо системное хранилище на эмуляторе.
iOS не расшифровывает трафик
Проблема: запросы приложения на iOS не читаются. Причина: сертификат установлен, но не включено полное доверие в разделе Доверие сертификатам. Решение: зайдите в Настройки, Основные, Об этом устройстве, Доверие сертификатам и включите переключатель.
gRPC и HTTP/2
Проблема: данные видны, но в бинарном непонятном формате. Причина: приложение использует gRPC поверх HTTP/2 с бинарной сериализацией. Решение: используйте инструменты, понимающие HTTP/2, и при необходимости плагины для декодирования формата сообщений, чтобы читать содержимое.
Нет интернета после настройки прокси
Проблема: телефон перестал выходить в сеть. Причина: прокси-инструмент выключен, а настройки прокси остались. Решение: включите прокси на компьютере или удалите настройки прокси в параметрах Wi-Fi телефона.
Файрвол блокирует соединения
Проблема: телефон не может подключиться к прокси. Причина: файрвол компьютера блокирует входящие подключения на порт прокси. Решение: добавьте разрешающее правило для порта прокси во встроенном файрволе системы.
Дополнительные возможности и продвинутые настройки
Когда базовая настройка освоена, стоит расширить арсенал.
Скрипты и автоматизация
mitmproxy позволяет писать скрипты на Python, которые автоматически модифицируют запросы и ответы. Это удобно для регрессионного тестирования и сложных сценариев подмены.
Сохранение сессий
Сохраняйте записанные сессии трафика в файлы, чтобы возвращаться к ним позже или делиться с командой. Это ускоряет разбор багов.
Маппинг на локальные файлы
Функция подмены ответа на локальный файл позволяет разрабатывать интерфейс приложения независимо от готовности бэкенда. Вы просто отдаете приложению заранее подготовленные JSON-ответы.
Ограничение скорости
Многие прокси умеют искусственно замедлять соединение. Это помогает проверить поведение приложения на медленной сети и найти проблемы с таймаутами.
Совет: Соберите набор типовых сценариев подмены и замедления и переиспользуйте их в каждом релизе. Это превратит ручную отладку в повторяемый процесс тестирования.
FAQ: часто задаваемые вопросы
Нужен ли root на Android для чтения трафика?
Для пользовательского хранилища и своего приложения с debug-конфигурацией root не нужен. Для системного хранилища на реальном устройстве потребуется root, но проще использовать эмулятор без Google-сервисов.
Можно ли обойтись без установки сертификата?
Без доверенного сертификата вы увидите только имена доменов в SNI, но не содержимое HTTPS. Для чтения запросов сертификат обязателен.
Почему браузер видит трафик, а приложение нет?
Скорее всего в приложении включен SSL pinning или собственный сетевой стек. Настройте отладочную сборку, как описано в шаге про pinning.
Безопасно ли устанавливать корневой сертификат прокси?
На тестовом устройстве и на время отладки это приемлемо. После работы удалите сертификат, чтобы не оставлять расширенное доверие на устройстве.
Что делать, если трафик идет по QUIC?
Отключите QUIC в отладочной сборке сетевого клиента, чтобы соединения пошли по обычному HTTPS и стали видны прокси.
Можно ли анализировать трафик чужого приложения?
Нет. Только своего приложения или приложения с явным разрешением владельца. Это принципиальное правило.
Charles или mitmproxy: что выбрать новичку?
Charles проще для старта благодаря графическому интерфейсу. mitmproxy мощнее для автоматизации. Начните с того, что удобнее вам.
Как убрать все изменения после отладки?
Удалите настройки прокси в Wi-Fi, удалите установленный сертификат в настройках безопасности и соберите приложение в релизной конфигурации с полными проверками.
Почему на iOS не работает доверие сертификату?
Вы установили профиль, но не включили полное доверие в разделе Доверие сертификатам. Это отдельный обязательный шаг.
Можно ли смотреть трафик на медленной сети?
Да, многие прокси умеют искусственно замедлять соединение для тестирования поведения приложения при плохом интернете.
Заключение
Поздравляем, теперь у вас есть полный набор навыков для анализа сетевого трафика собственного мобильного приложения. Вы научились выбирать между mitmproxy, Charles, Proxyman и Burp, поднимать локальный прокси, направлять через него трафик телефона, эмулятора и симулятора.
Вы разобрались, как работает MITM-прокси и зачем нужен доверенный корневой сертификат, освоили тонкости хранилищ сертификатов на Android 7 и новее и обязательный шаг доверия на iOS. Вы поняли, как аккуратно и только в отладочной сборке ослабить SSL pinning штатными средствами платформы, никогда не трогая релиз.
Наконец, вы умеете читать, фильтровать, экспортировать, повторять и подменять запросы, а также использовать мобильные прокси для проверки регионального поведения приложения в рамках закона.
Что делать дальше
Закрепите навык на реальном проекте: настройте перехват трафика своего приложения и добавьте в процесс тестирования типовые сценарии подмены ответов. Постепенно осваивайте скрипты автоматизации и делитесь сессиями трафика с командой.
Куда развиваться дальше: углубитесь в анализ HTTP/2 и gRPC, изучите написание скриптов для mitmproxy, освойте интеграцию перехвата трафика в автотесты. И всегда помните главное правило: работайте только со своим приложением или с явного разрешения владельца, соблюдая законодательство и уважая приватность пользователей.