Подробное объяснение наиболее полного инструмента захвата пакетов Charles «рекомендуемый сбор».
Подробное объяснение наиболее полного инструмента захвата пакетов Charles «рекомендуемый сбор».

Всем привет, мы снова встретились, я ваш друг Цюаньчжаньцзюнь.

0. Предисловие

Являетесь ли вы мобильным разработчиком или тестировщиком, Ю Захват пакетовинструментЭто очень помогает в нашей работе,И Чарльз — очень хороший инструмент для захвата пакетов.

Чарльз может не только помочь нам захватить данные, возвращаемые сервером, но также изменить параметры запроса и тело ответа.

По сути, Чарльз может помочь нам изменить все, что может изменить HTTP.

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

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

Установлено на этой машине Charles версия Windows под платформой Charles 4.0.2

Основное содержание этой статьи:

  • Захват пакетов Чарльза HTTP
  • Захват пакетов Чарльза HTTPS
  • HTTPS Захват пакета в системах Android 7.0 и выше
  • Используйте Charles для имитации низкой скорости сети.
  • Функция точки останова
  • Составление запроса на изменение функции
  • Перезаписать функцию перезаписи
  • Функция отображения карты
  • Функция повторной попытки
  • Настоящий бой Мобильная версия Захват пакетов(Charles + Drony)

1. Чарльз перехватывает HTTP-пакеты

первым прибыть Charles Перейдите на официальный сайт, чтобы загрузить программное обеспечение. Установка очень проста, просто переходите к следующему шагу.

1.1 Первоначальная настройка

Настройки Чарльза

включать start recording кнопку, как показано ниже:

Проверять Charles Номер порта, который прослушивает прокси, Proxy -> Proxy Settings , Тот, что на моей машине 8888 порт, Как показано ниже:

1.2 Настройки мобильного телефона

Взяв в качестве примера телефон Android, введите WIFI, к которому мы подключились, и настройте WIFI:

После настройки Чарльз Появится окно с вопросом, разрешить ли подключение мобильного телефона, примите Вот и все,Как показано ниже:

Если вы случайно нажмете Отрицать,также Можно найти где: Proxy -> Access Control Settings Добавьте свойМобильный IP

С указанными выше настройками Чарльз может перехватывать HTTP-запросы.

2. Захват пакетов Чарльза HTTPS

После вышеуказанных настроек мы можем перехватить сетевой запрос мобильного телефона, но если запрос HTTPS, захваченный пакет не может быть обработан, и на компьютер и мобильный телефон необходимо установить сертификат. (Help -> SSL Proxying)

Установить сертификат на свой компьютер очень просто, достаточно сделать следующий шаг без каких-либо настроек. Здесь мы говорим об установке сертификата на мобильный телефон, поскольку при установке сертификата на мобильный телефон могут возникнуть проблемы:

Нажмите на изображение выше Install Charles Root Certificate on a Mobile Device or Remote Browser , Он выдаст нам подсказки по установке:

Приведенное выше окно подсказки означает, что после настройки прокси на мобильном телефоне получите доступ к нему в мобильном браузере. chls.pro/ssl Скачать сертификат

Здесь необходимо отметить, что,Некоторые мобильные телефоны могут предлагать:Сертификат не может быть установлен, поскольку файл сертификата не может быть прочитан.

Решение:Не используйте системную загрузку Браузер,Загрузите UC или Edge Браузер с помощью стороннего браузера.

После завершения загрузки,Имя файла сертификата может быть:charles-proxy-ssl-proxying-certificate.pem

После завершения загрузки сертификата установите сертификат на мобильный телефон. Процесс следующий (в качестве примера взят мобильный телефон Xiaomi):

Откройте телефон настраивать -> Болеенастраивать -> Безопасность системы -> Установить с SD-карты , Затем введите имя собственного сертификата:

Нажмите кнопку «ОК». Некоторые мобильные телефоны могут потребовать ввода учетных данных. Просто введите пароль своего мобильного телефона.

После того, как сертификаты будут установлены на компьютер и мобильный телефон, идите к Чарльзу. SSL Proxy (Proxy -> SSL Proxying Settings )

Выполнив описанные выше шаги, вы можете перехватывать HTTPS-запросы.

3. Захват пакетов HTTPS в системах Android 7.0 и выше.

В системах Android 7.0 и более поздних версий захват пакетов HTTPS может завершиться неудачей. По соображениям безопасности в Android 7.0 и более поздних версиях система по умолчанию доверяет только сертификатам системного уровня. Сертификат, добавленный пользователем (Пользователь), больше не является доверенным, то есть корневой сертификат Charles, который мы установили на устройство выше, больше не является доверенным для системы.

По соображениям безопасности мы обычно только Debug Версия позволяет перехват пакетов, но официальная версия не должна позволять перехват пакетов. Может AndroidManifest.xml Настройте политику безопасности в файле:

Язык кода:javascript
копировать
<application android:networkSecurityConfig="@xml/network_security_config" >
</application>

network_security_config.xml

Язык кода:javascript
копировать
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <debug-overrides>
        <trust-anchors>
            <!-- Trust user added CAs while debuggable only -->
            <certificates src="system" />
            <certificates src="user" />
        </trust-anchors>
    </debug-overrides>
    <base-config cleartextTrafficPermitted="true">
        <trust-anchors>
            <certificates src="system" />
        </trust-anchors>
    </base-config>
    <domain-config cleartextTrafficPermitted="true">
        <domain includeSubdomains="true">182.254.116.117</domain>
        <domain includeSubdomains="true">pingma.qq.com</domain>
    </domain-config>
