Перехват пакетов мобильного приложения Charles и практика внедрения решения Trony для ситуаций, когда перехват пакетов невозможен
Перехват пакетов мобильного приложения Charles и практика внедрения решения Trony для ситуаций, когда перехват пакетов невозможен

Перехват пакетов мобильного приложения Charles и практика внедрения решения Trony для ситуаций, когда перехват пакетов невозможен

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

Чтобы решить эту проблему, я работал как тигр, поэтому придумал эту статью. В этой статье в основном описывается весь процесс для справки.

Поскольку я использую эмулятор, вы знаете, что все эмуляторы на рынке предназначены для Android, поэтому вы также знаете, что вы используете приложения Android, установленные в эмуляторе. Моя цель — напрямую управлять приложением в симуляторе через Python для выполнения соответствующих операций. Если вы использовали selenium или puppeteer для моделирования запросов или автоматических тестов, вы, вероятно, должны понимать, о чем я говорю.

  1. Во-первых, вам необходимо настроить локальную рабочую среду Android.,Принцип заключается в установке Android-приложения в эмуляторе.,Вам необходимо использовать инструменты операционной среды Android.adbконтролировать их

Потому что эмулятор эквивалентен виртуальной машине Android.,Если вы использовали докер,adbЭто эквивалентноdocker-composeинструмент,Может управлять контейнерами,Если вы использовалиk8s,ТакadbЭквивалентноkube-apiserver,Он может интерактивно управлять всеми контейнерами. Какое приложение необходимо установить в эмулятор?,Какие приложения есть в симуляторе?Activityсоставляют,Они являются основой для последующих операций моделирования в приложении. Вот обзор процесса установки:

  • Установите JDK. Поскольку я использую Mac, я компилирую его вручную или использую IntelliJ. IDEAКонфигурация редактораcompilerможно уточнить в любое время Версия Скачать。Разница в том, что в первом вы можете указать местоположение самостоятельно.,Что касается последнего, то вы можете не знать, куда его установить.。Затем в корневом каталоге.bash_profileили.zshrcЗаявление в。 export JAVA_HOME=~/Library/Java/JavaVirtualMachines/openjdk-17.0.2/Contents/Home
  • Установите Android-SDK,как яиспользоватьandroid-studioРедактор,После указания местоположения jdk,это будет напрямуюandriod-sdkвплоть до~/Library/Android/sdkв каталоге,Положение объявления такое же, как указано выше.
Язык кода:javascript
копировать
//Объявлено в `.bash_profile` или `.zshrc` в корневом каталоге.
экспорт ANDROID_HOME=~/Library/Android/sdk
экспортировать PATH=${PATH}:$ANDROID_HOME/tools:$ANDROID_HOME/platform-tools

Специальные советы: Если вы используетеbrewУстановитьandriod-sdk,Обязательно одновременно установите инструменты Android-платформы.,Но установка с помощью команды Brew,Этих двух вещей нет в корневом каталоге SDK.,Как указано во всех туториалах в Интернете, настроен только ANDRIOD_HOME.,Непоследовательно указывать инструменты и инструменты платформы, находящиеся под его юрисдикцией, в переменных среды, чтобы сделать их доступными.,так Я все еще строю то, что сказалиспользоватьandriod-studioспособ Установить。иитак Установитьизandriod-sdk,иметьэтовплоть до ПонятноCellarв каталоге,иметьэтовплоть до ПонятноCaskhomeв каталоге,В общем, очень запутанно.

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

Язык кода:javascript
копировать
brew install --cask andriod-sdk
brew install --cask android-platform-tools
brew list android-sdk //Просмотр конкретного каталога установки

финальный Если вы используете ЗаказadbВ окне командной строки введите,Есть командная строка для сипользовать,Это означает, что установка прошла успешно,Если ваш эмулятор уже запущен,доступныйadb devicesПроверятьиметькакие из них работаютизAndroid-сервисы

  1. Настроить инструмент перехвата пакетов

