Charles Proxy — что это, настройка и перехват HTTPS трафика

Автор: IT Sectr Опубликовано: 2026-05-08 Время чтения: 8 мин

Charles Proxy — это кроссплатформенный прокси-сервер для отладки HTTP/HTTPS-трафика, используемый разработчиками для перехвата, просмотра и модификации сетевых запросов. По данным Karl von Randow, создателя инструмента (2025), Charles используется более чем в 50 000 компаний по всему миру с 2004 года. Прокси поддерживает перехват трафика с мобильных устройств через WiFi, HTTPS-проксирование с установкой корневого сертификата и широкий набор инструментов для анализа API.

Главное

  • Charles Proxy — это HTTP/HTTPS прокси-сервер для перехвата и анализа сетевого трафика с расширенными возможностями отладки
  • HTTPS-проксирование реализовано через установку корневого сертификата Charles на устройство, что позволяет просматривать зашифрованный трафик
  • Rewrite и Breakpoints — мощные инструменты для модификации запросов и ответов на лету без изменения кода сервера или клиента
  • Map Local и Map Remote позволяют подменять сетевые ресурсы на локальные файлы или альтернативные серверы для тестирования
  • Throttle — имитация медленных и нестабильных сетевых соединений для проверки поведения приложения в условиях плохой связи

Что такое Charles Proxy?

Charles Proxy — это HTTP-прокси и HTTP-монитор, работающий как посредник между клиентом и сервером. Все запросы и ответы проходят через Charles, что позволяет просматривать их содержимое, анализировать структуру, изменять данные в реальном времени и имитировать различные сетевые условия. Доступен для Windows, macOS и Linux.

История и позиционирование

Charles Proxy был создан в 2004 году Карлом фон Рэндоу и остаётся одним из самых популярных инструментов для отладки сетевого трафика. В отличие от бесплатных альтернатив, Charles предлагает платную лицензию с 30-дневным пробным периодом. Инструмент позиционируется как профессиональное решение для разработчиков мобильных приложений, веб-разработчиков и QA-инженеров, которым нужен полный контроль над HTTP-коммуникациями.

Совместимость с платформами

Charles работает как системный прокси на компьютере и может перехватывать трафик с любых устройств в одной сети: Android, iOS, симуляторов, эмуляторов, веб-браузеров и IoT-устройств. Для перехвата HTTPS необходимо установить корневой сертификат Charles на каждое устройство. Трафик поддерживается на HTTP/1.1 и HTTP/2 (частично). HTTP/3 (QUIC) не поддерживается на уровне перехвата.

Как работает Charles Proxy

Charles работает по принципу MITM (Man-in-the-Middle) прокси: когда клиент отправляет запрос через Charles, инструмент перехватывает этот запрос, перенаправляет на целевой сервер, получает ответ и передаёт его обратно клиенту. Весь трафик проходит через Charles, что позволяет его анализировать и модифицировать.

Архитектура проксирования

При запуске Charles создаёт локальный HTTP-прокси на порту 8888 (по умолчанию). Операционная система или приложение настраивается на использование этого прокси. Все HTTP-запросы отправляются сначала на Charles, который затем действует как полноценный клиент для целевого сервера. Для HTTPS Charles использует собственную технику SSL-проксирования: он генерирует сертификат на лету для каждого домена, подписанный корневым сертификатом Charles. Если корневой сертификат установлен на устройстве как доверенный, Charles может расшифровывать и просматривать HTTPS-трафик.

Режимы работы

Charles поддерживает два режима: Proxy (классический прокси-сервер) и SOCKS Proxy (для UDP и TCP-трафика). Для веб-разработки используется стандартный HTTP-proxy. Для мобильных устройств — настройка WiFi Proxy на устройстве с указанием IP-адреса компьютера, на котором запущен Charles. MacOS поддерживает автоматическую настройку прокси для симулятора iOS.

xml
<!-- Настройка network_security_config.xml для Android с поддержкой Charles -->
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <debug-overrides>
        <trust-anchors>
            <!-- Доверять сертификату Charles в Debug-сборке -->
            <certificates src="user" />
        </trust-anchors>
    </debug-overrides>