</network-security-config>

Затем создайте новую папку xml в каталоге res, а затем создайте новую папку xml. network_security_config.xml

Язык кода:javascript
копировать
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <debug-overrides>
        <trust-anchors>
            <certificates src="system" />
			<!-- В отладочной версии доверяйте сертификату, добавленному пользователем. -->
            <certificates src="user" />
        </trust-anchors>
    </debug-overrides>
    <base-config cleartextTrafficPermitted="true">
        <trust-anchors>
            <certificates src="system" />
        </trust-anchors>
    </base-config>
</network-security-config>

Для получения дополнительной информации о настройке политики безопасности обратитесь к официальной документации:

https://developer.android.com/training/articles/security-config.html

4. Используйте Charles для имитации низкой скорости сети.

Можно найти в Proxy -> Throttle Settings настройки Скорость сети, также можно настроить пропускную способность (Bandwidth):

5. Точки останова. Функция точки останова.

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

Помимо ручного добавления URL-адреса, для которого требуются точки останова, указанные выше, если этот URL-адрес уже был запрошен, вы можете щелкнуть запрос правой кнопкой мыши и выбрать «Точки останова».

С помощью функции точки останова можно изменить параметры запроса и возвращаемое значение ответа. Следует отметить, что после изменения параметров запроса необходимо нажать кнопку «Выполнить». Только после успешного выполнения запроса можно изменить возвращаемое значение «Ответ».

6. Составьте запрос на изменение функции.

Вы также можете изменить запрошенный URL-адрес, метод, заголовок, параметр и т. д. через Charles.

Метод модификации:Щелкните запрос правой кнопкой мыши и выберите compose кнопка

7. Функция перезаписи перезаписи

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

  • Изменить заголовок запроса (Добавить/Изменить/Удалить заголовок)
  • Изменить хост/путь/URL-адрес
  • Изменить параметры запроса (Добавить/Изменить/Удалить параметр запроса)
  • Изменить статус ответа (статус ответа)
  • Изменить тело

Rewriteнастраиватьпуть: Tools -> Rewrite

Rewrite, как следует из названия, представляет собой замену, поэтому он основан на замене фиксированного значения определенным значением. При добавлении правил он поддерживает регулярные выражения:

8. Функция отображения карты

Сопоставление карт имеет два типа: один Map Remote,Другой Map Local

настраиватьпуть:Tools -> Map Local/Remote

Map Remote Как следует из названия, он сопоставляет соответствующие запросы с другим удаленным URL-адресом:

Map Local заключается в сопоставлении соответствующих запросов с локальными файлами:

9. Функция повторной попытки

Repeat Есть две функции: одна — просто повторить попытку (Повторить); Repeat advances Количество повторных попыток, которые можно сделать, и количество параллелизма.

Повторная попытка в основном используется для совместной отладки с сервером. Если возникла проблема с интерфейсом, разработчику сервера может потребоваться устранить проблему, прервав фоновый код.

В это время,Нам не нужно повторять последний запрос в приложении (может быть больше полей для заполнения и ссылка на интерфейс длиннее),Просто щелкните правой кнопкой мыши по запросу в Charles,Затем Repeat Вот и все

Repeat advances Вы можете выполнять нагрузочное тестирование на сервере, отправлять данные для записи в пакетном режиме и т. д., например:

10. Практичный мобильный захват сумок на Tmall

Благодаря приведенному выше введению мы можем захватывать пакеты HTTPS Запросили, но открываем телефонTmall заходит на домашнюю страницу и находит Charles Для изображения не указан URL-адрес запроса. Объясните, пожалуйста. Charles Ни одного запроса на скачивание онлайн-картинок с Tmall на мобильные телефоны не было поймано.

В это времянужна настройка мобильного агента,скачать Drony Приложение и проведите пальцем по настраивать страница

Нажмите «Выбрать сеть», затем выберите ту, к которой вы подключены. WIFI, то есть 3 Места, где нужны настройки:

настраиватьнад Drony App Наконец, вам нужны настройки В системе мобильного телефона WIFI вариант, мы раньше были настройки Charles локальная сеть IP и Charles порт прослушивания Теперь нам нужно изменить IP на Локальная сеть, где находится Drony ИП, потому что Drony Он установлен в мобильном телефоне, поэтому вы можете IP Изменить на 127.0.0.1,порт Изменить на Drony порт прослушивания 8020

Наконец мы успешно захватилиМобильная версиякартинки,Если изображение не может быть отображено,могу поставить _.heic Удалить, оставить только .jpg суффикс, затем копировать в Браузер


Код, использованный в этой статье, находится в моем AndroidAll GitHub На складе. Помимо внедрения инструментов разработки Android, этот склад и Android программистнуждаться Освоенный стек технологий,нравиться:Архитектура программы, шаблоны проектирования, оптимизация производительности, алгоритмы структуры данных, Kotlin, Flutter, NDK, Router, RxJava, Glide, LeakCanary, Dagger2, Retrofit, OkHttp, ButterKnife, Router Подождите, продолжайте обновлять, добро пожаловать star。

Издатель: Лидер стека программистов полного стека, укажите источник для перепечатки: https://javaforall.cn/130259.html Исходная ссылка: https://javaforall.cn

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