Если вы используете слишком много инструментов сканирования,Возможно, вы столкнулись с различными проблемами. Позвольте мне привести несколько примеров,Например, зарубежный сайт, который я захватил,Структура сайта на самом деле довольно проста.,Использовалdrupal,Но основное его содержание,Вам придется вручную опустить форму,Только после этого можно будет загрузить вторую половину контента.,Я использую что-то вроде этогоscrapyПросто положитесь наdomАнализ узловxpathили ВОЗreТрудно уловить весь контент при сопоставлении,В это время,Мы можем полагаться только на симуляцию действий человека.или ВОЗheadlessБраузер。И всотовый Имитация операции захвата телефонных пакетов больше не является необязательной, а стала обязательной опцией. То есть необходимо имитировать действия человека, чтобы сгенерировать тот самый сотовый. телефон Взаимодействие серверных сервисов,Только тогда вы сможете получить нужные данные,так,Какие изменения произошли в процессе взаимодействия,Какие данные генерируются, становится обязательным домашним заданием,Также отражен смысл захвата пакетов.

Инструменты захвата пакетов разделены на несколько категорий.,Как наш компьютерный терминал ИспользовалCharlesFiddlerЯвляется форвардным агентомизинструмент。Если у вас семиуровневая модель сетевых запросовиметь Понятноразвязатьизразговаривать,Вы знаете, что это происходит на «сеансовом уровне, уровне представления、Прикладной уровень(В пятиуровневой модели TCP/IP) эти три уровня вместе называются прикладным уровнем.”Прикладной уровень,Прокси-серверы прикладного уровня легко обойти,Если мы внимательно посмотрим на дно,Доступно больше данных,Например, переходя на транспортный уровень,Обычно имеется в виду наш андроидначальствоиспользоватьизTrony,iosначальствоиспользоватьмаленькая ракетаshadownsocketsНа самом деле они все действуютvpnЭто работает на этом уровне。Дальнейшее изучение, напримерwireshackСетевой картой теперь можно управлять.,Пока данные проходят через назначенную сетевую карту,будет захвачен。И нравитсяnginxтакизобратный проксиинструмент,На самом деле это сервисный уровень прокси.,Играет роль, подобнуюvpnиз Эффект。Только не сообщайте запрашивающей стороне, кто предоставляет услугу.,Он обрабатывает все запросы,Затем перенаправьте запрос конкретному приложению для обработки.,Если вы как клиент,Фактический резерв позжеиз Сервис для вас Эквивалентночерный ящик。И для клиентского проксиCharles、FiddlerМногие запросы не могут быть перехвачены,Вот причина,некоторые приложения,Для прокси он напрямую блокируется при совершении запросов.,Так что такое одиночество ты полностью понимаешь. Для этой ситуации,Мы должны найти способ,Может ли весь входной/выходной трафик таких приложений, как сотовый телефон, иметь единый интерфейс?,Затем вы можете контролировать этот порт,Все взаимодействия в приложении могут быть обнаружены,иметьбезиметьтакодининструмент Шерстяная ткань?милыйизTronyоно появилось,Это верно,Это такой инструмент. Чтобы подчеркнуть,Если само приложение не блокирует прокси клиента,那你就без必要начальствоTronyПонятно,Начинается конкретное развертывание.

Семиуровневая модель сети

  • Не блокировать клиентские прокси для приложений,Нет случая, когда запрос не может быть перехвачен,Установить КонфигурацияCharles,Различные обучающие программы в Интернете.,Вы можете понять это с первого взгляда
  • Блокировать клиентские прокси для приложений,Когда есть запросы, которые невозможно захватить,Установить КонфигурацияCharles+Trony,Позвольте мне подчеркнуть здесьTronyв симуляторе Установить После этого,Если бы ты был тамwifiоткрыть в Понятно Ручной прокси,Запрос пересылается на этот компьютер,Давайте поместим это здесьРучной проксизакрыть,Потому что теперь ты используешьTronyзанять свое местоиметьпоток,Местоиметь Все должно быть тамTronyСредние настройки。具体Конфигурация网начальствотакже можно найти,Я уточняю.
  1. Включить захват пакетов

