Charles Proxy. Обзорный гайд

Что такое Charles

Логотип Charles радикально не похож на общепринятые минималистичные иконки:

Charles Proxy логотип
Необычно

«Чарли» — инструмент контроля/мониторинга трафика, который позволяет тестировать веб-приложения. Он нужен QA для анализа запросов, отправляемых приложением к серверу, и ответов. Он умеет читать трафик компьютеров под Windows, и мобильных девайсов, как Android, так и iOS. Наверное, входит в «базовый набор» тестировщика.

Настройка на десктопе

Итак, Charles «вставляется» между тестируемой программой и ее сервером и «читает» коммуникацию между ними. К примеру, когда вводите слово в Google, то ваш ПК (или смартфон) передает в Google поисковый запрос. Charles, если установлен в системе, выступает в роли посредника (или скорее «перехватчика») между приложением и сервером и отслеживает логи запросов, что полезно при разработке и тестировании приложений, которым требуется сервер (то есть практически всех современных приложений).

Что делает Charles Proxy с трафиком
Что он делает

Установка Charles

В браузере заходим на URL-адрес загрузки пробной версии на официальном сайте (пробника для ознакомления достаточно; для любителей экспериментов, уже немного знакомых с «Чарли», есть бета 5-й версии; но там, судя по их блогу, мало что improved, кроме каких-то сугубо визуальных improvements и iOS-дебагов). На сайте три ссылки на загрузку для различных версий ОС, т.е. для Windows, Mac и Linux. Качаем нужное:

Скачать Charles

Щелкаем на соответствующей ссылке и ждем конца загрузки.

Скачка завершена

У нас например Windows. Идем в папку Загрузки, где уже скачан установочный файл Charles-proxy-4.5.4-win64.msi (номер версии в вашем случае будет чуть больше, разница между версиями не принципиальна). Запускаем, после чего появится стандартный для Windows мастер инсталляции:

Начало установки Charles Proxy

Соглашаемся с лицензионным соглашением и нажимаем Next:

Принимаем SLA
Указываем рабочую папку
Процесс пошел
Финиш

Жмем Finish. Открываем свежепоставленное приложение Charles. Стартовое окно приведено ниже. Опция Windows proxy должна быть активирована по дефолту. Проверяем в меню Proxy:

Включаем прокси в Windows

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

Устанавливаем рут-сертификат

#1) Входим в меню Помощь, и в выпадающем списке находим пункт “Install Charles Root Certificate”.

Ставим рут-сертификат

#2) Указываем, где установить сертификат.

#3) Если выбран локальный компьютер, то задаем расположение папки, нажав на кнопку Browse и выбрав «Trusted Root Certification Authorities«.

Добавляем в Доверенные

#4) Жмем OK и продолжаем.

#5) Появится уведомление об успешно установленном сертификате.

Активация SSL-проксирования

Теперь можно приступать к изучению возможностей Charles что касается SSL, т.е. читать запросы от локальной машины на сервер.

  • Откриваем Google, набираем wikipedia и жмем Искать.
  • Открываем Charles и переключаем на отображение Структуры — в левом верхнем углу окна находим опцию отображения (Sequence/Structure) и выбираем режим Structure.
  • В появившихся фильтрах вводим “wiki” для вывода запросов, содержащих этот текст.
  • Нажимаем правой кнопкой в правой части нашего запроса и выбираем пункт Enable SSL proxying.
Включаем SSL-прокси

Так включается SSL-прокси для одного адреса. Если нужно контролировать все подключения, то необходимо настроить еще некоторые параметры в SSL proxying.

Для этого:

#1) Щелкните в строке меню пункт Proxy и выберите пункт SSL Proxy Settings.

Уточняем настройки SSL

Там можно увидеть, что Google уже есть в списке (ведь мы его добавляли раньше).

#2) Щелкните кнопку Add и в Edit location добавляем звездочку (*) в поле Host и 443 в поле Port. Звездочка значит, что все «подобные» URL будут включены в фильтр по локации.

Прописываем правильный порт 443

Теперь ОК.

Идем далее — прочие функции и настройки.

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

Смотрим настройки

Функциональность Charles (кнопки)

Кнопки Charles Proxy

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

Пройдемся по ним.

#1) Clear (Удалить сессию): Нажатие удаляет сессию, после чего можно начать новую сессию.

#2) Stop/Start: По дефолту функция включена. Если нужно приостановить запись в лог, нажимаем Stop.

#3) SSL Proxying: Если вы ранее активировали эту функцию в настройках, то данная кнопка будет активна.

