Русские Блоги
Руководство по настройке захвата пакетов мобильного телефона с помощью Fiddler, Charles и mitmproxy
При написании поискового робота некоторые данные на стороне ПК не могут предоставить нужные нам данные, например Douyin, поэтому нам необходимо ввести данные на мобильном телефоне. Line Grabbing, в настоящее время наиболее часто используемое программное обеспечение для захвата приложений: Fiddler, mitmproxy, Charles, это программное обеспечение должно выполнить соответствующую конфигурацию прокси-сервера перед захватом пакета данных: загрузите, убедитесь, что ПК-терминал и мобильный терминал находятся в одной локальной сети, Загрузка сертификата, настройка порта и т. Д.
Используйте метод настройки прокси-сервера Fiddler
Сначала загрузите Fiddler с официального сайта, адрес загрузки: http://www.telerik.com/fiddler; после загрузки локально выполните обычный процесс установки. Страница, открытая после установки, выглядит следующим образом:
Fiddler захватывает пакеты данных Android / Iphone, Первый шаг — убедиться, что компьютерный терминал, мобильный терминал Fiddler и компьютерный терминал находятся в одной и той же локальной сети. В этом случае Fiddler может захватывать данные мобильного терминала; Локальная сеть — это сеть, к которой подключено два или более устройств и которая имеет один и тот же сегмент IP-сети. Например, ПК и мобильный телефон подключены к одному и тому же Wi-Fi, или компьютер открывает точку доступа и подключение мобильного телефона.
Второй шаг — настроить Fiddler: откройте [Fiddler -> Tools -> options]; затем выберите опцию [Connections]. На рисунке установите порт сервера, который требуется мобильному телефону для подключения к Fiddler (обычно по умолчанию) Следующие параметры [[Разрешить удаленным компьютерам подключаться] (Разрешить удаленным компьютерам подключаться) для проверки.
Откройте [Fiddler -> Инструменты -> параметры]; выберите параметр HTTPS, установите флажок [Расшифровать трафик HTTPS] и выберите вариант [из всех процессов] ниже, чтобы захватывать запросы https на мобильном телефоне. Если вы хотите захватывать запросы https, вы Также необходимо авторизоваться на мобильном телефоне. Установите сертификат безопасности в конце.
Третий шаг — установить сертификат на мобильный телефон. Сначала найдите IP-адрес компьютера. Нажмите «Интернет» в строке меню над скриптом, чтобы увидеть IP-адрес компьютера; используйте мобильный телефон для доступа к адресу: http: // IP-адрес: порт прокси, нажмите «FiddlerRoot certificate» и затем установите сертификат, например:http://192.168.1.173:8888; на некоторых мобильных телефонах необходимо установить пароль экрана блокировки (например, Xiaomi) перед установкой сертификата, иначе установка не удастся.
Следующим шагом является изменение настроек прокси для Wi-Fi на мобильном телефоне; откройте Wi-Fi в соединении, нажмите переключатель прокси ниже, чтобы переключиться в ручной режим, введите ip на стороне компьютера как имя хоста и порт как порт, установленный Fiddler, а затем нажмите OK.
Результат успешной настройки выглядит следующим образом:
Использование метода настройки прокси Charles
Официальный адрес загрузки Charles: https://www.charlesproxy.com/; загрузите Charles, затем выполните установку в один клик, страница, которая открывается после загрузки, выглядит следующим образом: страница разделена на два типа тегов, один — это структура, которая различается по доменному имени; один — это последовательность, которая отсортирована по времени доступа:
Сначала настройте программное обеспечение Charles, откройте клиент, щелкните меню Прокси-> Параметры прокси, установите порт сервера, вы также можете изменить порт, проверьте следующее [Включить прозрачное HTTP-проксирование], чтобы позволить Чарльзу установить себя в качестве прокси Сервер реализует захват пакетов, и все запросы доступа, отправленные локальной системой, будут перехвачены. Если вы используете Charles только для захвата мобильного телефона, вам не нужно проверять проксирование Windows в меню, чтобы избежать вмешательства со стороны ПК для запроса данных.
Как и в Fiddle, вам необходимо настроить компьютер и мобильный телефон в одной локальной сети; после получения порта Charles вам также необходимо получить IP-адрес компьютера. Метод запроса IP-адреса компьютера: windows + R Введите cmd-карту чтобы открыть командную строку, а затем введите ipconfig, IPv4 — это IP-адрес этого компьютера.
Измените прокси и порт WiFi на мобильном телефоне:
У некоторых небольших партнеров может появиться сообщение «Wi-Fi подключен, но не может получить доступ к Интернету» на мобильном телефоне после успешной настройки. В это время вы можете сначала преобразовать прокси-сервер Wi-Fi в [Нет], а затем отключить и снова подключить Wi-Fi. Когда Wi-Fi можно использовать в обычном режиме, измените прокси-сервер Wi-Fi, измените основное имя и сохраните порт, тогда мобильный телефон сможет получить доступ к сети в обычном режиме.
Обратите внимание на друзей, которые используют win10. Лучше всего отключить брандмауэр перед настройкой. После успешной настройки страница Charles будет выглядеть, как показано ниже:
Чтобы избежать искажения или сбоя при захвате данных http на локальном или мобильном терминале, вам необходимо соответствующим образом настроить сертификат SSL.И компьютерный терминал, и мобильный терминал должны быть настроены соответствующим образом.
Установите сертификат на компьютер, откройте клиент Charles и выберите меню [«Справка» -> «SSL-прокси» -> «Установить корневой сертификат Charles»]
Следуйте инструкциям по установке;
Выбирая место хранения сертификата, просто выберите [Личное]. Вообще говоря, выбирается второй вариант.
Затем настройте SSL для получения доменного имени: Выберите [«Прокси» -> «Настройки проксирования SSL»], включите опцию [Включить проксирование SSL], выберите опцию добавления, конфигурация местоположения Чарльза поддерживает подстановочные знаки, поэтому установка «*» в Хосте может использоваться для представления всех доменные имена, порт писать не нужно.
Позже, если вы настроите указанное доменное имя, порт здесь может быть установлен на 443, чтобы вы могли захватывать данные указанного доменного имени;
Чтобы установить сертификат SSL на мобильный телефон, откройте клиент Charles и нажмите [«Справка» -> «Прокси SSL» -> «Установить корневой сертификат Charles на мобильное устройство или удаленный браузер»],
Появится следующая страница, что означает, что вы можете настроить прокси на своем мобильном телефоне: 192.168.2.173:1111, что означает, что мобильный терминал и ПК-терминал находятся в одной локальной сети, а затем использовать мобильный браузер. для доступа к chls.pro/ssl:
После успешной загрузки его необходимо установить локально на мобильный телефон. Вот как пример Redmi. При установке сертификата безопасности на мобильный телефон Xiaomi необходимо заранее установить пароль разблокировки, иначе установка не будет Работа.
После завершения установки вы можете использовать Charles для получения данных http на мобильном телефоне.
Соответствующая конфигурация перехвата принимающего пакета mitmproxy
Mitmproxy — это программа захвата пакетов, которая поддерживает HTTP и HTTPS. Она имеет функции, аналогичные Fiddler и Charles, за исключением того, что это консольная операция.
mitmproxy также имеет два связанных компонента. Один из них — mitmdump, интерфейс командной строки mitmproxy. С его помощью мы можем подключаться к скриптам Python и реализовывать пост-мониторинг в Python. Другой — mitmweb, веб-программа, открывающая веб-страницу мониторинга.Мы можем четко наблюдать запросы, захваченные mitmproxy. Вот демонстрация с окнами в качестве примера.
Существует два метода загрузки: один — это загрузка непосредственно с официального сайта по адресу https://docs.mitmproxy.org/, а второй — использование пакета установки python pip с помощью команды pip install mitmproxy; после загрузки После этого , найдите каталог загрузки mitmproxy и настройте каталог загрузки на переменные среды системы.Существует множество руководств по настройке переменных среды в Интернете, и вы можете изучить их самостоятельно; это удобно, мы можем использовать командная строка, чтобы проверить, успешно ли установлен mitmproxy; windows Команда mitmproxy не поддерживается, но не влияет на нее, потому что Windows поддерживает команды mitmdump и mitmweb.
Здесь вы можете напрямую получить порт mitmproxy как 8080. Второй шаг такой же, как у Charles. Убедитесь, что мобильный телефон и компьютер находятся в одной локальной сети. IP-адрес компьютера получается таким же образом. как у Чарльза. После успешной настройки mitmdump выглядит следующим образом:
Как и Чарльз, если вы хотите использовать mtmproxy для захвата HTTP-данных с локальных и мобильных терминалов, компьютер и мобильные терминалы также должны установить соответствующие сертификаты безопасности. Метод установки такой же, как описан в Чарльзе. Адрес для Получение сертификата хранится на адресе mitmproxy диска c: [диск C -> пользователь -> имя пользователя -> mitmproxy].
Источник
Перехват HTTPS-траффика между Android-устройством и внешним сервером
Иногда бывает любопытно подсмотреть, что пересылают туда-сюда разные Android-приложения по HTTP и HTTPS протоколам. Иногда даже при разработке собственного ПО удобно видеть весь трафик в реальном времени. Для реализации этих задач давно придумано много хороших программ, таких, к примеру, как Charles или Fiddler2. На самом деле их намного больше, вот только две вышеуказанные дают возможность нормально просматривать не только HTTP, но и HTTPS.
Трудности начинаются тогда, когда речь заходит о перехвате трафика между Андроид-устройством и внешним сервером. В случае незашифрованного (HTTP-протокол) трафика всё весьма тривиально (вот и инструкция есть) — разрешаем Fiddler2 внешние соединения, в Андроиде устанавливаем прокси сервером адрес нашей машины с Fiddler2 — и вуаля, всё работает. А вот на настройку перехвата HTTPS-трафика у меня ушло чуть больше времени.
Теория
Итак, в чём же сложность? В том, что при использовании протокола HTTPS клиент по-умолчанию проверяет, а действительно ли тот сервер, к которому он подключился, является нужным. Для этого используются сертификаты. И вот у настоящего сервера этот сертификат, понятное дело, тоже настоящий и соответствует открытому URL, а вот у нашего прокси — нет. Для решения этой проблемы в десктопных операционных системах в таких случаях есть возможность сгенирировать в Fiddler2 поддельный сертификат, импортировать его в доверенные — и теперь клиент всегда будет верить, что соединение с Fiddler2 вполне безопасно. К сожалению, с мобильным устройством такой легкий финт ушами не прошел.
Во-первых, возможности импортировать внешний сертификат в Андроиде версий младше 4.0 нет. Есть какие-то не внушающие доверия варианты с рутоваными девайсами — но это не наш путь.
Во-вторых, в Андроид даже версии 4.0 импортировать сертификат Fiddler2 не получается. Дело в том, что генерируемый по-умолчанию сертификат не соответствует каким-то там Андроидовским критериям безопасности и не устанавливается. Его нужно генерировать специальным образом.
В-третьих, совсем даже не факт, что все подряд программы сразу поверят поддельному сертификату. Есть нюансы.
Практика
- Берём устройство с Андроидом версии 4.0 или выше. Нет, девайс с 2.3 не подойдет. Да, эмулятор версии 4.0 подойдет.
- Устанавливаем на компьютер последнюю версию Fiddler2.
- Устанавливаем специальные библиотеки генерации Андроид-совместимого сертификата безопасности отсюда.
- Экспортируем из Fiddler2 сертификат безопасности («Tools->Fiddler Options->HTTPS->Export root certificate to Desktop»). Кладём на флешку, в корень (ну или на эмулятор, если вы используете его).
- На Андроиде добавляем сертификат безопасности в доверенные(«Settings > Security > Install from SD card»)
Запускаем Fiddler2, разрешаем в настройках внешние коннекты .
На Андроиде в настройках сети прописываем в качестве прокси адрес нашей десктопной машины с Fiddler2.
Итак, с браузером получилось. К сожалению, не все программы столь доверчивы, как браузер. К примеру, в моей собственной софтине, где я использую Apache HTTP Client, способ не прокатил — плевал апачевский клиент на доверенные сертификаты операционки. В этом случае мне пришлось отключить эту проверку вручную, таким вот образом:
где EasySSLProtocolSocketFactory взят отсюда и разрешает доверие к любым сертификатам.
Не безопасно, только для отладки!
После этого трафик моей программы стал также успешно отображаться в Fiddler2.
Источник