Ключевым моментом здесь является то, что после второго шага настройки инструмента,Где отображается захваченный трафик?。Charlesиз Порт по умолчанию8888,ты используешьifconfigКоманда для проверкиen0серединаinetизipценить,Это ваш местный адрес,таксотовый телефонотвечать Использовалпоток都经过CharlesАгент завершает взаимодействие,ТыCharlesначальствоможно увидеть эти запросы,Это тоже захват пакетовизпринцип。иCharles+TronyПринцип тот же,В конечном итоге весь трафик проходит черезCharles,такбудет пойман,ты можешь видеть。Единственная разница в том,Trony帮你развязать决Понятноиметьнекоторыйсотовый телефон Приложение не позволяет использовать прокси,Или в других ситуациях, когда вам запрещено запрашивать,Он заставляет весь трафик проходить через него.,Он снова передает вам запросизCharles,Теперь вы можете увидеть трафик, который до сих пор был для вас невидим. Суммируя,финальный请求都是被抓到ПонятноCharlesв。

  1. Работа с приложениями в симуляторе

Мы сделали так много,Захват различных запросов приложения,Всегда есть конечная цель. Если ты тестировщик,В это время,Вы можете суммировать тестовые примеры,Например, на этот раз подготовканачальство线三个отвечатьиспользоватьActivity,Сколько интерфейсов имеет каждый интерфейс?,Правильный ли интерфейс первого экрана?,Данные верны? Это контент, который может быть протестирован людьми. Если вы автоматизатор,Вы можете писать сценарии,Структура возврата интерфейса, определенная в документе,Структура возврата захвата пакета Чарльза,Пройдитесь и распечатайте, чтобы увидеть, не является ли структура противоречивой или что-то в этом роде.,Что касается точности данных, возможно, вам придется провести некоторые расчеты или прочитать документацию по продукту. Потому что я планирую смоделировать операцию,Затем сделайте скриншот,так Мне нужноиметь Вы можете поддержать меня в автоматизацииизинструмент,этоAppium,У него также есть клиент,Преимущество установки клиента в том, что с его помощью можно распечатать процесс взаимодействия средства автоматизации и приложения в эмуляторе Android.,Это также упрощает отладку.

  • Существует клиентский интерфейс для прямого поиска по ключевым словам. Просто скачайте и установите его в соответствии с вашей собственной системой.
  • Бесинтерфейсный инструмент работы с клиентом,использоватьpip install Appium-Python-Client SeleniumЗаказ Установить,послеиспользоватьfrom appium import webdriver引入就可以耍戏安卓отвечатьиспользовать Понятно

Например, я открываю первый экран приложения:

Язык кода:javascript
копировать
from appium import webdriver

import time
desired_caps={}
# Эмулятор Android Номер версии

desired_caps = {
        "platformName": "Android",  # Операционная система
        "deviceName": "emulator-5554",  # оборудование ID
        "appPackage": "com.hehax.chat_create_shou",  # app имя пакета
        "appActivity": "com.junruy.wechat_creater.ui.activity.main.MainActivity",  # app Главное при запуске Activity
        'noReset': True,  # Стоит ли сохранять session информация, чтобы избежать повторного входа в систему
        'unicodeKeyboard': True,  # использовать unicodeKeyboard кодировка для отправки строки
        'resetKeyboard': True  # Скрыть клавиатуру
    }
driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)

Несколько команд, которые могут вам понадобиться:

  • Окно adb Shell dumpsys | grep mCurrentFocus может просматривать основную активность открытого в данный момент приложения
  • Пакет adb dumpsys com.hehax.chat_create_shou может просмотреть некоторые сведения о текущем приложении, включая разрешения, версии, пользователей и т. д.
  • Пакет списка adb Shell PM может проверить, какие приложения установлены на этом компьютере.
