Charles Proxy для начинающих тестировщиков: установка, HTTPS-сертификаты, кейсы и альтернативы
Charles Proxy – один из самых популярных инструментов для перехвата и анализа сетевого трафика, широко используемый тестировщиками и разработчиками. Он позволяет мониторить, инспектировать и даже изменять HTTP/HTTPS-запросы между приложениями и сервером. Проще говоря, Charles выступает в роли прокси-сервера “посередине”, благодаря чему вы можете видеть и изучать весь обмен данными – это незаменимо при отладке API, анализе работы веб и мобильных приложений, поиске багов и оптимизации запросов. В этой статье мы пошагово разберем, как установить Charles на macOS и Windows, как настроить перехват HTTPS-трафика (включая установку сертификатов на мобильных устройствах Android/iOS), где хранить установленные сертификаты (чтобы не попасть впросак с безопасностью), а также обсудим типичные проблемы с сертификатами и их решение. Кроме того, рассмотрим ключевые кейсы использования Charles (перехват трафика с мобильных приложений, фильтрация, изменение и повтор отправки запросов, анализ API-ответов) и проведем краткое сравнение с популярными альтернативами – Fiddler, Proxyman, mitmproxy – с упором на то, что лучше подходит начинающим. В конце вы найдете полезные советы и ссылки для дальнейшего изучения proxy-инструментов в тестировании.
Установка Charles Proxy на macOS и Windows
На macOS: скачайте актуальную версию Charles Proxy с официального сайта и запустите установочный .dmg (перетащите приложение в Applications). После установки откройте Charles. По умолчанию доступна пробная версия на 30 дней, после чего программа не блокируется полностью, но накладывает ограничения по времени сеанса. (Иными словами, без лицензии Charles будет каждые ~30 минут отключаться и показывать напоминание, после чего его можно перезапустить и продолжить работу.) При регулярном использовании стоит приобрести лицензию – единоразовая оплата даёт бессрочное пользование всеми возможностями.
На Windows: скачайте установщик .exe с официального сайта и выполните шаги мастера установки (по умолчанию Charles установится в C:\Program Files\Charles\). После установки запустите Charles Proxy через ярлык. В пробном режиме действуют такие же ограничения по длительности сессии, как и на Mac. Обратите внимание: для корректной работы перехвата HTTPS на Windows может понадобиться запуск Charles с правами администратора (это упростит установку сертификата в системное хранилище, о чём далее).
После успешной установки убедитесь, что Charles Proxy запускается без ошибок. При старте Charles может попросить разрешения настроить системные прокси – например, на macOS он предлагает автоматически прописать себя в качестве прокси для системы. Пока вы знакомитесь с инструментом, можно отключить автопроксирование для OS (в меню Proxy → Proxy Settings снимите галочки Enable MacOS Proxy и ... on launch, чтобы трафик вашего компьютера не засорял лог Charles). Вы всегда сможете включить прокси вручную, когда нужно.
Установка и доверие HTTPS-сертификатов Charles
Чтобы расшифровывать HTTPS-трафик, одного запуска Charles недостаточно – необходимо установить специальный корневой сертификат Charles и доверить его на ваших устройствах (ПК и телефоне). Без этого браузеры и приложения будут считать Charles “чужим” и не покажут содержимое защищённых запросов.
На macOS: откройте Charles и выберите меню Help → SSL Proxying → Install Charles Root Certificate. macOS автоматически откроет приложение Keychain Access (Связка ключей) с выделенным сертификатом Charles Proxy.... Дважды кликните по сертификату, раскройте раздел “Доверие” (Trust) и в выпадающем списке «При использовании этого сертификата» смените значение с Use System Defaults на Always Trust (Всегда доверять). Закройте окно, после чего система запросит ваш пароль для внесения изменения – введите пароль администратора macOS. Если у вас был открыт браузер Safari, перезапустите его, чтобы изменения вступили в силу. Готово – macOS теперь доверяет сертификату Charles.
На Windows: в запущенном Charles зайдите в Help → SSL Proxying → Install Charles Root Certificate. Появится окно с предупреждением о недоверенном сертификате; нажмите Install Certificate… для запуска мастера импорта сертификатов. В мастере выберите локальное хранилище вручную: укажите размещение в хранилище Trusted Root Certification Authorities (Доверенные корневые центры сертификации). (Этот шаг важен – по умолчанию мастер может предложить другое хранилище, но сертификат Charles должен оказаться именно среди доверенных корневых). Завершите импорт, после чего сертификат Charles будет установлен в систему. Возможно, потребуется перезапустить браузеры для применения доверия. Примечание: Если вы пользуетесь Firefox, он хранит сертификаты отдельно – для доверия Charles в Firefox откройте в нём страницу https://chls.pro/ssl и импортируйте сертификат вручную, отметив опцию доверять этому центру для веб-сайтов.
Подключение мобильного устройства (Android/iOS): Charles умеет перехватывать трафик мобильных приложений, но для этого нужно направить трафик телефона через ваш компьютер с Charles. Шаги общие для Android и iOS:
- Подключите телефон и компьютер к одной Wi-Fi сети. Убедитесь, что устройства находятся в одной подсети (для надежности можно подключиться к точке доступа, раздаваемой с телефона, либо к одному роутеру).
- Настройте прокси на мобильном устройстве. На телефоне в настройках Wi-Fi найдите параметры текущей сети. В дополнительных настройках установите HTTP-прокси вручную: укажите IP-адрес вашего компьютера и порт 8888 (стандартный порт Charles). Сохраните настройки. На iPhone эти параметры находятся в меню Wi-Fi (внизу страницы с параметрами сети: переключить Proxy на Manual и вписать адрес/порт), на Android – обычно в разделе “Изменить/Дополнительно” для сети Wi-Fi (опция Прокси → Вручную).
Пример настройки прокси на мобильных устройствах: слева – экран прокси-настроек Wi-Fi на Samsung (Android), в центре – на Xiaomi (Android), справа – на iPhone (iOS). Везде необходимо переключить прокси в режим «Вручную», указать IP компьютера (сервер) и порт 8888. Обратите внимание: интерфейс может отличаться в зависимости от производителя устройства, однако ключевые поля (сервер и порт прокси) присутствуют в любом случае. После сохранения настроек на устройстве Charles попросит подтверждение – на компьютере всплывёт окно с запросом разрешить подключение нового девайса, нажмите Allow (Разрешить). Если у вас активен файрвол, также дайте согласие на входящее соединение к Charles (порт 8888).
- Установите корневой сертификат Charles на мобильное устройство. Теперь, когда телефон направляет трафик через ваш Charles, нужно зайти с телефона на специальный адрес для скачивания сертификата. Откройте браузер на телефоне и перейдите по адресу chls.pro/ssl (можно просто ввести chls.pro/ssl). Это короткий URL, по которому Charles отдаст вашему устройству свой корневой сертификат. Для iOS: при открытии chls.pro/ssl в Safari появится предложение скачать профиль. Согласитесь и после загрузки откройте приложение Настройки на iPhone. Перейдите в раздел Основные → Профили (или VPN и управление устройством в новых версиях iOS) – там вы увидите загруженный профиль Charles Proxy. Установите этот профиль (сертификат) по подсказкам системы. Внимательно: после установки профиля зайдите в Основные → Об этом устройстве → Доверие сертификатам (Certificate Trust Settings) и включите доверие для сертификата Charles Proxy, иначе iOS по умолчанию не будет ему доверять! (Ползунок напротив Charles Proxy CA должен стать зеленым). Для Android: при открытии chls.pro/ssl в браузере начнется загрузка файла сертификата (формата .pem или .crt). Если скачанный файл не устанавливается автоматически, откройте Настройки телефона и в поле поиска найдите “Сертификаты” или зайдите в Настройки → Безопасность. Там выберите опцию Установить сертификат (она может называться “Установить из хранилища”, “Установка сертификатов с устройства” или похожим образом, обычно внутри раздела безопасности или раздела с учётными данными). Далее выберите тип сертификата CA (центра сертификации), когда система предложит категорию. Экран настроек безопасности Android для установки сертификата: слева – раздел Безопасность (опции управления сертификатами), справа – меню Установить из памяти с выбором типа сертификата (необходимо выбрать «Сертификат CA» для установки корневого сертификата). После выбора “Сертификат CA” откроется проводник: найдите и выберите скачанный файл сертификата (обычно лежит в папке Downloads/«Загрузки», имя файла начинается с “charles”...). Если Android запросит ввести PIN-код или графический ключ – введите его (либо задайте, если ещё не задан) для подтверждения установки сертификата. Это требование безопасности: пользовательские сертификаты хранятся в защищенном хранилище credentials. После успешной установки вы увидите уведомление, что сертификат установлен, и сможете найти его в разделе доверенных пользовательских сертификатов.
Теперь Charles Proxy имеет доверенный сертификат как на вашем компьютере, так и на мобильном устройстве, а устройство отправляет свой трафик через прокси. Можно пробовать открывать сайты с HTTPS или запустить тестируемое приложение на телефоне – все запросы должны отобразиться в Charles. Если какой-то запрос не отображается или помечен красным (ошибка SSL), значит шаг доверия сертификату выполнен некорректно – возвращайтесь и проверяйте настройки выше.
Где хранить сертификаты: безопасность и удобство
При установке Charles Root Certificate на разных устройствах важно правильно выбрать место хранения сертификата для баланса безопасности и удобства.
Хранилище ОС. Лучшее место для сертификата – системное хранилище доверенных корневых центров (Keychain на macOS, Trusted Root CA на Windows). Мы уже это сделали при установке: на Windows импортировали сертификат в доверенные корни, на Mac доверили через связку ключей, на телефонах сертификат тоже попал в раздел доверенных пользовательских (в iOS профиль, в Android – пользовательские CA). Хранение сертификата в этих хранилищах означает, что система доверяет ему на постоянной основе, и вам не придётся каждый раз переустанавливать сертификат при запуске Charles – это удобно.
Срок действия сертификата. Учтите, что корневой сертификат, сгенерированный Charles, имеет ограниченный срок (по умолчанию около 1 года). Когда срок истечёт, Charles сообщит об этом, и вам придётся сгенерировать новый (в Charles меню Help → SSL Proxying → Reset Charles Root Certificate) и повторно установить/доверить его на всех нужных устройствах. Чтобы не было сюрпризов, рекомендуем хранить где-то напоминание о дате истечения или сразу заменить сертификат перед истечением, особенно если Charles используется в критичных процессах тестирования.
Безопасность. Установка кастомного сертификата – это мощная штука: вы фактически доверили Charles расшифровывать любой трафик на вашем устройстве. Поэтому никогда не устанавливайте сертификаты от неизвестных источников – доверять можно только своему инструменту (Charles или его альтернативам). Хорошая новость: сертификат Charles уникален для каждой установки – даже если кто-то другой использует Charles, он не сможет автоматически читать ваш трафик, т.к. у него другой ключ. Злоумышленнику пришлось бы либо заставить вас установить его сертификат, либо украсть приватный ключ вашего Charles, что крайне маловероятно при соблюдении базовой гигиены (например, не распространять файлы конфигурации Charles). Тем не менее, держите установленные сертификаты под контролем: при завершении работы с Charles вы можете убрать доверие к его сертификату (удалить из хранилища) – особенно на чужих или рабочих устройствах, где лишний доверенный CA ни к чему. На своих же рабочих машинах/девайсах многие оставляют сертификат Charles постоянно – это удобно, просто помните о рисках. Также не оставляйте файлы сертификатов (.pem/.cer), скачанные через chls.pro/ssl, валяться в загрузках: после установки удалите их, чтобы никто посторонний не импортировал их случайно.
Итог: храните сертификаты Charles в стандартных хранилищах ОС, там они в безопасности и управляются системой. Контролируйте их актуальность (ежегодно обновляйте) и присутствие (удаляйте, когда не нужны). Такой подход позволит вам быстро использовать Charles в любой момент, не жертвуя безопасностью.