Charles Proxy: что это и как пользоваться для отладки своего трафика

Charles Proxy — программа-сниффер для компьютера, которая встаёт между приложением и интернетом и записывает каждый HTTP- и HTTPS-запрос, проходящий через неё. Разработчики и тестировщики запускают её, чтобы увидеть, что на самом деле отправляют их сайты, мобильные сборки и серверные клиенты, подменить ответ без правки кода или изобразить медленную сеть.
Ниже — весь рабочий цикл: как направить в Charles трафик браузера, расшифровать HTTPS через SSL Proxying, подключить телефон по Wi-Fi, пустить сам Charles через внешний прокси и какие встроенные инструменты экономят часы тестирования. Всё описанное предполагает, что вы отлаживаете собственные приложения и устройства или те, на проверку которых у вас есть разрешение.
Резидентные прокси
Резидентные выходы во многих странах, чтобы проверить, как ваш сервис видят посетители из-за рубежа
Что делает Charles и где он находится в цепочке
По устройству Charles — явный (explicit) прямой прокси, работающий на вашем компьютере. Клиент направляют на него сознательно, в отличие от шлюза, который перехватывает пакеты незаметно; разница подробно разобрана в материале о прозрачном и явном прокси. Запрос сначала попадает в Charles, тот сохраняет его в сессию и отправляет на настоящий сервер, ответ возвращается тем же путём.
Именно позиция посередине делает инструмент полезным:
- видны заголовки, cookies, параметры адреса, тела JSON и тайминги каждого обращения;
- запрос можно остановить на полпути и изменить до отправки или до возврата ответа;
- удалённый файл можно заменить локальным, а канал — замедлить до скорости 3G.
Charles написан на Java, есть версии для macOS, Windows и Linux. Программа платная, с пробным периодом 30 дней; незарегистрированная копия к тому же ограничивает длительность одной сессии, поэтому при регулярной работе покупают лицензию. На момент написания актуальна ветка 5.x.
Установка и первые перехваченные запросы
- Скачайте установщик для своей системы с официального сайта Charles и запустите программу.
- При первом старте версии для macOS и Windows предлагают сами прописать системный прокси. Соглашайтесь: пункт Proxy → macOS Proxy (или Windows Proxy) останется отмеченным, и браузеры, которые берут системные настройки, пойдут через Charles.
- Откройте любой сайт в Chrome или Edge — через пару секунд в левой панели появятся имена хостов.
По умолчанию Charles принимает подключения HTTP-прокси на порту 8888. У Firefox собственные сетевые настройки: включите в нём использование системного прокси или вручную укажите 127.0.0.1 и порт 8888.

Structure или Sequence
Две вкладки над списком меняют вид сессии. Structure собирает обращения в дерево по хостам и путям — удобно, когда нужно всё, что вернуло одно API. Sequence показывает запросы в порядке появления, это помогает при пошаговом разборе сценария пользователя. Поле фильтра под списком Sequence оставляет на экране один хост, а пункт Focus в контекстном меню хоста убирает посторонний трафик в отдельную папку Other Hosts.
Для каждого запроса справа доступны вкладки Overview (статус, время, размеры), Contents (сырые запрос и ответ, просмотр JSON и картинок) и Summary для страниц с множеством подзапросов.
Расшифровка HTTPS через SSL Proxying
Без дополнительной настройки зашифрованные соединения видны только как строки CONNECT без содержимого. Чтобы заглянуть внутрь, Charles должен встать посредником для выбранных хостов, а устройство — доверять сертификату, которым Charles подписывает эти соединения.
Шаг 1. Добавьте корневой сертификат Charles в доверенные
- macOS: выберите Help → SSL Proxying → Install Charles Root Certificate. Откроется «Связка ключей»; найдите запись Charles Proxy, раскройте блок Доверие и для параметра «При использовании этого сертификата» выберите «Всегда доверять».
- Windows: тот же пункт меню запускает мастер импорта. Хранилище выберите вручную — Доверенные корневые центры сертификации, а не автоматический вариант.
- Firefox: системное хранилище он не читает, поэтому, когда Firefox уже идёт через Charles, откройте
chls.pro/sslи отметьте доверие этому центру сертификации для сайтов.
Каждая установка Charles создаёт свой уникальный корневой сертификат, так что доверие к нему не открывает ваш компьютер другим пользователям Charles. И всё же удаляйте его из доверенных, когда отладка закончена.
Шаг 2. Укажите, какие хосты расшифровывать
Откройте Proxy → SSL Proxying Settings, оставьте отмеченным Enable SSL Proxying и добавьте записи в список Include. Аккуратнее всего — конкретный хост с портом 443; одиночная * расшифрует всё подряд, а это шум и заметное замедление. Есть путь короче: щёлкните правой кнопкой по хосту в дереве Structure и выберите Enable SSL Proxying.

