перейти к содержанию

Полное руководство по извлечению данных из API мобильных приложений

В нашем современном мире, где мобильные устройства ориентированы на мобильные устройства, популярность мобильных приложений стремительно растет, заменяя традиционные веб-сайты для многих сервисов. Сейчас в крупных магазинах приложений доступно более 5 миллионов приложений. Среднестатистический пользователь смартфона имеет более 80 установленных приложений. А на мобильные приложения приходится 90% времени, проводимого онлайн в приложениях, по сравнению с мобильным Интернетом.

Что это значит? Мобильные приложения становятся одним из самых ценных и обильных источников данных в нашем все более цифровом мире. Данные о местоположении, статистика использования, профили, транзакции и многое другое можно извлечь из трафика мобильного приложения.

Это открывает огромные возможности для бизнеса, исследователей и разработчиков. Но для сбора этих данных требуется перехват связи между приложениями и их серверными API. Это связано с тем, что мобильные приложения используют зашифрованные соединения HTTPS для безопасной передачи данных.

Простое прослушивание сетевого трафика не раскроет его содержимое. Вам нужен способ расшифровки трафика.

Введите прокси-серверы типа «человек посередине» (MITM).

Из этого подробного руководства объемом 4,000 слов вы узнаете:

  • Что такое MITM-прокси и как он работает
  • Пошаговая инструкция по настройке собственного MITM-прокси для анализа трафика мобильных приложений.
  • Как использовать прокси-сервер для наблюдения и обратного проектирования API мобильного приложения
  • Инструменты и методы для извлечения ценных данных из API мобильных приложений
  • Лучшие практики MITM-прокси для ответственного сбора данных

Если вам нужен практический опыт извлечения данных из таких приложений, как Tinder, Airbnb, Yelp и других, вы попали по адресу. Давайте начнем!

Что такое прокси-сервер «Человек посередине» (MITM)?

Чтобы понять, как прокси-серверы MITM позволяют очищать данные мобильных приложений, сначала необходимо понять, что делает шифрование HTTPS.

HTTPS использует сертификаты SSL/TLS для шифрования связи между клиентом (например, мобильным приложением) и сервером (например, серверной частью API). Это предотвращает просмотр или изменение трафика кем-либо, кто шпионит в сети.

Но что, если бы вы могли перехватить этот трафик, расположившись посередине — между клиентом и сервером назначения?

Это именно то, что делает прокси-сервер MITM. Прокси выступает в роли посредника, через который проходит весь трафик:

Клиент <—-> MITM-прокси <—-> Целевой сервер

Прокси устанавливает отдельные SSL-соединения с клиентом и сервером для расшифровки их трафика. Затем он может проверять, анализировать и даже изменять запросы открытого текста перед повторным шифрованием и отправкой их.

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

Некоторые популярные прокси MITM включают в себя:

доверенное лицоПлатформаЗаметки
митмпроксиМак, Виндовс, ЛинуксМощный консольный инструмент
Чарльз ПроксиМак, Виндовс, ЛинуксГрафический интерфейс, поддержка конфигурации устройства
СкрипачWindowsМожет отлаживать трафик из приложений Windows.

В этом руководстве мы продемонстрируем использование митмпрокси поскольку он бесплатный, с открытым исходным кодом и быстро устанавливается.

Теперь давайте посмотрим, как настроить мобильное устройство для маршрутизации трафика через прокси-сервер MITM.

Шаг 1. Установите mitmproxy на свой компьютер

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

Установить на macOS

Если вы используете Mac, самый простой способ установить mitmproxy — через Homebrew:

$ brew install mitmproxy

Установить в Linux

В Linux используйте менеджер пакетов вашего дистрибутива, например:

$ sudo apt install mitmproxy # Debian/Ubuntu
$ sudo dnf install mitmproxy # Fedora

Установить в Windows

Пользователи Windows могут загрузить официальную бинарную версию с сайта mitmproxy.org. Обязательно выберите последнюю версию mitmproxy, а не утилиту mitmdump.

Запустить прокси

После установки запустите mitmproxy на порту по умолчанию 8080:

$ mitmproxy

Вы должны увидеть перехваченные запросы, появившиеся в консоли mitmproxy:

консоль mitmproxy

Оставьте это работающим в фоновом режиме, пока вы настраиваете свое мобильное устройство для использования прокси.

Шаг 2. Настройте мобильное устройство для маршрутизации через mitmproxy

