Иногда требуется провести тестирование мобильного приложения и изучить все сетевые запросы, связанные с ним. В онлайн-среде это легко сделать: просто используйте комбинацию клавиш Ctrl + Shift + I, чтобы открыть инструменты разработчика. Затем перейдите на вкладку “Сеть”, где можно будет ознакомиться со всеми HTTP-запросами, связанными с веб-страницей, следуя этим шагам:
Однако в сфере мобильной разработки этот процесс не столь прост. В отличие от интернет-среды, здесь отсутствует встроенный механизм, который позволял бы легко проверять HTTP-запросы через инструменты разработчика.
В связи с этим, мы рекомендуем погрузиться в увлекательный мир перехвата сетевых запросов с использованием прокси-серверов. Пожалуйста, ознакомьтесь с пошаговым процессом установки и настройки прокси-сервера, который будет служить посредником между вашим устройством и сетью.
Применение прокси-сервера дает возможность перехватывать, проверять и анализировать все входящие сетевые запросы. Это раскрывает широкие перспективы для отладки, повышения производительности и анализа безопасности приложений.
Для удобства изложения мы разделим данное руководство на пять шагов:
- Установка эмулятора Android
- Установка прокси-сервера
- Подготовка сертификата
- Развертывание сертификата
- Настройка прокси на эмуляторе Android
Рассмотрим подробно каждый шаг.
1. Установка эмулятора Android
- Для начала следует загрузить и установить программу Android Studio. Вы можете скачать ее, перейдя по ссылке на страницу загрузки Android Studio.
По завершении установки запустите Android Studio. В верхней части окна, на панели инструментов, найдите раздел Tools и выполните клик по нему. Затем в выпадающем меню выберите Device Manager (или в случае нового дизайна: Android -> Device Manager):
- После клика на Device Manager появится новая панель:
- Кликните Create Device (Создать устройство):
Теперь необходимо выбрать из списка устройство, на котором отсутствует логотип Play Store:
На следующем этапе, после выбора устройства без логотипа Play Store, вам потребуется выбрать уровень API, который соответствует требованиям для тестирования. Уровень API определяет версию платформы Android, на которой будет работать эмулятор:
По завершении настройки параметров AVD, вы готовы запускать устройство. Просто щелкните кнопку “Run”, чтобы запустить эмулятор и виртуальное устройство.
Существует также альтернативный способ запуска эмулятора с помощью командной строки. Откройте командную строку или терминал на вашем компьютере и выполните несколько команд.
Начните с команды emulator -list-avds, чтобы вывести список всех установленных эмуляторов на экран. Эта команда покажет вам названия доступных устройств. Выберите нужное устройство из списка.
Затем используйте команду emulator -avd deviceName, где deviceName заменяется реальным названием желаемого устройства. Эта команда запустит эмулятор с выбранным устройством.
Для правильной работы команд эмулятора важно убедиться, что все необходимые переменные среды установлены. Это позволит успешно идентифицировать и выполнить команды.
После этого можете скачать апк файл нужного вам приложения в браузере или же с пк перетащить в эмулятор.
2. Установка прокси-сервера
Прежде чем приступать к установке прокси, рекомендуется убедиться, что OpenSSL и Android Debug Bridge (ADB) настроены корректно. Вот шаги, которые необходимо выполнить:
- Убедитесь, что OpenSSL установлен в вашей системе, если этого еще не сделано. Вы можете найти инструкции по установке OpenSSL в документации для вашей операционной системы. После установки, проверьте правильность установки, выполните команду openssl version в командной строке или терминале. Если установка прошла успешно, будет отображена версия OpenSSL.
- Чтобы убедиться, что у вас есть доступ к ADB из командной строки или терминала, выполните следующую команду: adb version. Если в результате команда возвращает версию ADB, это означает, что ADB настроен правильно и доступен для использования. Если получаете версию ADB, значит настройки выполнены правильно. Если возникли какие-либо проблемы или вы не получаете версию ADB, убедитесь, что ADB установлен и настроен правильно.
После успешной настройки OpenSSL и подтверждения доступа к ADB можно приступать к установке прокси-сервера. В этом руководстве мы будем загружать и использовать mitmproxy. Вы можете использовать другое приложение, принципы одинаковые.
3. Подготовка сертификата
Для расшифровки запросов приложения mitmproxy генерирует собственный SSL-сертификат. Чтобы получить этот сертификат и настроить его для использования в ОС Android, выполните следующие действия.
- После установки и запуска mitmproxy сертификат находится в ~/.mitmproxy/mitmproxy-ca-cert.cer на Linux.
- Зайдите в каталог с сертификатом:
cd ~/.mitmproxy/ - Сгенерируйте хеш и копию сертификата: hashed_name=`openssl x509 -inform PEM -subject_hash_old -in mitmproxy-ca-cert.cer | head -1` && cp mitmproxy-ca-cert.cer $hashed_name.0
4. Развертывание сертификата
Файл .0, который был сгенерирован на предыдущем этапе, является сертификатом, который нужно добавить в эмулятор Android. Чтобы сделать это, начните с открытия терминала со списком доступных AVD:
emulator -list-avds
Запустите нужный из доступных AVD с помощью следующей команды:
emulator -avd <avd_name_here> -writable-system
Обратите внимание на использование флага -writable-system для запуска AVD с перезаписываемыми системными разрешениями, что позволяет вносить изменения. После этого нужно открыть другой терминал и выполнить следующую команду:
adb root
Эта команда перезапускает демон (системную службу) ADB с правами root. Затем запустите эту команду, чтобы отключить подтверждение безопасной загрузки на устройстве:
adb shell avbctl disable-verification
Теперь перезагрузите устройство с помощью команды:
adb reboot
Как только устройство перезагрузится, запустите следующую команду, чтобы снова перезапустить ADB как root:
adb root
Выполните перемонтирование разделов как read/write с помощью следующей команды:
adb remount
Если ADB предложит вам перезагрузить устройство, выполните следующие команды: adb reboot, затем adb root и adb remount. Это позволит вам отправить переименованный файл SSL-сертификата (файл с расширением .0, который был сгенерирован ранее) на устройство. Используйте следующую команду, заменив <path_to_certificate> на фактический путь к файлу сертификата:
adb push <path_to_certificate> /system/etc/security/cacerts
Эта команда копирует файл сертификата в соответствующий каталог на устройстве. Теперь нужно установить правильные разрешения для файла сертификата, выполнив следующую команду:
adb shell chmod 664 /system/etc/security/cacerts/<name_of_pushed_certificate>
Перезагрузите устройство в последний раз, используя следующую команду:
adb reboot
После перезагрузки устройства SSL-сертификат будет развернут, и вы успешно внедрили его в эмулятор Android. Теперь эмулятор будет распознавать и доверять данному сертификату, что позволит mitmproxy перехватывать и анализировать сетевой трафик на устройстве.
Чтобы проверить наличие сертификата на вашем устройстве Android, перейдите в раздел “Доверенные удостоверения” в настройках “Шифрование и удостоверения”. На вкладке “Система” вы должны найти сертификат с названием “mitmproxy”. Это позволит вам убедиться в том, что сертификат был успешно установлен и распознан устройством.
5. Настройка прокси-сервера на эмуляторе Android
Заключительный шаг предполагает настройку эмулятора Android для использования настроенного прокси-сервера mitmproxy.
В консоли введите команду, чтобы узнать свой ip адрес:
ip a
Скопируйте его после слова “inet”
Далее нужно зайти в эмулятор Android и кликнуть на иконку с многоточием, как показано на скриншоте:
Кликните на иконку с многоточием
Кликните на опцию `Settings`, указанную на боковой панели. После этого можете перейти на вкладку `Proxy`:
На вкладке Proxy установите флажок Manual proxy configuration. Затем вставьте IP-адрес, скопированный ранее в терминале и номер порта 8080, и нажмите кнопку Apply:
Теперь осталось запусть сайт mitm.it на эмуляторе. После этого вы можете видеть запросы в mitmproxy.
Вы успешно завершили все необходимые шаги по настройке для перехвата HTTP-запросов с вашего Android-устройства. Теперь вы можете использовать mitmproxy и запускать приложения на своем эмуляторе Android. В процессе использования приложений mitmproxy будет собирать и отображать все соответствующие данные и детали, связанные с сетевыми запросами, предоставляя вам ценную информацию и визуализацию взаимодействия между вашим устройством и сервером.