</network-security-config>

Основные возможности Charles Proxy

Charles Proxy предоставляет набор профессиональных инструментов для анализа и модификации трафика, выходящий далеко за рамки простого перехвата запросов.

Rewrite и Breakpoints

Инструмент Rewrite позволяет автоматически изменять определённые части запросов или ответов: заголовки, параметры URL, тело ответа. Например, можно заменить заголовок User-Agent на значение от другого устройства или убрать определённые cookies. Breakpoints работают как отладчик: запрос останавливается на выбранном этапе (перед отправкой или перед получением), и разработчик может вручную изменить его содержимое до того, как оно пойдёт дальше. Это полезно для тестирования обработки ошибочных ответов или нестандартных состояний.

Map Local и Map Remote

Map Local позволяет подменить сетевой ресурс (CSS, JS, JSON) на локальный файл с диска. Это незаменимо при разработке фронтенда: можно изменять CSS/JS и сразу видеть результат, не деплоя на сервер. Map Remote перенаправляет запросы с одного URL на другой — например, с продакшен-сервера на staging для тестирования. Оба инструмента работают по шаблонам URL с поддержкой wildcards.

Throttle и имитация сетевых условий

Инструмент Throttle позволяет имитировать различные типы сетевых соединений по предустановленным профилям: 3G, EDGE, GPRS, DSL, WiFi. Можно настроить ограничение скорости (download/upload), latency, packet loss и stability. Это критически важно для тестирования поведения приложения при медленном или нестабильном соединении — правильная обработка таймаутов, повторные попытки, офлайн-режим.

ПрофильDownloadUploadLatencyТипичный сценарий
3G780 kbps330 kbps200 msТестирование при слабом мобильном сигнале
EDGE130 kbps50 kbps400 msЭкстремально медленное соединение
GPRS50 kbps20 kbps500 msМинимально возможное соединение
DSL2 Mbps256 kbps50 msДомашнее проводное соединение
WiFi10 Mbps10 Mbps10 msХорошее WiFi-соединение

Auto Save и Recording

Charles может автоматически сохранять сессии трафика в файлы .chls, что позволяет анализировать их позже или передавать коллегам. Recording Control позволяет гибко настроить, какой трафик сохранять: по доменам, по типам контента, по статус-кодам. Это удобно для долгосрочного мониторинга работы API.

Настройка Charles Proxy для мобильных устройств

Для отладки трафика мобильных приложений Charles настраивается как WiFi Proxy: все устройства в одной сети с компьютером могут направлять трафик через Charles. Корректная настройка HTTPS требует установки сертификата Charles на мобильное устройство.

Настройка на Android

Для Android необходимо: открыть Settings → WiFi → Advanced → Proxy, выбрать Manual и указать IP-адрес компьютера с портом 8888. После этого открыть браузер на устройстве и перейти по адресу http://chls.pro/ssl для скачивания сертификата Charles. На Android 7+ (API 24+) требуется network_security_config.xml для доверия пользовательским сертификатам в Debug-сборке — иначе приложение может не пропускать трафик через Charles.

Настройка на iOS

Для iOS: Settings → WiFi → настроить прокси на IP и порт 8888. Затем Safari → http://chls.pro/ssl → установить профиль сертификата. В iOS 10.3+ необходимо дополнительно включить доверие сертификату: Settings → General → About → Certificate Trust Settings → включить Charles Proxy. iOS более строг в отношении сертификатов: некоторые приложения могут использовать SSL Pinning, блокируя трафик через Charles даже с доверенным сертификатом.

Решение проблем с SSL Pinning

Если приложение использует SSL Pinning (фиксацию сертификата сервера), стандартное проксирование через Charles не сработает — приложение отклонит сертификат Charles. Решения: отключить SSL Pinning в Debug-сборке через настройки OkHttp или URLSession, использовать Frida для обхода pinning в runtime, или применять Android Emulator с корневым доступом.

Практические сценарии использования Charles Proxy

Charles Proxy решает конкретные задачи разработки и тестирования. Рассмотрим наиболее частые сценарии, где инструмент незаменим.