Теперь нам нужно настроить мобильное устройство на маршрутизацию трафика через прокси-сервер mitmproxy для перехвата.

Вот шаги для распространенных мобильных операционных систем:

На iPhone/iOS

  1. Подключите свой iPhone к той же сети Wi-Fi, что и компьютер, на котором работает mitmproxy.

  2. Перейдите в «Настройки» > «Wi-Fi» и выберите текущую сеть.

  3. Прокрутите вниз и нажмите Настроить прокси.

  4. Выберите Вручную чтобы установить свои собственные данные прокси:

    • Сервер: IP-адрес вашего компьютера в сети (например, 192.168.1.10).

    • Порт: 8080

Это маршрутизирует весь трафик устройства через ваш компьютер и mitmproxy!

На Android

  1. Подключите свое Android-устройство к той же сети Wi-Fi, что и прокси.

  2. Перейдите в «Настройки» > «Wi-Fi» > «Дополнительные параметры» > «Прокси» и выберите Вручную.

  3. Введите IP-адрес вашего компьютера в поле «Имя хоста» и 8080 в качестве порта.

  4. Нажмите «Сохранить», чтобы применить конфигурацию прокси-сервера.

На Windows Phone

  1. На рабочем столе проведите пальцем влево к списку приложений и нажмите Настройки.

  2. Нажмите Wi-Fi и нажмите и удерживайте подключенную сеть. Выбирать Редактировать.

  3. Нажмите Показать дополнительные опции тогда Установить прокси в Руководство.

  4. Введите IP-адрес вашего компьютера и порт 8080.

  5. Нажмите Сохранить подключиться через прокси.

Вот и все! Теперь ваше мобильное устройство должно маршрутизировать весь трафик через mitmproxy для перехвата.

Шаг 3. Установите сертификат mitmproxy на мобильное устройство.

На этом этапе вы увидите трафик в консоли mitmproxy с вашего мобильного устройства. Однако большинство приложений используют HTTPS, поэтому вы не сможете просмотреть контент.

Чтобы расшифровать HTTPS-трафик, вам необходимо установить сертификат mitmproxy в качестве доверенного корневого центра сертификации на вашем мобильном устройстве.

Mitmproxy предоставляет удобный сайт по адресу http://mitm.it это сгенерирует сертификат для вашей конкретной платформы устройства.

Просто перейдите к http://mitm.it в браузере вашего мобильного устройства и нажмите ссылку для вашей ОС:

сайт mitm.it

Затем установите загруженный сертификат на свое устройство:

На iOS

  1. Перейдите в «Настройки» > «Основные» > «О программе» > «Настройки доверия сертификатам».

  2. Включите митмпрокси сертификат

На Android

  1. Сохранить mitmproxy-ca-cert.pem файл где-нибудь в памяти устройства

  2. Перейдите в «Настройки» > «Безопасность» > «Установить из хранилища».

  3. Выберите mitmproxy-ca-cert.pem файл

На Windows Phone

  1. Перейдите в Система > Шифрование > Импортировать сертификат.

  2. Выберите скачанный mitmproxy-ca-cert.crt

Возможно, вам придется установить сертификат mitmproxy как доверенный для VPN или приложений. Теперь mitmproxy может перехватывать даже HTTPS-зашифрованный трафик с устройства.

Включайте сертификат только тогда, когда вам нужно отладить трафик, и отключайте его, когда закончите! Не раскрывайте данные других приложений без необходимости.

Ладно, настало время самого интересного… давайте посмотрим, как наблюдать за трафиком, реконструировать и очищать API мобильных приложений!

Шаг 4. Наблюдение и изменение API мобильного приложения

Откройте мобильное приложение, которое хотите изучить, на устройстве, настроенном на использование прокси. Например, я буду использовать приложение для доставки еды Swiggy.

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

Отфильтруйте представление по домену API, который вы хотите проанализировать. Для Свигги это prod-api.swiggy.com:

Трафик Swiggy API в mitmproxy

При взаимодействии с мобильным приложением ищите закономерности в запросах API. Вы можете развернуть запрос, чтобы просмотреть полную информацию:

Расширенный запрос API

Тестирование различных потоков приложений показывает, какие конечные точки существуют во внутреннем API и какие данные они возвращают. Для парсинга нас интересуют ПОЛУЧИТЬ запросы, возвращающие данные JSON.

Основываясь на наблюдении за трафиком от Swiggy, мы можем увидеть:

  • /restaurants/list/v5 возвращает список ресторанов для определенного местоположения
  • /menu/v4 получает меню для конкретного ресторана
  • /geocode/v1 преобразует адреса в координаты широты и долготы