#4) Network Throttling (Троттлинг или дросселирование сети): Функция искусственного ограничения скорости (т.н. дросселирования) сети служит для имитации сложных условий или устаревших технологий в сети, таких как 2G, или плохого покрытия 3G/4G/WiFi, или может подключения через модем. 

Это полезно, когда тестируем приложение, сильно зависящее от скорости подключения — как оно поведет себя в различных условиях. Точнее указать скорость и параметры сети — клавиши Ctrl+Shift+T или меню Proxy => Throttle settings.

#5) Breakpoints: Эта функция видимо не понадобится, если вы не разработчик. Если поставить точку останова на какой-либо запрос, то когда Charles получит такой запрос, он будет ждать дополнительных действий.

#6) Compose: Функция позволяет редактировать запросы и отправлять их в уточненном виде. Можно изменить/добавить нужные параметры и отправить с ними.

#7) Repeat: Запрос в редакторе будет отправлен повторно. Функция нужна, когда понадобилось повторить запрос, не выполняя действие заново.

#8) Validate: функция предназначена для проверки (валидации) запросов или ответов. Открывается новая вкладка с результатами валидации.

#9) License Purchase: Придется нажать через месяц.

#10) Tools: Здесь вспомогательные инструменты контроля трафика.

#11) Settings: Настройки управления доступом, прокси, протоколирования, кастомные настройки под проект и т.д.

Сохранение и шеринг сессии

Часто нужно передать логи другому тестировщику или разработчику. Для этого сохраняем или экспортируем текущую сессию.

Нажимаем Control+S или переходим в меню File и жмем Save. Далее вводим удобочитаемое имя, с расширением .chls, например TestLogs.chls и сохраняем.

Также можно сохранить логи в разделе Files, в формате .chls и расшарить другим тестировщикам.

Аналогично, можно импортировать чужой .chls к себе и работать с ним.

Удаляем сертификат Charles

Ранее мы ставили root-сертификат Charles. Теперь, как его удалять (это бывает нужно).

#1) Ищем на компьютере Certificate Manager (Менеджер сертификатов). В Windows он называется certmgr.msc:

Удаляем сертификат

#2) Когда он открылся, нажимаем Trusted Root Certification Authorities (Корневые центры сертификации), и указываем папку Сертификаты, появится их список. Процесс:

Удаление сертификата из Доверенных
Находим сертификат Charles в списке

#3) Выбираем контекстное меню сертификата Charles в списке и жмем Delete.

Удаляем сертификат

#4) Далее подтверждаем — Yes. Сертификат удален, но если Charles будет нужен снова, придется ставить заново.

Подтверждаем удаление

Настройка в Android

Charles работает с Android, то есть позволяет контролировать трафик на Android с компьютера. Для этого сначала нужно настроить параметры Wi-Fi на Android.

ПК с установленным Charles и Android-устройство должны быть в одной WiFi-сети.

Если вы уже когда-то работали с MITM, то вам не составит труда настроить и Charles.

Этапы

#1) Откройте Уведомления на Android-девайсе.

#2) Длительным нажатием на значке WiFi открываем Дополнительные настройки.

#3) На компьютере открываем терминал и вводим ipconfig.

#4) Там указан IP-адрес ПК, как на скриншоте ниже.

Узнать свой айпишник

#5) Посмотреть IP можно также в Charles. Нажимаем меню Help => Local IP address, в всплывшем окне — IP.

#6) Заходим в параметры WiFi в смартфоне и долгим нажатием заходим в настройки WiFi.

#7) Modify network — изменяем эти настройки.

вай фай чарльз прокси

#8) Ставим галочку Show advanced options.

Вводим настройки

#9) Указываем Proxy — Manual.

Вручную

#10) Введите имя Proxy с IP системы ПК и номер порта 8888, и Save.

Имя и порт

#11) После сохранения настроек сети в смартфоне Charles proxy запросит подключения с девайса. Жмем Allow.

Установка root-сертификата Charles в Android

Для установки сертификата делаем следующее:

#1. На Android-устройстве устанавливаем блокировку экрана, т.е. пинкод или паттерн разблокировки телефона; блокировка должна быть

#2. Открываем Chrome на смартфоне и вводим там следующий URL-адрес.

#3. Появится запрос на ввод пароля или паттерна блокировки экрана. Введите.

#4. Сертификат загрузится.

#5. Появится запрос, укажите имя и сохраните.

#6. Настройка завершена, Charles контролирует трафик.

#7. Если в QA-задаче только трафик с мобильного девайса, снимаем галочку с проксирования в Windows:

Отключаем прокси в Windows

