Захват на Android
Захват HTTPS на Android через прокси часто упирается в «сертификат установлен, но приложение всё равно его не принимает». На новых системах приложения по умолчанию не доверяют пользовательским сертификатам, а приложения с закреплением сертификата захватить вообще не получится. Захват на Android идёт другим путём: захват всего устройства с автоматической расшифровкой, и сертификат на телефон устанавливать не нужно в принципе. Поддерживаются как физические устройства, так и эмуляторы, и даже у приложений с закреплением сертификата или собственным шифрованием открытый текст читается изнутри.
1. Общая подготовка
Заголовок раздела «1. Общая подготовка»- Подключите устройство: подключите его к компьютеру кабелем данных и включите отладку по USB; эмуляторы обычно определяются автоматически.
- Требуется root: все три способа требуют устройства с root-доступом.
- Сертификат устанавливать не нужно: ни один из способов не является методом с человеком-посередине на основе прокси, поэтому устанавливать сертификат на телефон не нужно, — именно поэтому они менее хлопотны, чем захват через прокси на Android. Когда сертификат всё же нужен, устройство с root-доступом также может установить доверенный сертификат автоматически, избавляя вас от ручных шагов.
- Работает из коробки: вспомогательные компоненты, нужные для захвата, скачиваются и кэшируются автоматически в зависимости от архитектуры устройства, без ручной настройки окружения с вашей стороны.
2. Захват в эмуляторе
Заголовок раздела «2. Захват в эмуляторе»Захват трафика внутри Android эмулятора на компьютере почти не отличается от захвата на физическом устройстве, а зачастую даже проще:
- Автоопределение: эмуляторы распространённых брендов обнаруживаются автоматически, без кабеля данных и без ручного подключения (USB нужен только для физических устройств).
- Обычно уже с root-доступом: эмуляторы, как правило, изначально с root-доступом или получают его в один клик, что удобно удовлетворяет требованию для захвата.
- Предпочтителен «ключ сетевой карты»: системное ядро эмулятора часто старее и может не поддерживать «захват на сетевой карте», поэтому просто выберите ключ сетевой карты — у него лучшая совместимость с эмуляторами.
Всё остальное так же, как и с физическим устройством: выберите устройство эмулятора и захватывайте одним из способов ниже.
3. Как выбрать среди трёх способов
Заголовок раздела «3. Как выбрать среди трёх способов»| Ваша ситуация | Что использовать | Примечания |
|---|---|---|
| Старое устройство / эмулятор / не уверены, насколько оно новое | Ключ сетевой карты (рекомендуемый по умолчанию) | Лучшая совместимость; работает почти на любом устройстве с root-доступом |
| Более новое физическое устройство с root-доступом | Захват на сетевой карте | Проще всего, самодостаточен |
| Интересует только одно приложение, или его не удаётся расшифровать в режиме сетевой карты | Захват на уровне приложения | Читает открытый текст изнутри приложения, обходя закрепление сертификата / собственное шифрование |
Первые два способа — это захват всего устройства с автоматической расшифровкой и без установки сертификата; третий нацелен на одно приложение и справляется даже с самыми укреплёнными из них.
4. Ключ сетевой карты (рекомендуемый по умолчанию)
Заголовок раздела «4. Ключ сетевой карты (рекомендуемый по умолчанию)»Захватывает весь трафик на сетевой карте устройства (по умолчанию Wi-Fi) и автоматически его расшифровывает, без необходимости выбирать конкретное приложение и без установки сертификата.
- Лучшая совместимость: не привередлив к ядру, и старые устройства и разные эмуляторы работают одинаково хорошо, что является его главным преимуществом перед захватом на сетевой карте. Когда не уверены, насколько новое устройство, это самый безопасный выбор.
- У некоторых приложений может показываться только шифртекст: отдельные приложения, встраивающие нестандартные компоненты шифрования, могут иметь трафик, который расшифровать не получится; в этом случае переключитесь на захват на уровне приложения ниже, чтобы обработать их точечно.
Как использовать: выберите устройство → выберите сетевую карту (по умолчанию Wi-Fi) → начните захват.
5. Захват на сетевой карте
Заголовок раздела «5. Захват на сетевой карте»Также захватывает весь трафик на сетевой карте устройства и автоматически его расшифровывает. Отличает его то, что он самодостаточен и наиболее прост в использовании (данные и информация, нужная для их расшифровки, упакованы вместе).
- Предварительное условие: требуется более новое устройство (более новое ядро). Если устройство слишком старое и не подходит, при старте захвата вы получите чёткое сообщение «Захват на сетевой карте не поддерживается»; в этом случае просто переключитесь на ключ сетевой карты.
Как использовать: выберите устройство → выберите сетевую карту (по умолчанию Wi-Fi) → начните захват.
6. Захват на уровне приложения
Заголовок раздела «6. Захват на уровне приложения»Нацелен на одно приложение, читает открытый текст прямо изнутри него, и ни закрепление сертификата, ни собственное шифрование его не останавливают.
- Не ограничен недостатками режима сетевой карты: приложения, которые не удаётся расшифровать в режиме сетевой карты (закрепление сертификата, собственное шифрование), здесь тоже отдают открытый текст, потому что чтение идёт изнутри приложения, без роли человека-посередине и без опоры на расшифровку на уровне сетевой карты.
- Включите «трафик сокета» как запасной вариант, когда декодировать не получается: для приложений, статически линкующих / использующих собственную библиотеку, из которых обычными способами открытый текст получить не удаётся, включите этот переключатель, чтобы пойти путём более низкого уровня к данным.
- Перезапуск целевой программы: можно сначала закрыть и заново запустить приложение, чтобы захватить его трафик на раннем старте.
- Нацелен только на выбранное вами приложение (а не на трафик всего устройства).
Как использовать: выберите целевое приложение (из списка установленных приложений, либо укажите имя пакета / имя процесса; оставьте пустым, чтобы захватить приложение на переднем плане) → отметьте «Перезапустить целевую программу», если нужно захватить трафик запуска → начните захват.
7. Можно также использовать захват через прокси
Заголовок раздела «7. Можно также использовать захват через прокси»Помимо трёх способов выше, Android-устройство может также использовать захват через прокси: направьте Wi-Fi-прокси устройства на эту машину, установите корневой сертификат, и вы сможете захватывать открытый текст HTTPS так же, как на компьютере, и использовать полный набор возможностей переписывания и повтора. Это подходит для отладки приложений, идущих через системный прокси, или сценариев, где нужно переписывание / повтор мобильных запросов по правилам.
- Установка сертификата: отсканируйте QR-код на телефоне для установки в один клик → Управление и установка сертификата
- Возможности захвата и переписывания: → Захват через прокси
8. Когда использовать захват на Android
Заголовок раздела «8. Когда использовать захват на Android»- Анализ сетевых запросов приложения на телефоне и расследование проблем с эндпоинтами, с автоматической расшифровкой всего устройства и без возни с сертификатами.
- Просмотр с точки зрения всего устройства, к каким эндпоинтам оно или приложение реально подключалось и что отправляло.
- Когда приложение использует закрепление сертификата, а режим сетевой карты не может его расшифровать, используйте захват на уровне приложения, чтобы точечно получить открытый текст.
- Чтобы одновременно просматривать и редактировать (переписывание / повтор), используйте захват через прокси.
Назад к Захвату через прокси · Смотрите также: Просмотр и декодирование данных · Управление и установка сертификата