И так далее. Это позволяет нам понимать и отображать конечные точки API.

Теперь мы можем реплицировать запросы API для извлечения данных. Например, вызов /restaurants/list/v5 с lat и lng параметры возвращают список ресторанов в формате JSON:

import requests

api_url = ‘https://prod-api.swiggy.com/restaurants/list/v5‘

params = {
  ‘lat‘: 12.972442, 
  ‘lng‘: 77.580643 
}

response = requests.get(api_url, params=params)
data = response.json() 

for restaurant in data:
  print(restaurant[‘name‘], restaurant[‘area‘])

При этом распечатываются названия и районы ресторанов Swiggy рядом с заданным местом. Прокси позволяет нам увидеть, как работает приложение, и выполнить реверс-инжиниринг API для парсинга.

Стратегии парсинга API мобильных приложений

После того как вы проверили трафик API приложения, чтобы понять конечные точки и параметры, вы можете начать сбор данных программным способом.

Вот несколько примеров:

  • Используйте прокси – Меняйте разные резидентные IP-адреса, чтобы избежать блокировки из-за ограничения скорости.

  • Рандомизировать входные данные – Меняйте геокоординаты, идентификаторы пользователей и т. д., чтобы выглядеть более человечно.

  • Запросы дроссельной заслонки – Добавьте задержки между запросами, чтобы ограничить громкость.

  • Данные кеша – Сохраняйте ответы, чтобы избежать дублирования запросов.

  • Обработка ошибок – Повторяйте неудачные запросы и корректно обрабатывайте ошибки HTTP.

  • Разбивка данных на страницы – Следуйте ссылкам на страницы в ответах, чтобы извлечь все данные.

  • Используйте POST при необходимости – Некоторые действия, такие как размещение заказа, требуют POST-запросов.

  • Разбираем быстро – Извлекайте только те данные, которые вам нужны, вместо того, чтобы анализировать все.

  • Очистить метаданные – Удалите уникальные идентификаторы, временные метки и т. д., которые могут идентифицировать записи.

  • Будьте в курсе – Проверьте изменения API после обновлений приложения.

Проявив немного творчества, вы можете создавать парсеры для извлечения всех видов ценных данных из API мобильных приложений. Просто внимательно соблюдайте Условия обслуживания и используйте данные ответственно!

Ответственный парсинг мобильных API

Как и любая форма веб-скрапинга, сбор данных с помощью мобильных API требует некоторых этических соображений:

  • Не перегружайте серверы – Ограничьте объем запросов, чтобы минимизировать влияние.

  • Ограничить использование – Собирайте только те данные, потребность в которых оправдана.

  • Соблюдайте Условия обслуживания – Избегайте нарушения условий обслуживания или соглашений о неразглашении.

  • Защитите данные – Надежно храните данные и минимизируйте сроки хранения.

  • Деидентификация данных – Удалите личную информацию, не необходимую для ваших целей.

  • Проверьте законы – В некоторых местах регулируются виды сбора данных.

  • Используйте мудро – Данные должны приносить пользу, а не просто собираться, потому что вы можете это сделать.

Прозрачность и этика имеют решающее значение. С отличными данными приходит и большая ответственность!

Заключение

Я надеюсь, что это руководство предоставило вам всестороннее представление о перехвате данных мобильных приложений с помощью прокси-серверов «человек посередине». Ключевые выводы:

  • Прокси-серверы MITM позволяют перехватывать HTTPS-трафик мобильных приложений путем установки прокси-сертификата.

  • Такие инструменты, как mitmproxy, позволяют легко проверить этот трафик и понять, как приложение взаимодействует с серверными API.

  • Реверс-инжиниринг конечных точек API позволяет реплицировать запросы для очистки данных мобильных приложений.

  • Прокси, регулирование и другие методы можно использовать для эффективного сбора данных мобильных приложений в любом масштабе.

  • Убедитесь, что вы очищаете мобильные API этично и законно.

Мобильные приложения предоставляют огромное количество данных, которые только и ждут, чтобы их использовали. Теперь, когда вы знаете, как использовать прокси-серверы MITM для доступа к нему, возможности безграничны!

Из каких крутых приложений вы начнете собирать данные? Дайте мне знать, если у вас есть еще вопросы по парсингу мобильных прокси!

Присоединяйтесь к беседе

Ваш электронный адрес не будет опубликован. Обязательные поля помечены * *