Отладка интеграции с API

Самый частый сценарий — проверка корректности API-запросов. Charles показывает точный URL запроса, заголовки, тело, параметры. Если сервер возвращает неожиданный ответ, сразу видно: структуру JSON, код ошибки, заголовки ответа. Это позволяет отличить ошибку на клиенте от ошибки на сервере без логов с обеих сторон.

Тестирование с медленным соединением

Используя профили Throttle, можно проверить, как приложение ведёт себя при низкой скорости соединения: отображается ли индикатор загрузки, корректно ли обрабатывается таймаут, не зависает ли UI при потере соединения. Особенно важно тестировать кэширование — если данные уже загружены, приложение должно показывать их из кэша, а не уходить в бесконечную загрузку.

Редактирование ответов сервера

С помощью Breakpoints можно изменить ответ сервера перед его отправкой приложению. Например, вернуть пустой массив вместо данных, изменить статус-код на 500, добавить в JSON новое поле. Это позволяет проверить обработку граничных случаев без модификации серверного кода — одно из самых мощных применений Charles в мобильной разработке.

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

Charles Proxy бесплатен?

Charles Proxy является коммерческим продуктом с 30-дневным пробным периодом. После окончания пробного периода программа продолжает работать с перерывом в 30 минут при каждом запуске. Стоимость лицензии — $50 за одну копию. Существуют бесплатные альтернативы, такие как Proxyman (macOS) и mitmproxy (кроссплатформенный).

Можно ли перехватывать трафик iOS симулятора?

Да, iOS симулятор автоматически использует системный прокси macOS. Достаточно запустить Charles и включить SSL-проксирование — весь трафик симулятора будет перехвачен. Настройка сертификата для симулятора происходит автоматически, требуется только доверить сертификат Charles в связке ключей macOS.

Чем Charles отличается от Proxyman?

Основные отличия: Charles — кроссплатформенный (Windows, macOS, Linux), Proxyman — только macOS и iOS. Charles имеет более широкий набор инструментов (Rewrite, Map Local, Repeat, Auto Save), но платный. Proxyman — бесплатный для базового функционала, с современным интерфейсом и нативной интеграцией с iOS-симулятором.

Как Charlie Proxy влияет на производительность?

Charles добавляет задержку при прохождении трафика через прокси, особенно при активном SSL-проксировании (дешифровка/зашифровка). На современных компьютерах задержка составляет 5–15 миллисекунд на запрос. Для тестов производительности рекомендуется отключать SSL-проксирование для статики (CSS, JS, изображения) через Recording Control.

Как экспортировать сессию из Charles?

Charles поддерживает экспорт в форматы: .chls (собственный, для повторного открытия в Charles), HAR (HTTP Archive, открывается в браузерах и других инструментах), CSV (для обработки в Excel или таблицах), Trace (для экспорта конкретного запроса в curl-совместимом формате). Экспорт через меню File → Export Session.

Итоги

  • Charles Proxy — это профессиональный HTTP/HTTPS прокси-сервер для перехвата, просмотра и модификации сетевого трафика с 2004 года
  • Принцип работы — MITM-прокси: все запросы проходят через Charles, что позволяет анализировать и изменять их на лету
  • Мощные инструменты: Rewrite, Breakpoints, Map Local, Map Remote, Throttle — для всесторонней отладки API и пользовательского опыта
  • HTTPS-проксирование требует установки корневого сертификата Charles на устройство, а для Android 7+ — network_security_config.xml в Debug-сборке
  • Throttle-профили позволяют имитировать 3G, EDGE, DSL и другие типы соединений для тестирования поведения приложения в реальных условиях
  • Экспорт сессий в HAR, CSV и .chls форматы для анализа, отчётности и передачи команде
  • Для проектов с ограниченным бюджетом рассмотрите бесплатные альтернативы: Proxyman (macOS) или mitmproxy (кроссплатформенный open-source)

Мы разработаем мобильное приложение под ключ

IT Sectr создаёт приложения для iOS и Android для стартапов и бизнеса с 2017 года. Мы проконсультируем вас и предложим наилучшее решение.

Обсудить проект

Читайте также