Charles — широко используемый инструмент для перехвата сетевых пакетов протокола http в Mac или Windows. Это ужасный инструмент для захвата пакетов. В обычном процессе тестирования и отладки освоение этого инструмента в основном устраняет другие инструменты захвата пакетов.
2. Почему Чарльз?
Зачем использовать инструмент захвата пакетов? Как вы захватываете пакеты при отладке и тестировании обычных мобильных приложений?
В процессе разработки и тестирования мы неизбежно столкнемся с проблемами сети, особенно с продуктами, которые в значительной степени являются серверными продуктами. В настоящее время мы часто решаем это, захватывая сетевой пакет, чтобы увидеть, что приложение отправляет и получает. . В это время на суде Чарльз; Чарльз — ужасный инструмент для перехвата пакетов, которым так легко пользоваться без друзей.
Так где же член Чарльза? ? ? Основные особенности следующие:
1. Поддерживает SSL-прокси, может перехватывать и анализировать SSL-запросы.
ОТКРЫЛ СЕКРЕТ ВНУТРИ ПОЕЗДА ПАУКА ЧАРЛЬЗА!! (Choo-Choo Charles)
2. Поддержка управления потоком. Он может имитировать медленную сеть (2G, 3G) и запросы с длительным временем ожидания.
3. Поддержка отладки AJAX. Он может автоматически форматировать данные JSON или XML для удобного просмотра.
4. Поддержка повторной отправки сетевых запросов для облегчения внутренней отладки.
5. Поддержка изменения параметров сетевого запроса.
6. Поддержка перехвата и динамической модификации сетевых запросов.
7. Одним из наиболее важных преимуществ является то, что существуют версии для разных платформ (Mac, Windows, Linux), которые можно изучать и играть в них по всему миру.
Три, основной принцип работы Чарльза
Чарльз использует сетевой прокси-сервер для захвата пакетов. Давайте сначала разберемся с принципом http-прокси:
1. Обычный процесс HTTP-запроса.
2. Присоединяйтесь к процессу запросов и ответов HTTP-прокси Чарльза.
Прокси-сервер посередине — Чарльз
В-четвертых, процесс загрузки и установки Чарльза
1. Официальный адрес загрузки сайта:
2.Инструмент для взлома
Пять шагов операции захвата пакетов HTTP
Шаг 1: Откройте прокси Charleshttp;
Шаг 2: Добавьте прокси к Wi-Fi на мобильном телефоне;
Шаг 3: Включите функцию записи Charles;
Шаг 4: Запустите приложение и начните захват пакетов;
Шаг 5: Проанализируйте захваченные пакеты данных.
Шаг 1. Откройте прокси Charleshttp
а. Настройте прокси Charles
При первом запуске системный агент машины будет включен по умолчанию. Поскольку мы отслеживаем только мобильный терминал, удалите этот параметр (удалите небольшой крючок перед опция)
Кто такой Чу-Чу Чарльз | Страшилки Шортс
б. Активируйте функцию HTTP-прокси.
Шаг 2. Добавьте прокси к мобильному Wi-Fi
А. Телефон Android:
1. Откройте настройки Wi-Fi на мобильном телефоне, затем нажмите и удерживайте подключенный Wi-Fi и выберите [Изменить сеть] во всплывающем меню.
2. Опция [Показать расширенный] на канавке — [Вручную]
3. Введите IP-адрес и порт прокси-сервера: IP — это IP-адрес компьютера, на котором установлен Charles, а порт — это порт, установленный при настройке Charles на предыдущем шаге.
Примечание. Wi-Fi, подключенный к мобильному телефону, должен находиться в той же локальной сети (локальной сети), что и компьютер.
б. Мобильный телефон iOS:
1. Нажмите на Wi-Fi, к которому вы подключены.
2. Введите IP и порт прокси-сервера,
IP — это IP-адрес компьютера, на котором установлен Charles, а порт — это порт, который был установлен при настройке Charles на предыдущем шаге.
Шаг 3. Включите функцию записи Charles
1. Когда телефон подключен к прокси-серверу, Чарльз отобразит соответствующее окно подсказки, нажмите «Разрешить».
2. Нажмите кнопку «Начать запись» на панели инструментов, чтобы запустить функцию захвата пакетов Чарльза.
Шаг 4: Запустите приложение и начните захват пакетов
1. Запустите соответствующее приложение на телефоне для захвата пакетов.
2. Соответствующее содержимое запроса можно увидеть в главном интерфейсе Charles.
Шаг 5: проанализируйте захваченные пакеты данных
1. Чарльз в основном предоставляет два представления для просмотра пакетов: «Структура» и «Последовательность»:
a. Представление структуры классифицирует сетевые запросы в соответствии с доступным доменным именем; б. Последовательный просмотр сортирует сетевые запросы по времени доступа.
2. Вы можете переключаться между этими двумя представлениями в соответствии с вашими конкретными потребностями. Слишком много запросов, и иногда вы не можете зайти.
Charles предоставляет простую функцию фильтрации, вы можете вводить ключевые слова, чтобы быстро отфильтровать сетевые запросы с указанными ключевыми словами в URL.
Шесть этапов операции захвата пакетов Https
Шаг 1. Узнайте об основных принципах https;
Шаг 2: Установите сертификат SSL на мобильный телефон;
Шаг 3. Активируйте SSL-прокси Чарльза;
Шаг 4. Включите функцию прокси-сервера SSL для указанного запроса URL.
Шаг 5. Остальные шаги такие же, как при захвате пакетов Http, см.Четыре шага операции захвата пакетов HTTP
Шаг 1. Узнайте об основных принципах https;
HTTPS фактически состоит из двух частей: HTTP + SSL / TLS, то есть к HTTP добавляется уровень модуля для обработки зашифрованной информации. Передача информации между сервером и клиентом будет шифроваться через TLS, поэтому все передаваемые данные являются зашифрованными. В частности, как зашифровать, расшифровать, проверить и посмотреть на картинку, объяснение к картинке ниже
Для получения подробных инструкций, пожалуйста, обратитесь к:
Шаг 2. Установите сертификат SSL на мобильный телефон.
1. Экспортируйте файл сертификата из Charles 2. Потом копируем на SD карту телефона через adb или другими инструментами.
3. Импортируйте файл сертификата в телефон Android, найдите файл и нажмите «Установить». 4. Импортируйте файл сертификата в телефон iOS.
Шаг 3. Активируйте SSL-прокси Чарльза
1. Выберите настройки [Прокси] -> [Настройки SSL-прокси . ].
2. Во всплывающем диалоговом окне выберите [Включить SSL-проксирование].
Шаг 4. Включите функцию прокси-сервера SSL для указанного запроса URL.
1. Выберите полученную ссылку https, затем щелкните правой кнопкой мыши и выберите [Включить SSL-проксирование].
2. Если вы не активируете прокси-сервер SSL, запрос https будет искажен и не может быть просмотрен.
Когда вы снова запрашиваете этот Https, содержимое запроса уже очищается.
Шаг 1: Установите точку останова Charless.
Шаг 2: Включите функцию точки останова для указанного URL.
Шаг 3: Отредактируйте содержимое запроса и ответа.
Шаг 1. Установите точку останова без использования символов
Выберите [Настройки точки останова…] -> Установите флажок [Включить точки останова], чтобы активировать функцию точки останова.
Шаг 2. Включите функцию точки останова для указанного URL.
1. Выберите URL-ссылку — щелкните правой кнопкой мыши, чтобы открыть меню — «Выберите [Точки останова], чтобы включить точку останова этого запроса.
2. Таким образом, Чарльз откроет диалоговое окно прерывания при встрече с этим запросом.
Шаг 3: Отредактируйте содержимое запроса и ответа.
б. Отредактируйте содержимое ответа сервера.
8. Моделирование продвинутой и слабой сети Чарльза.
1. В меню выберите [Прокси] -> [Настройки газа . ] — а затем активируйте [Включить регулирование].
2. Установите параметры слабой сети в Throttle Configuration.
3. Ниже приведены справочные документы по скорости для различных сетевых стандартов:
Источник: russianblogs.com
Погружение в удивительный мир Charles для чайников
В сегодняшней статье я вам поведаю о том, как пользоваться программой Charles, мощным инструментом для тестирования веб-сервисов, в перечень возможностей которого входит перехватывание запросов, их подмена и перенаправление на локальные файлы.
Charles работает и на мобильных устройствах, но в этой статье мы будем рассматривать только версию для Windows. Давайте же начнем!
Установка Charles
Начать следует, конечно же, с установки. Скачиваем программу с официального сайта разработчика.
Программа платная, но есть тестовый период на 30 дней. Даже без покупки программой можно спокойно пользоваться, но время одной сессии будет ограничено 30 минутами, а также частенько на 5-10 секунд будет появляться оверлей.
Вы можете получить полную версию программы сами-знаете-какими методами, но мы их рассматривать не будем. Все же лучше поддержать разработчиков!
После скачивания следует запустить exe-файл и произвести инсталляцию. Здесь ничего сложного нет, просто оставьте стандартные настройки установки.
Комьюнити теперь в Телеграм
Подпишитесь и будьте в курсе последних IT-новостей
Настройка программы
После установки программу следует настроить. Многие пользователи Charles забывают об этом этапе, а затем кусают локти, пытаясь понять, почему у них ничего не работает. На самом деле настройка программы очень простая, сейчас все покажу!
Для начала нужно установить сертификат программы. Именно из-за него, увы, и возникает большинство проблем, связанных с неработоспособностью программы.
Инструкция по установке сертификата:
Открываем меню установки сертификата через Help -> SSL Proxying -> Install Root Charles Certificate.
Жмем «Установить сертификат».
Здесь выбираем «Локальный компьютер» и жмем «Далее».
ВАЖНО! На этом этапе выбираем «Поместить все сертификаты в следующее хранилище», жмем «Обзор», затем ОБЯЗАТЕЛЬНО выбираем «Доверенные корневые центры сертификации».
Жмем «Далее».
Затем жмем «Готово».
Установку сертификата мы выполнили, теперь нам необходимо включить SSL Proxying и настроить его фильтрацию, чтобы начать перехватывать запросы. Фильтрация определяет, какие именно запросы нужно ловить, но мы сделаем так, чтобы у нас перехватывались все запросы.
Открываем Proxy -> SSL Proxying Settings.
Ставим галочку на «Enable SSL Proxying», затем под полем «Include» жмем на кнопку «Add».
Для отключения фильтрации и сниффинга всего трафика мы просто добавляем звездочку в поле « Host » .
Программа настроена. Теперь рассмотрим ее возможности и функции.
Compose
Данная функция позволяет нам отправить копию выбранного запроса с измененными параметрами.
Нам достаточно выбрать один конкретный запрос и с помощью функции Compose поменять его параметры (заголовок запроса, тело запроса, куки, код и пр.)
Для начала мы можем отделить конкретные запросы от остальных с помощью функции Focus :
Теперь выбираем нужный нам запрос и выполняем ПКМ -> Compose
У нас создается копия запроса, в которой мы можем менять все, что нам нужно: тело, шапку, тип запроса, версию HTTP и т.д.
Например, можно подменять некоторые значения в коде, чтобы проверить валидацию на бэкенде. Допустим, поле принимает только числовое значение. Мы используем Compose, передавая в значение поле уже буквы. Если запрос пройдет без ошибок, то это значит, что валидация отсутствует.
После изменения нужных нам параметров жмем « Execute » и получаем копию запроса с ответом от сервера.
Breakpoint
Данная функция позволяет точнее работать с запросами, вешая на них так называемый «Breakpoint» (точку остановки).
Ниже показано, как через настройки добавить запрос в список Breakpoint. После повторного получения указанного вами запроса в программе откроется отдельная сессия, в которой вы сможете спокойно работать с ним.
Отмечу, что эта функция, по сути, делает автоматический Compose. Вы так же можете менять значения, но вам не придется каждый раз выбирать конкретный запрос.
Открываем Proxy -> Breakpoint Settings.
Ставим галочку на «Enable Breakpoints», затем жмем «Add».
Заполняем все поля в открывшемся окне (выше пример заполнения).
При повторном получении запроса с такими же данными у вас будет открываться новое окошко, в котором вы сможете работать с пойманным запросом. Удобно!
Rewrite
Если же ваша задача заключается в подмене параметров множества запросов, то вы можете прибегнуть к функции « Rewrite » .
Открываем Tools -> Rewrite.
Ставим галочку на «Enable Rewrite», затем в открывшемся окне под левым полем жмем «Add», а дальше жмем «Add» уже под правым верхним полем.
Заполняем все поля (они идентичны тем, что заполняются при создании Breakpoint).
Затем жмем «Add» уже под правым нижним полем, указываем тип редактирования запроса, заменяемые значения, а также условия замены.
Давайте поймаем запрос и посмотрим на реакцию Charles!
Charles поймал нужный запрос, а затем заменил все Header одним значением.
Repeat Advanced
Данная функция будет полезна для нагрузочного тестирования. Хоть Charles и не блещет особым потенциалом в данной области, но базовую проверку корректности флуд-контроля вы сможете выполнить.
Ниже подробно показано, как это сделать.
ПКМ по запросу -> Repeat Advanced.
Здесь настраиваем все в соответствии с указаниями на приложенной выше картинке.
Должно открыться новое окно, где отправляются запросы.
Map Local
Последняя функция в сегодняшней статье. Позволяет работать с локальными файлами.
Демонстрация инструмента ниже.
ПКМ по запросу -> Map Local.
В открывшемся окне у нас идут знакомые поля. Жмем «Choose» и выбираем локальный файл, после чего жмем « OK » .
При повторном получении того же запроса Charles будет перенаправлять его на локальный файл.
Надеюсь, эта статья помогла вам разобраться в основах Charles. Это действительно мощный и довольно простой инструмент для тестирования. Спасибо за внимание!
Источник: timeweb.com
Charles для начинающего QA: от настройки до использования
Всем привет, меня зовут Роман, я тестировщик в компании СберМегаМаркет.
Итак, по первой ссылке в гугле на запрос «Charles что такое», можно найти примерно следующее: Charles – один из самых распространенных инструментов для сниффинга трафика. В свою очередь, сниффинг трафика – это перехват и анализ сетевого трафика.
Нетрудно понять, что Charles – это что-то похожее на консоль разработчика в браузере, однако, с гораздо более широким спектром возможностей и приспособленным под большее количество платформ.
Особенно обширно Charles применяется в мобильном тестировании, ввиду того, что это один из самых простых и удобных способов посмотреть, уходят ли запросы с мобильного клиента, с какими параметрами они отправляются и как отвечает backend. Дальше в статье расскажу о Charles для начинающего QA.
Подключение Android-девайса к Charles
Для начала необходимо подружить телефон, с которого мы будем сниффить трафик, и Charles.
1. Скачиваем программу с официального сайта Charles.
Charles является платной программой, но есть и бесплатная версия, в которой Charles необходимо перезапускать каждые 30 минут и на некоторые действия накладывается 10-ти секундный Delay. В остальном отличий между платной и бесплатной версиями нет.
2. После успешной установки открываем программу и попадаем в главное окно.
3. Сверху жмем Help ~> SSL Proxying ~> Install Charles Root Certificate.
Таким образом мы установим корневой сертификат в систему, чтобы Charles мог работать с https-запросами.
4. После установки в списке сертификатов видим сертификат Charles.
5. Открываем свойства сертификата.
6. В открывшемся окне, в пункте «Доверие», проверяем, что везде указан параметр «Всегда доверять».
7. После этого можно закрыть все окна, связанные с сертификатами. Далее идем в Help ~> SSL Proxying ~> Install Root Certificate on a Mobile Device or Remote Browser.
Должно открыться окно с ip и портом, по которому можно достучаться до Charles.
Открывшееся окно не нужно закрывать. Оставляем открытым, пока не подключимся с телефона.
8. Берем в руки девайс и переходим в настройки Wi-Fi сети.
Чтобы все получилось, необходимо, чтобы компьютер и телефон были подключены к одному Wi-Fi, а vpn был выключен как на телефоне, так и на компьютере. Иначе есть вероятность того, что Charles не сможет обнаружить телефон.
9. В настройках Wi-Fi на телефоне заходим в настройки сети (на телефонах марки Samsung – шестеренка рядом с названием сети Wi-Fi, на телефонах марки Huawei необходимо нажать и удерживать палец на наименовании Wi-FI сети и выбрать «Изменить сеть»).
Далее в пункте «Прокси» выбираем параметр «Вручную».
В поле «Имя узла прокси» вводим ip: например, 192.168.1.64:
В поле «Порт прокси» указываем порт: например, 8888:
Должно получиться следующее:
После того, как сохранили настройки сети, в окне Charles должно появиться уведомление с просьбой разрешить или отклонить доступ к девайсу. Жмем «Разрешить»/«Allow».
После открытия страницы браузер должен начать скачивать сертификат для Charles.
Если браузер не показал, что начал скачивать файл, попробуйте открыть пункт «Загрузки»: некоторые браузеры осуществляют загрузку в фоновом режиме. Если же сертификат не загружается, значит, один из пунктов выше выполнен неправильно или не до конца.
11. После скачивания сертификата открываем настройки – на Samsung в поиске пишем «Установить из памяти» – Сертификат Wi-Fi – выбрать папку Download – Выбрать сертификат Charles и установить его. Для Huawei и других устройств можно просто нажать на сертификат и установить его, выбрав пункт «Установка для Wi-Fi».
12. Теперь можно смотреть сетевой трафик на мобильном девайсе. Если для тестирования дебажной сборки вашего приложения необходимо подключение к VPN, его нужно включить на компьютере. Ввиду того, что весь трафик с телефона проходит через Charles и запросы уходят так же через него, для отправки запроса будут использоваться настройки сети компьютера, а не телефона.
Если есть проблема с тем, что некоторые запросы не отображаются, необходимо сделать следующее: Proxy ~> SSL Proxying Settings ~> Во вкладке SSL Proxying и графе Include нажать Add ~> В поле Host и Port указать «*» и нажать «Ок».
Эта настройка принудительно включает проксирование трафика с любого хоста и порта.
Подключение iOS-девайса к Charles
Для подключения iOS-девайса к Charles необходимо проделать те же шаги, что и для Android-девайса, однако, в пункте 13 необходимо сделать доверенным установленный сертификат. Для этого необходимо перейти в Настройки – Основные – Об этом устройстве – Пролистать в самый низ экрана – Доверие сертификатам – Включить доверие для сертификата Charles.
Как и для чего мы в СберМегаМаркете используем Charles: на примере тестирования Android-приложения
Во-первых, смотреть трафик в мобильном приложении чуть сложнее, если сравнивать с веб-тестированием. Поэтому базово мы используем Charles как средство для просмотра трафика в мобильном клиенте.
Во-вторых, одна из самых полезных и незаменимых фич в Charles – это подмена ответа с backend. Это можно сделать с помощью нескольких инструментов, одним из которых являются Breakpoints. Их мы используем чаще всего.
В качестве примера можно рассмотреть наш недавний кейс с отображением заглушки экрана после авторизации, которая отображается в зависимости от того, по какой схеме доставки товара работает продавец. И отрисовка необходимых вкладок с заказами для каждого типа доставок или для обеих типов доставки вместе. Вся логика реализуется на бэкенде.
Во время авторизации используем ручку merchant/search, в ответе которой приходит атрибут startFlow типа string, который свидетельствует о том, должна ли отображаться заглушка и какие вкладки для заказов необходимо отображать.
На первый взгляд кажется, что при тестировании этого кейса не совсем целесообразно использовать подмену ответа через Charles, однако, несмотря на всю простоту кейса, есть ряд проблем.
Во-первых, на тестовом окружении нет необходимых аккаунтов, на которых можно проверить отображение заглушки.
Во-вторых, создать такой аккаунт на данный момент довольно сложно ввиду того, что разработка функционала регистрации таких аккаунтов еще не закончена.
В-третьих, атрибут, который приходит в ответе ручки, не хранится в БД, а формируется на бэке по отдельной логике.
Итак, как я уже писал выше, основной инструмент, который понадобится для подмены ответа – это Breakpoints (Точки останова). Если вкратце, Breakpoints срабатывают в тот момент, когда Charles «ловит» запрос к методу, для которого указана точка останова. Запрос не отправится до того момента, пока пользователь руками не отправит его. Сделано это для того, чтобы можно было отредактировать параметры запроса или итоговый ответ.
Итак, указываем в прокси телефона ip и порт Charles и открываем приложение. Логинимся в аккаунт, который работает по поддерживаемой нами схеме.
Открываем Charles и видим запросы, которые проходили за время логина в приложение.
Для того, чтобы отобразилась заглушка, необходимо в ручке merchant/search в поле startFlow прислать значение «true».
Для того, чтобы подменить это поле, необходимо поставить Breakpoint на нужный метод. Для этого в списке запросов находим нужный ~> открываем настройки ~> выбираем пункт Breakpoints.
После этого выходим из учетной записи и снова авторизуемся под теми же логином и паролем. Во время авторизации в личном кабинете в Charles появляется запрос, на который мы только что поставили точку останова.
В открывшемся окне нам доступно редактирование тела запроса, если перейти на вкладку «Edit request». В нашем случае менять тело запроса не нужно, поэтому просто отправляем запрос. После этого снова откроется окно в Charles, где уже можно редактировать ответ, который пришел от api. Для редактирования ответа необходимо перейти на вкладку «Edit response» и выбрать удобный формат отображения содержимого ответа.
Из условия мы помним, что для отображения заглушки значение в поле startFlow должны быть stub. Меняем «CD» на «stub» и жмем «execute».
После этого смотрим, что отображается в мобильном приложении и видим, что подмен данных произошел успешно. Теперь фронт показывает необходимую нам заглушку:
В этой статье я преимущественно рассказал, как законнектить Charles и мобильный девайс, описал проблемы, которые наиболее часто возникают при настройке связки телефон + Charles и постарался на примере продемонстрировать базовый уровень того, как мы в СберМегаМаркете используем Charles при тестировании мобильного приложения.
Возможности Charles гораздо обширнее, чем может показаться на первый взгляд. При желании можно создать несколько файлов с заранее сохраненными ответами от api, настроить Map Local (подмен ответа с бэкенда на ответ, сохраненный в локальном файле) и тестить огромные части фронта без фактического взаимодействия с реальным бэкэндом. Без прохождения процессов по созданию необходимых тестовых данных и соответственно без ощутимых временных затрат. Однако, об этом я хочу поговорить в следующей статье.
- Блог компании СберМегаМаркет
- Тестирование веб-сервисов
- Тестирование мобильных приложений
Источник: habr.com