Приложение Charles Proxy - большой помощник и тестировщику, и разработчику. Мы хотим рассказать вам про функции «Чарльза», показать, как им пользуемся в своей работе. Но для начала поможем разобраться с приложением и правильно его настроить.
![](https://habrastorage.org/getpro/habr/upload_files/681/70b/d57/68170bd5723cf0af425016724c931072.jpg)
Установка и настройка Charles
Скачать последнюю версию можно с официального сайта приложения.
Без лицензии вам будет доступна пробная версия на 30 дней. После истечения этого срока появятся ограничения - функции не заблокируются полностью, но использование ограничено по времени.
Затем нужно установить сертификат. Для этого выполните следующие действия:
Пройдите путь Help → SSL Proxying → Install Charles Root Certificate.
Найдите в KeyChain сертификат Charles Proxy.
Сделайте его доверенным, изменив настройки с дефолтных Use System Defaults на Always Trust.
Подключение девайса
Charles можно установить в связке с ПК и с мобильным устройством. Для этого подключаем девайс и ноутбук к одной сети Wi-Fi. Для MacBook это настраивается следующим образом:
1. На девайсе в настройках Wi-Fi переходим в дополнительные настройки и подключаем proxy.
2. В Proxy вводим IP ноутбука и порт 8888 (он же дефолтный).
3. На экране MacBook после подключения девайса появится диалоговое окно, нажмите Allow.
На разных девайсах настройки выглядят по-разному, обратите внимание. Например, на Android нужно пройти путем Настройки → Подключения → Wi-Fi → Выбрать сеть → Дополнительно → Прокси → Вручную
![Вот так это отображается на Samsung, на Xiaomi и на iPhone: Вот так это отображается на Samsung, на Xiaomi и на iPhone:](https://habrastorage.org/getpro/habr/upload_files/694/467/af3/694467af3ba2ed72ba2d16156accdbe5.png)
Нужные параметры можно посмотреть в Charles по пути: Help → SSL Proxying → Install Root Certificate on a Mobile Device or Remote Browser. Также IP можно посмотреть в Help → Local IP Address.
Установка сертификата на девайс
Прежде чем начать работу, нужно установить на свой девайс сертификат, скачав его в браузере по ссылке chls.pro/ssl. Используйте Safari для iOS и системный браузер для Android.
![](https://habrastorage.org/getpro/habr/upload_files/9bb/1b5/9f7/9bb1b59f78d1f18e336cec2b862ee839.png)
Если скачивание сертификата не началось автоматически, нужно в установленном на ноутбуке Charles найти запросы http://ssl.charles и http://chls.pro, правым кликом по каждому выбрать Enable SSL Proxying и пройти по ссылке.
Android: Если установка сертификата после загрузки не произошла, ищем «Сертификаты» в настройках девайса, выбираем пункт меню Установка ЦА/ЦС сертификатов безопасности.
![](https://habrastorage.org/getpro/habr/upload_files/f33/8ac/98a/f338ac98a419bf26c1cb89c2afc6a867.png)
Ищем скачанный на девайс сертификат и устанавливаем его. Если потребуется задать PIN при установке, то задать любой.
На iOS: ищем Настройки → Профили → Установить сертификат.
Важно! Включите доверие для сертификата: Основные → Об этом устройстве → Доверие сертификатам → Включить доверие для вашего сертификата.
Финальные настройки
Перед началом работы отключите Proxy на ноутбуке: Proxy → Proxy Settings → MacOS → уберите галочки с чекбоксов Enable MacOS Proxy и Enable MacOS Proxy on launch.
Это нужно, чтобы не видеть запросы с браузеров самого ноутбука.
Затем включаем Proxy → Start Proxying и Start Recording. На нужных запросах выбираем правым кликом Enable SSL Proxying.
FAQ
Что делать, если не скачивается сертификат?
Проверьте, включен ли SSL Proxying на оба запроса http://ssl.charles и http://chls.pro.
Проверьте настройки браузера на загрузку файлов.
Проверьте, не включен ли у вас VPN, так как с ним весь трафик идет в обход Charles.
Что делать, если не видно запросов – везде Unknown?
Проверьте, установлен ли сертификат.
Включите SSL Proxying на конкретный запрос через правый клик – Enable SSL Proxying.
Проверьте Allow List и Block List в меню Tools. Оба этих листа могут запрещать соединение для вашего запроса. Лучше воздержаться от их использования, если вы не очень понимаете их суть.
На Android в сборке клиента должны быть прописаны манифесты для Charles Proxy.
Если запрос зашифрован, то его данные увидеть нельзя.
Что делать, если сделал все по инструкции, а запросы не вижу?
Проверьте прописанный IP своего MacBook и порт
VPN на девайсе должен быть выключен и весь трафик должен идти через Charles.
Что делать, если мне нужен VPN для работы?
Ничего страшного, VPN настраивается на MacBook, а девайс подключается через прокси к нему, получая преимущества Charles и VPN.
Что делать, если интернет не работает без Charles?
Откройте «Системные настройки». Далее следующий путь: Сеть → Ваша сеть → Дополнительно → Таб Прокси → Снять галочки с 2 чекбоксов у «Веб-прокси» и «Защищенный веб-прокси» → Ок → Применить
Что делать, если Charles Proxy вылетает каждые 30 минут и постоянно показывает баннер?
Если у вас установлена триал-версия, то она ограничивает время сессии на 30 минут. Можно перезапустить и пользоваться дальше, не забывая про ограничения пробной версии.
Переустановка сертификата
Сертификат Charles действует год. По истечении его необходимо переустановить. Для этого сбрасываем старый сертификат на вашем Маке: Help → SSL Proxying → Reset Charles Root Certificate.
Удаляем старый сертификат с устройства в настройках профиля (iOS) или ЦА сертификатах (Android). Проходим установку сертификата заново, как это описано выше.
Интерфейс
Перед тем, как приступать к работе, рассмотрим основные элементы управления и режимы просмотра запросов и ответов. У нас есть кнопки быстрого доступа включения/отключения некоторых настроек.
![](https://habrastorage.org/getpro/habr/upload_files/02d/027/da7/02d027da7c3d49e72455199214177801.png)
Clear the current Session — очищает историю запросов.
Start/Stop Recording — включает или выключает записи запросов.
Start/Stop SSL Proxying — включает или выключает просмотр запросов.
Start/Stop Throttling — включает или выключает троттлинг соединения.
Enable/Disable Breakpoints — включает или выключает брейкпоинты по запросам.
В приложении два режима отображения запросов: Structure и Sequence.
Режим Structure
Можно отображать запросы в виде структурированных папок.
![](https://habrastorage.org/getpro/habr/upload_files/44c/ff9/0ac/44cff90acd73f18f92511532e63c6b96.png)
Дерево запросов — список запросов, который был отправлен приложением. Поле запроса — информация о запросе. Поле ответа — ответ сервера. Фильтр — поле для фильтрации запросов.
Включите Focus на запросы, с которыми чаще работаете (кликаем правой кнопкой мыши по домену запроса или конкретному запросу, и в выпадающем меню выбираем Focus). Это поможет отслеживать только необходимые домены/запросы, группируя оставшиеся в Other Hosts.
Сессии можно сохранять и загружать через File → Import/Export Session. Формат для сохранения .chls
Режим Sequence
Здесь запросы отображаются в режиме очередности
![](https://habrastorage.org/getpro/habr/upload_files/02a/53b/91e/02a53b91ea1c78e1feb9a958932bbece.png)
Если ранее были добавлены запросы в Focus, то в режиме Sequence можно поставить чекбокс Focused и наблюдать очередность только избранных запросов.
Просмотр информации о запросе идентичен и для Structure, и для Sequence.
![](https://habrastorage.org/getpro/habr/upload_files/000/cab/4af/000cab4af35e47c876805f3780e240a7.png)
Overview — информация о запросе (статус, время, метод и т д). Полная информация, которая доступна о запросе.
![](https://habrastorage.org/getpro/habr/upload_files/54b/1a8/2c8/54b1a82c886c9f399e5ca0db5415fe71.png)
Contents — содержимое запроса с хедерами, куками, json-ами и т д. Основная рабочая вкладка, на которой смотрим содержимое запросов/ответов. Для ответов чаще всего используются Headers и JSON Text.
![](https://habrastorage.org/getpro/habr/upload_files/053/633/b46/053633b46de50ce2f5f42cb5ca6992bd.png)
По двойному клику по полю открывается отдельное окно с необходимым значением. Удобно использовать для просмотра больших данных или для копирования.
Summary — сравнительная информация о группе запросов. Удобно сравнивать время, размер и другие данные о запросах.
![](https://habrastorage.org/getpro/habr/upload_files/75f/1ef/668/75f1ef668405806bf2571573e5d66e0d.png)
Chart — сравнительная диаграмма о времени выполнения группы запросов.По сути, это очередность запросов со временем их выполнения. Будет полезна, если надо прикинуть, сколько относительно друг друга занимают по времени запросы.
![](https://habrastorage.org/getpro/habr/upload_files/064/0ed/5fb/0640ed5fbe28d9f20eb79cd0f22d743a.png)
Notes — личные заметки о запросе.В заметке можно написать, что делает запрос, какие-то данные для подмены или просто выразить свое негодование.
![](https://habrastorage.org/getpro/habr/upload_files/a99/dd9/a2a/a99dd9a2ae7441c648162621d4bdff6a.png)
Сама заметка теперь будет отображаться во вкладке Overview запроса.
![](https://habrastorage.org/getpro/habr/upload_files/094/d19/c1d/094d19c1da3266f974ab8a1d72f7655c.png)
Бабблы подключенных настроек
Здесь отображаются правила, которые сейчас включены в Charles Proxy к запросам и ответам.
![](https://habrastorage.org/getpro/habr/upload_files/b80/c96/7f6/b80c967f6bfd547c4cc3e573ff9b2a4a.png)
На скриншоте выше можно увидеть, что в данный момент включена запись запросов Recording, включены правила подмены Rewrite, включена локальная подмена Map Local на запрос, а также выставлены Breakpoints на некоторые запросы.
Итак, мы разобрались, как настроить Charles, посмотрели на его интерфейс, и теперь - наконец-то! - можем начинать работу. Но об этом в следующей статье от студии мобильной разработки CleverPumpkin.
Комментарии (6)
Darksol_89
29.11.2022 10:45Было бы круто, если еще написали как Чарлик с Browserstack устройствами законнектить. Мб есть хитрый способ?
2 дня пытался, но в итоге пришел к тому, что митм прокси юзать онли там - на некоторых девайсах
alex_expert_borisov Автор
29.11.2022 11:14Browserstack используем в работе, но к сожалению Charles к нему не подключали. В какой-то момент начали разбираться, сходу не нашли вариант и оставили. Так как острой необходимости не было.
Darksol_89
29.11.2022 13:06А как мобильное тестирование у вас организовано, подскажите? Мобильная ферма или физические устройства, эмуляторы?
axifive
Обычный mitm уже мало полезен, pinning все чаще и чаще применяется
Aquahawk
https://habr.com/ru/post/676618/ и прочие ssl-killswitch
alex_expert_borisov Автор
Мы используем Charles для тестирования наших приложений и для дебаг сборок целенаправленно отключаем пиннинг.