boy illustration
Неразрушающее увеличение изображений одним щелчком мыши, чтобы сделать их более четкими артефактами искусственного интеллекта, включая руководства по установке и использованию.
boy illustration
Копикодер: этот инструмент отлично работает с Cursor, Bolt и V0! Предоставьте более качественные подсказки для разработки интерфейса (создание навигационного веб-сайта с использованием искусственного интеллекта).
boy illustration
Новый бесплатный RooCline превосходит Cline v3.1? ! Быстрее, умнее и лучше вилка Cline! (Независимое программирование AI, порог 0)
boy illustration
Разработав более 10 проектов с помощью Cursor, я собрал 10 примеров и 60 подсказок.
boy illustration
Я потратил 72 часа на изучение курсорных агентов, и вот неоспоримые факты, которыми я должен поделиться!
boy illustration
Идеальная интеграция Cursor и DeepSeek API
boy illustration
DeepSeek V3 снижает затраты на обучение больших моделей
boy illustration
Артефакт, увеличивающий количество очков: на основе улучшения характеристик препятствия малым целям Yolov8 (SEAM, MultiSEAM).
boy illustration
DeepSeek V3 раскручивался уже три дня. Сегодня я попробовал самопровозглашенную модель «ChatGPT».
boy illustration
Open Devin — инженер-программист искусственного интеллекта с открытым исходным кодом, который меньше программирует и больше создает.
boy illustration
Эксклюзивное оригинальное улучшение YOLOv8: собственная разработка SPPF | SPPF сочетается с воспринимаемой большой сверткой ядра UniRepLK, а свертка с большим ядром + без расширения улучшает восприимчивое поле
boy illustration
Популярное и подробное объяснение DeepSeek-V3: от его появления до преимуществ и сравнения с GPT-4o.
boy illustration
9 основных словесных инструкций по доработке академических работ с помощью ChatGPT, эффективных и практичных, которые стоит собрать
boy illustration
Вызовите deepseek в vscode для реализации программирования с помощью искусственного интеллекта.
boy illustration
Познакомьтесь с принципами сверточных нейронных сетей (CNN) в одной статье (суперподробно)
boy illustration
50,3 тыс. звезд! Immich: автономное решение для резервного копирования фотографий и видео, которое экономит деньги и избавляет от беспокойства.
boy illustration
Cloud Native|Практика: установка Dashbaord для K8s, графика неплохая
boy illustration
Краткий обзор статьи — использование синтетических данных при обучении больших моделей и оптимизации производительности
boy illustration
MiniPerplx: новая поисковая система искусственного интеллекта с открытым исходным кодом, спонсируемая xAI и Vercel.
boy illustration
Конструкция сервиса Synology Drive сочетает проникновение в интрасеть и синхронизацию папок заметок Obsidian в облаке.
boy illustration
Центр конфигурации————Накос
boy illustration
Начинаем с нуля при разработке в облаке Copilot: начать разработку с минимальным использованием кода стало проще
boy illustration
[Серия Docker] Docker создает мультиплатформенные образы: практика архитектуры Arm64
boy illustration
Обновление новых возможностей coze | Я использовал coze для создания апплета помощника по исправлению домашних заданий по математике
boy illustration
Советы по развертыванию Nginx: практическое создание статических веб-сайтов на облачных серверах
boy illustration
Feiniu fnos использует Docker для развертывания личного блокнота Notepad
boy illustration
Сверточная нейронная сеть VGG реализует классификацию изображений Cifar10 — практический опыт Pytorch
boy illustration
Начало работы с EdgeonePages — новым недорогим решением для хостинга веб-сайтов
boy illustration
[Зона легкого облачного игрового сервера] Управление игровыми архивами
boy illustration
Развертывание SpringCloud-проекта на базе Docker и Docker-Compose