Шаг 3. Проверьте результат
Обновите страницу. Запросы к этому хосту должны отображаться с читаемыми путями и телами и значком замка. Если вместо этого браузер ругается на сертификат, корневой сертификат добавлен не в то хранилище или браузер нужно перезапустить.
Перехват трафика с телефона
Отладка мобильных приложений — то, ради чего Charles чаще всего покупают: видно, что именно ваша сборка шлёт на бэкенд. Телефон и компьютер должны быть в одной сети Wi-Fi.
- В Charles откройте Help → SSL Proxying → Install Charles Root Certificate on a Mobile Device or Remote Browser. В окне будет локальный адрес компьютера и порт для подключения.
- На телефоне откройте параметры сети Wi-Fi, переключите прокси в режим Вручную и введите этот адрес с портом
8888. - Сделайте любой запрос с телефона. Charles спросит, разрешить ли новое устройство, — нажмите Allow.
- В браузере телефона откройте
chls.pro/sslи установите скачанный профиль или сертификат.
Где находятся поля прокси на каждой платформе, пошагово показано в инструкциях для iPhone и для Android.
iPhone и iPad
После установки профиля в Настройки → Основные → VPN и управление устройством нужен ещё один переключатель: Настройки → Основные → Об этом устройстве → Доверие сертификатам, где включается полное доверие сертификату Charles. Без этого Safari и приложения продолжат отвергать расшифрованные соединения.
Android
Начиная с Android 7 приложения по умолчанию не доверяют сертификатам, установленным пользователем. Браузер может принять сертификат Charles, а ваше приложение — нет, пока отладочная сборка не разрешит это через network security config:
<!-- res/xml/debug_net_rules.xml -->
<network-security-config>
<debug-overrides>
<trust-anchors>
<certificates src="user" />
<certificates src="system" />
</trust-anchors>
</debug-overrides>
</network-security-config>Подключите файл в теге application манифеста атрибутом android:networkSecurityConfig="@xml/debug_net_rules". Блок debug-overrides действует только в отладочных сборках, релизная версия сохраняет обычную проверку сертификатов. Чужие приложения и программы с закреплением сертификата (certificate pinning) откажутся работать с Charles — и это ожидаемо.

Как пустить Charles через внешний прокси
Иногда компьютеру, на котором идёт отладка, нужно выходить в интернет через другой прокси: корпоративный шлюз или выход в другой стране, когда вы проверяете, как ваш собственный сервис показывает цены, баннеры или контент посетителям оттуда. Charles решает это цепочкой: клиент подключается к Charles, Charles — к внешнему прокси.
- Откройте Proxy → External Proxy Settings.
- Отметьте Use external proxy servers.
- Выберите протокол в списке: Web Proxy (HTTP), Secure Web Proxy (HTTPS) или SOCKS Proxy. У каждого свои поля хоста и порта, поэтому заполните все нужные типы.
- Введите адрес и порт внешнего прокси. Если он требует логин и пароль, отметьте Proxy server requires a password и заполните оба поля. Charles поддерживает авторизацию Basic и NTLM.
- Добавьте локальные и внутренние хосты в список исключений, чтобы они шли напрямую.
Учтите, как Charles распределяет трафик: записи HTTP и HTTPS обслуживают веб-запросы, а SOCKS используется для прочего трафика, например при пробросе портов. Если не уверены, какой протокол выдал провайдер, загляните в сравнение SOCKS5 и HTTP-прокси. Для проверки геозависимой выдачи адрес домашнего интернет-провайдера правдоподобнее серверного, поэтому для таких задач берут резидентные прокси с выбором страны и города.


