Найти тему

Перехват сетевых запросов из мобильного приложения

Оглавление
                                                      Перехват сетевых запросов
Перехват сетевых запросов

Иногда может потребоваться протестировать мобильное приложение и просмотреть все связанные с ним сетевые запросы. В Интернете эта задача довольно проста: нажмите Ctrl + Shift + I, чтобы открыть инструменты разработчика. Оттуда вы можете перейти на вкладку «Сеть» и просмотреть все HTTP-запросы, связанные с веб-страницей, следующим образом:

                                                     Сетевые запросы в браузере
Сетевые запросы в браузере

Однако с точки зрения мобильной разработки процесс не так прост. В отличие от Интернета, здесь нет встроенного механизма, позволяющего легко проверять HTTP-запросы, открывая инструменты разработчика.

В этой статье мы рассмотрим увлекательный мир перехвата сетевых запросов с помощью прокси-серверов. Мы проведем вас через пошаговый процесс настройки и настройки прокси-сервера, который будет выступать в качестве посредника между вашим устройством и сетью.

Используя возможности прокси-сервера, мы получаем возможность перехватывать, проверять и анализировать все входящие сетевые запросы. Это открывает целый мир возможностей для отладки, оптимизации производительности и анализа безопасности приложений.

Чтобы было проще следить, я разделил процесс на пять шагов. Это:

  1. Настройка эмулятора Android
  2. Настройка прокси-сервера
  3. Подготовка сертификата
  4. Развертывание сертификата
  5. Настройка прокси на эмуляторе Android

Давайте рассмотрим каждый шаг подробно.

1-Настройка эмулятора Android

  • Чтобы начать процесс, потребуется установить Android Studio. Скачать его можно по этой ссылке: Android Studio Download Page.
  • После успешной установки запустите студию Android. На панели инструментов в верхней части окна найдите и щелкните меню. После этого выберите из выпадающего меню: ToolsDevice Manager
                           Выберите «Диспетчер устройств» в раскрывающемся списке.
Выберите «Диспетчер устройств» в раскрывающемся списке.
  • После нажатия на , появится новая панель: Device Manager
                                           Панель «Диспетчер устройств»
Панель «Диспетчер устройств»
  • Нажмите Создать устройство:
                                             Нажатие кнопки «Создать устройство»
Нажатие кнопки «Создать устройство»
  • Далее нужно выбрать из списка устройство, на котором нет логотипа Play Маркета:
                                                       Выбор оборудования
Выбор оборудования
  • После выбора устройства без логотипа Play Store следующим шагом будет выбор уровня API, соответствующего вашим требованиям к тестированию. Уровень API представляет версию платформы Android, которую будет имитировать устройство или эмулятор:
                                                                        Уровень API
Уровень API
  • После перехода к следующему этапу у вас есть возможность настроить параметры AVD (виртуальное устройство Android), включая имя устройства, выделение оперативной памяти и емкость хранилища.
                                                                       Настройки AVD
Настройки AVD
  • После того, как вы закончили настройку параметров 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
                                                               Проверка версии OpenSSL
Проверка версии OpenSSL
  • Затем важно убедиться, что у вас есть доступ к мосту отладки Android (ADB) из терминала или командной строки. Используйте команду, чтобы проверить, доступен ли ADB и правильно ли он настроен. Если команда возвращает версию ADB, это означает, что она настроена правильно. adb version
                                                                    Версия ADB
Версия ADB

После того, как вы успешно настроили 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:

                                                  Выполнение команды в Git bash
Выполнение команды в Git bash

Команда выполнилась успешно, и в той же папке был сгенерирован файл с расширением: .0

                                                         Получение сертификата Android
Получение сертификата Android

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

                                          Физические устройства на Proxyman
Физические устройства на Proxyman

В поле , не забудьте скопировать IP-адрес и номер порта. Эти данные понадобятся для последующих этапов процесса: Android setup guide

                                       Скопируйте IP-адрес и номер порта
Скопируйте IP-адрес и номер порта

Далее нужно перейти в эмулятор Android и нажать значок многоточия, как показано на скриншоте:

                  Нажатие на многоточие
Нажатие на многоточие

Нажмите на опцию, расположенную на боковой панели. После того, как вы нажали на кнопку, вы можете перейти на вкладку: SettingsSettings,Proxy

                     Переход к настройкам
Переход к настройкам

Во вкладке прокси отметьте опцию. После этого вставляем IP-адрес и порт, которые мы скопировали из шага Proxyman, и нажимаем кнопку: Manual proxy configurationAndroid setup guideapply

                                     Настройка IP-адреса и номера порта
Настройка IP-адреса и номера порта

Поздравляю! 🎉 Мы успешно выполнили все необходимые действия по настройке для перехвата HTTP-запросов с нашего Android-устройства. Теперь мы можем запустить Proxyman и запускать приложения на вашем эмуляторе Android. По мере того, как мы используем приложения, Proxyman будет собирать и отображать все соответствующие сведения и данные, связанные с сетевыми запросами, предоставляя нам ценную информацию и видимость коммуникации приложения.

                                Перехват сетевых запросов с помощью Proxyman
Перехват сетевых запросов с помощью Proxyman

Спасибо, что прочитали. Надеюсь, этот пост будет вам полезен. Если у вас есть дополнительные вопросы, не стесняйтесь обращаться к нам. Всегда рад помочь.