Иногда может потребоваться протестировать мобильное приложение и просмотреть все связанные с ним сетевые запросы. В Интернете эта задача довольно проста: нажмите Ctrl + Shift + I, чтобы открыть инструменты разработчика. Оттуда вы можете перейти на вкладку «Сеть» и просмотреть все HTTP-запросы, связанные с веб-страницей, следующим образом:
Однако с точки зрения мобильной разработки процесс не так прост. В отличие от Интернета, здесь нет встроенного механизма, позволяющего легко проверять HTTP-запросы, открывая инструменты разработчика.
В этой статье мы рассмотрим увлекательный мир перехвата сетевых запросов с помощью прокси-серверов. Мы проведем вас через пошаговый процесс настройки и настройки прокси-сервера, который будет выступать в качестве посредника между вашим устройством и сетью.
Используя возможности прокси-сервера, мы получаем возможность перехватывать, проверять и анализировать все входящие сетевые запросы. Это открывает целый мир возможностей для отладки, оптимизации производительности и анализа безопасности приложений.
Чтобы было проще следить, я разделил процесс на пять шагов. Это:
- Настройка эмулятора Android
- Настройка прокси-сервера
- Подготовка сертификата
- Развертывание сертификата
- Настройка прокси на эмуляторе Android
Давайте рассмотрим каждый шаг подробно.
1-Настройка эмулятора Android
- Чтобы начать процесс, потребуется установить Android Studio. Скачать его можно по этой ссылке: Android Studio Download Page.
- После успешной установки запустите студию Android. На панели инструментов в верхней части окна найдите и щелкните меню. После этого выберите из выпадающего меню: ToolsDevice Manager
- После нажатия на , появится новая панель: Device Manager
- Нажмите Создать устройство:
- Далее нужно выбрать из списка устройство, на котором нет логотипа Play Маркета:
- После выбора устройства без логотипа Play Store следующим шагом будет выбор уровня API, соответствующего вашим требованиям к тестированию. Уровень API представляет версию платформы Android, которую будет имитировать устройство или эмулятор:
- После перехода к следующему этапу у вас есть возможность настроить параметры AVD (виртуальное устройство Android), включая имя устройства, выделение оперативной памяти и емкость хранилища.
- После того, как вы закончили настройку параметров AVD, вы можете перейти к запуску устройства. Нажмите на кнопку «Выполнить», чтобы запустить эмулятор и запустить виртуальное устройство:
Если вы предпочитаете использовать командную строку для запуска эмулятора, есть альтернативный метод, которому вы можете следовать. Откройте командную строку или терминал на вашем компьютере, и вы можете использовать несколько команд для достижения этой цели.
Для начала используйте команду, чтобы отобразить список всех эмуляторов, установленных в вашей системе. Эта команда предоставит вам имена доступных устройств. В списке укажите имя устройства, которое вы хотите запустить.emulator -list-avds
После того, как вы определили устройство, которое хотите запустить, вы можете использовать команду. Замените в команде на фактическое имя нужного вам устройства. Эта команда запустит эмулятор с указанным устройством.emulator -avd deviceNamedeviceName
Важно убедиться, что вы настроили все необходимые переменные среды для правильной работы команд эмулятора. Это гарантирует, что команды будут распознаны и успешно выполнены.
После настройки эмулятора Android у вас есть возможность загрузить и установить APK-файл желаемого приложения с APKMirror. APKMirror – это авторитетный веб-сайт, на котором вы можете найти широкий выбор APK-файлов для различных приложений Android. После того, как APK-файл будет загружен, вы можете приступить к его установке на эмулятор Android. Вы можете либо перетащить загруженный APK-файл в окно эмулятора, либо использовать механизм передачи файлов эмулятора для импорта APK-файла.
Настройка 2-х прокси
Прежде чем приступить к установке прокси-сервера, необходимо убедиться, что OpenSSL и Android Debug Bridge (ADB) настроены правильно. Вот шаги, которые вы должны выполнить:
- Начните с установки OpenSSL в свою систему, если вы еще этого не сделали. Обратитесь к документации, относящейся к вашей операционной системе, чтобы узнать о процессе установки. После установки вы можете проверить установку, выполнив команду в терминале или командной строке. При этом отобразится версия OpenSSL, если она установлена правильно. openssl version
- Затем важно убедиться, что у вас есть доступ к мосту отладки Android (ADB) из терминала или командной строки. Используйте команду, чтобы проверить, доступен ли ADB и правильно ли он настроен. Если команда возвращает версию ADB, это означает, что она настроена правильно. adb version
После того, как вы успешно настроили OpenSSL и подтвердили доступ к ADB, можно приступать к установке прокси. В этом уроке мы загрузим и будем использовать Proxyman в качестве примера инструмента. Тем не менее, вы можете применить те же принципы к другим подобным инструментам, таким как Charles Proxy или mitmProxy.
3-Подготовка сертификата
Для расшифровки запросов приложения Proxyman генерирует пользовательский SSL-сертификат. Чтобы получить этот сертификат и настроить его для использования с ОС Android, выполните следующие действия:
- Откройте веб-браузер и перейдите по следующей ссылке. По этой ссылке вы сможете скачать SSL-сертификат Proxyman. После загрузки сертификата найдите папку, в которой он был сохранен:
- Чтобы убедиться, что файл сертификата имеет правильный формат, ожидаемый ОС Android, необходимо переименовать его. Откройте командную строку и перейдите в папку, в которой находится сертификат. После этого выполните следующую команду:
hashed_name='openssl x509 -inform PEM -subject_hash_old -in proxyman-ca.pem | head -1' && cp proxyman-ca.pem $hashed_name. 0Эта команда использует OpenSSL для создания хэшированного имени сертификата, а затем переименовывает файл соответствующим образом. Выполнив эти шаги, вы получите пользовательский SSL-сертификат от Proxyman и переименуете его в формат, ожидаемый ОС Android. Этот сертификат необходим для расшифровки запросов приложений и позволяет Proxyman перехватывать и анализировать сетевой трафик.
Эта команда не будет работать в оболочке Windows Power, поэтому я запустил эту команду на терминале Git Bash:
Команда выполнилась успешно, и в той же папке был сгенерирован файл с расширением: .0
4-Развертывание сертификата
Этот файл, который мы сгенерировали на предыдущем шаге, является сертификатом, который мы собираемся добавить в наш эмулятор Android. Для этого мы начнем с открытия терминала и перечислим доступные AVD: .0
emulator -list-avds
Из доступных AVD мы запустим нужный AVD с помощью следующей команды:
emulator -avd <avd_name_here> -writable-system
Обратите внимание, что мы используем флаг для запуска AVD с системными разрешениями, доступными для записи, что позволяет вносить изменения. После этого нам нужно открыть другой терминал и выполнить следующую команду: -writable-system
adb root
Эта команда перезапускает демон ADB с привилегиями root. После этого запускаем эту команду, чтобы отключить проверку безопасной загрузки на устройстве:
adb shell avbctl disable-verification
Далее перезагружаем устройство командой:
adb reboot
После перезагрузки устройства выполните следующую команду, чтобы снова перезапустить ADB от имени root:
adb root
Выполните повторное монтирование разделов как чтение-запись, выполнив следующую команду:
adb remount
Если ADB предложит перезагрузить устройство, запустите его еще раз, а затем и . Теперь мы готовы отправить переименованный файл SSL-сертификата, файл, который мы сгенерировали ранее, на устройство с помощью следующей команды, заменив фактическим путем к файлу сертификата: adb rebootadb rootadb remount.0<path_to_certificate>
adb push <path_to_certificate> /system/etc/security/cacerts
Эта команда копирует файл сертификата в соответствующий каталог на устройстве. Теперь мы установим правильные права доступа к файлу сертификата, выполнив следующую команду:
Оболочка ADB chmod 664 /system/etc/security/cacerts/<name_of_pushed_certificate>
Теперь нам нужно перезагрузить устройство в последний раз, используя следующую команду:
adb reboot
Устройство перезагрузится, и SSL-сертификат будет развернут. Мы успешно внедрили SSL-сертификат в ваш эмулятор Android. Это позволит эмулятору распознавать сертификат и доверять ему, что позволит Proxyman перехватывать и анализировать сетевой трафик с устройства.
Теперь, чтобы проверить сертификат на вашем устройстве Android, вы можете перейти в раздел в настройках вашего устройства Android, вы можете найти сертификат, указанный на вкладке. Это подтверждает, что сертификат был успешно установлен и распознан вашим устройством Android: Trusted CredentialsEncryption & CredentialsProxyman LLCSystem
5-Настройка прокси на эмуляторе Android
Последний шаг включает в себя настройку нашего эмулятора Android для использования прокси-сервера, который мы настроили. Для этого запустите Proxyman на своем компьютере. В Proxyman перейдите в меню. Выберите из выпадающего списка. Выберите в подменю. Обратите внимание, что вам не нужно беспокоиться о термине, так как мы не будем следовать этому конкретному руководству. Нам понадобится только несколько важных деталей из этого меню: CertificateInstall Certificate on AndroidPhysical DevicesPhysical Devices
В поле , не забудьте скопировать IP-адрес и номер порта. Эти данные понадобятся для последующих этапов процесса: Android setup guide
Далее нужно перейти в эмулятор Android и нажать значок многоточия, как показано на скриншоте:
Нажмите на опцию, расположенную на боковой панели. После того, как вы нажали на кнопку, вы можете перейти на вкладку: SettingsSettings,Proxy
Во вкладке прокси отметьте опцию. После этого вставляем IP-адрес и порт, которые мы скопировали из шага Proxyman, и нажимаем кнопку: Manual proxy configurationAndroid setup guideapply
Поздравляю! 🎉 Мы успешно выполнили все необходимые действия по настройке для перехвата HTTP-запросов с нашего Android-устройства. Теперь мы можем запустить Proxyman и запускать приложения на вашем эмуляторе Android. По мере того, как мы используем приложения, Proxyman будет собирать и отображать все соответствующие сведения и данные, связанные с сетевыми запросами, предоставляя нам ценную информацию и видимость коммуникации приложения.
Спасибо, что прочитали. Надеюсь, этот пост будет вам полезен. Если у вас есть дополнительные вопросы, не стесняйтесь обращаться к нам. Всегда рад помочь.