Сохраните настройки и откройте через Charles любую страницу проверки IP. Адрес на ней должен принадлежать выходу внешнего прокси, а не вашей офисной или домашней сети.
Инструменты, которые ускоряют тестирование
Все они находятся в меню Tools и Proxy и работают только с трафиком, который Charles уже видит.
| Инструмент | Что меняет | Когда пригодится |
|---|---|---|
| Throttle Settings | Скорость и задержку всей сессии или выбранных хостов | Проверка загрузчиков, тайм-аутов и повторов на слабой мобильной сети |
| Breakpoints | Останавливает запрос или ответ для правки | Как приложение реагирует на неожиданный статус или поле |
| Map Local | Отдаёт файл с диска вместо ответа сервера | Примерить новый JSON до готовности бэкенда |
| Map Remote | Перенаправляет запросы с одного адреса на другой | Направить боевую сборку на тестовый сервер |
| Rewrite | Правила замены заголовков, тел и адресов | Добавить отладочный заголовок ко всем вызовам |
| Repeat / Repeat Advanced | Повторяет перехваченный запрос один или много раз | Воспроизвести баг, лёгкая нагрузка на собственный эндпоинт |
| No Caching / Block Cookies | Убирает заголовки кэша или cookies | Поведение при первом визите |
Любой перехват сохраняется как сессия .chls или экспортируется в HAR — этот формат читают инструменты разработчика в браузерах и многие другие программы, так что коллега откроет ровно то, что видели вы.
Частые проблемы и решения
В Charles ничего не появляется. Выключен системный прокси (проверьте Proxy → macOS Proxy или Windows Proxy), браузер использует собственные настройки или маршрут перехватывает VPN-клиент.
HTTPS виден только как CONNECT с пометкой unknown. Хост не добавлен в список Include в SSL Proxying или SSL Proxying выключен целиком.
Ошибки сертификата в браузере или приложении. Корневой сертификат установлен, но доверие к нему не включено (переключатель на iOS, параметр в «Связке ключей», хранилище Windows), либо приложение закрепляет свой сертификат.
После настройки на телефоне пропал интернет. Сменился IP компьютера, файрвол закрыл порт 8888 или запрос на доступ был отклонён. Проверьте Proxy → Access Control Settings и брандмауэр компьютера.
Внешний прокси отвечает 407 или по тайм-ауту. Перепроверьте логин и пароль в External Proxy Settings и соответствие порта выбранному протоколу. Наш прокси-чекер покажет, отвечает ли внешний сервер вообще, прежде чем искать проблему в Charles.
Charles и другие отладочные прокси
| Программа | Платформы | Модель оплаты | Сильная сторона |
|---|---|---|---|
| Charles | macOS, Windows, Linux | Платная лицензия, пробный период | Зрелый интерфейс, замедление сети, Map Local, мастер для телефонов |
| Fiddler Everywhere | macOS, Windows, Linux | Подписка | Аккуратный интерфейс, совместная работа |
| mitmproxy | macOS, Windows, Linux | Бесплатно, открытый код | Скрипты на Python, консольный и веб-интерфейс |
| Proxyman | macOS, Windows, Linux | Бесплатный тариф и платные планы | Нативный вид на Mac, быстрая настройка iOS |
| HTTP Toolkit | macOS, Windows, Linux | Бесплатный тариф и платные планы | Перехват отдельных приложений и терминалов в один клик |
Цены и возможности этих программ меняются, поэтому перед выбором загляните на сайт разработчика. Если вам ближе скрипты, чем клики, удобнее mitmproxy; для визуальной работы с мобильными приложениями обычно выбирают Charles или Proxyman.
Частые вопросы о Charles Proxy
Charles Proxy бесплатный?
Нет. Это платная программа с пробным периодом 30 дней, причём в пробной версии ограничена длительность каждой сессии. После окончания пробного срока нужна лицензия.
Почему Charles показывает unknown вместо содержимого HTTPS?
Для этого хоста не включён SSL Proxying. Добавьте хост в Proxy → SSL Proxying Settings, убедитесь, что корневой сертификат Charles в доверенных на устройстве, и обновите страницу.
Можно ли перехватить трафик любого приложения на телефоне?
Только тех приложений, которые принимают сертификат Charles. На Android 7 и новее это ваши отладочные сборки с network security config, а приложения с закреплением сертификата отказываются от него намеренно.
Какой порт использует Charles?
HTTP-прокси по умолчанию слушает порт 8888. Его можно сменить в Proxy → Proxy Settings, если порт уже занят другой программой.
Может ли Charles работать через другой прокси?
Да. В External Proxy Settings трафик Charles направляется на внешний HTTP-, HTTPS- или SOCKS-прокси с авторизацией Basic или NTLM и списком хостов-исключений.
Законно ли пользоваться Charles Proxy?
Отладка собственных приложений, устройств и тестовых аккаунтов — обычная задача разработки. Перехват чужого трафика без согласия в большинстве стран незаконен, поэтому используйте программу только там, где у вас есть право на проверку.