Удаляем сертификат

  • Если Charles больше не нужен, можно удалить его сертификат.
  • В Настройках на Android-смартфоне находим раздел Security (Безопасность), далее ищем Trusted Credentials (Доверенные данные).
  • Ищем сертификат с нужным именем и удаляем.

Платная подписка Charles Proxy

Стоимость лицензии для одного человека составляет 30$.

В триал-периоде есть ограничения:

#1) Charles вначале тупит — долго запускается с заставкой:

Заставка trial Charles Proxy

#2) И он закроется через полчаса, придется перезапускать.

Charles Proxy вылетает

Часто задаваемые вопросы (FAQ)

#1) Charles работает на iPhone?

Ответ: Да, здесь описание настройки.

#2) В каких ОС работает Charles?

Ответ: Работает с iOS и Windows, а читает трафик с Windows/Android/iOS.

#4) Существуют ли альтернативы?

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

#5) Есть ли в Charles веб-интерфейс?

Ответ: Да, поддерживает веб-интерфейс. В разделе Settings => Web interface settings.

#6) Где официальная документация?

Ответ: здесь.

#7) Как отключить Charles?

Ответ: Просто нажать кнопку Stop, или закрыть приложение. Перехват сетевых вызовов будет прекращен (ничего не «пишется» втайне от пользователя).

#8) Преимущества Charles?

Ответ:

  • Удобство интерфейса.
  • Поддержка всех распространенных ОС.
  • Возможности моделирования ограничений трафика.
  • Экспорт и импорт сессий.
  • Простота.

#9. Не вижу localhost-трафик.

Некоторые системы бывают hardcoded не использовать прокси для localhost-трафика. Простое решение: подключиться к http://localhost.charlesproxy.com/. Альтернативное: добавить точку после localhost, или заменить localhost именем вашей машины, или просто ввести свой IP.

#10. В ответе вижу странные символы (кодировка слетает).

Во первых, проверить кодировку/charset на сервере. Charles ее может «не угадать». Если не получается, то возможно проблема со шрифтами, изменить шрифт в Preferences или вкладке User Interface. И перезапустить Charles.

#11. Перестал работать интернет в браузере, если не запущен Charles

Дело в настройках прокси в браузере, которые вы забыли вернуть в прежний вид после работы с Charles. Или, Charles был закрыт с эксепшеном, поэтому настройки не восстановились.

#12. Charles конфликтует с антивирусом или файерволлом (что-то падает или глючит)

Лучше временно удалить антивирус/отключить файерволл.

#13. Почему такой логотип?

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

#14. Localhost SSL-трафик с Chrome падает с ошибкой ERR_CONNECTION_CLOSED

Chrome по дефолту реджектит localhost-трафик с невалидным SSL-сертификатом. Возможно SSL-сертификат просрочен или с неправильным именем, или указан не тот нужен. Если все ок, но Chrome все равно отвергает, нужно зайти сюда: chrome://flags/#allow-insecure-localhost и включить Allow invalid certificates for resources loaded from localhost.

Как раздать VPN

Здесь туториал.

Видео для утомленных чтением

Есть видеотуториалы Артема Русова:

Установка и настройка

 

Практикум

Также мини-курс по снифферам от AlexQA (там Charles+Fiddler):

8 частей

Заключение

Если вы уже имеете представление о тестировании API, пользоваться Charles довольно просто. Большинство функций интуитивны.

Источники:1,2


Подпишись на понедельничные QA-дайджесты — и там не будет рекламы

Какой была ваша первая зарплата в QA и как вы искали первую работу?

Мега обсуждение в нашем телеграм-канале о поиске первой работы. Обмен опытом и мнения.

Подписаться
Уведомить о
guest

0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии

Мы в Telegram

Наш официальный канал
Полезные материалы и тесты
Готовимся к собеседованию
Project- и Product-менеджмент

🔥 Популярное

💬 Telegram-обсуждения

Наши подписчики обсуждают, как искали первую работу в QA. Некоторые ищут ее прямо сейчас.
Наши подписчики рассказывают о том, как не бояться задавать тупые вопросы и чувствовать себя уверенно в новой команде.
Обсуждаем, куда лучше податься - в менеджмент или по технической ветке?
Говорим о конфликтных ситуациях в команде и о том, как их избежать
$1100*
медианная зарплата в QA в июне 2023

*по результатам опроса QA-инженеров в нашем телеграм-канале

Собеседование

19%*
IT-специалистов переехало или приняло решение о переезде из России по состоянию на конец марта 2022

*по результатам опроса в нашем телеграм-канале

live

Обсуждают сейчас