Перейти к содержимому
Гайды 6 мин чтения 1 просмотров

Charles Proxy

Подробное руководство по использованию Charles Proxy для отладки HTTP и HTTPS запросов. Узнайте о настройке, функционале и интеграции с GProxy для эффективной работы.

Браузер

Charles Proxy — это инструмент для отладки HTTP-запросов, функционирующий как локальный HTTP/HTTPS-прокси, позволяющий разработчикам и тестировщикам перехватывать, просматривать, изменять и анализировать весь сетевой трафик между их устройством и интернетом.

Обзор Charles Proxy

Charles Proxy предоставляет графический интерфейс для анализа сетевых взаимодействий, делая его незаменимым при разработке и отладке веб-приложений, мобильных приложений и API. Он работает как посредник между вашим браузером/приложением и целевым сервером, перехватывая весь трафик и представляя его в удобном для анализа виде.

Ключевые возможности

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

  • HTTP/HTTPS Proxying: Перехват и отображение всего HTTP и HTTPS трафика.
  • SSL Proxying: Расшифровка HTTPS трафика для его просмотра, что критично при работе с защищенными соединениями.
  • View Requests and Responses: Детальный просмотр заголовков, тела запросов и ответов, а также информации о времени и статусе.
  • Throttling: Имитация различных сетевых условий (например, 3G, Dial-up, кастомные скорости) для тестирования производительности приложений в условиях медленного соединения.
  • Rewriting: Изменение запросов или ответов "на лету" (заголовки, URL, параметры, тело) без изменения исходного кода клиента или сервера.
  • Map Local/Remote: Перенаправление запросов на локальные файлы или другие удаленные серверы, что удобно для тестирования изменений без развертывания.
  • Breakpoints: Приостановка запроса или ответа перед его отправкой или получением, позволяя вручную изменить его содержимое.
  • Repeat: Повторное выполнение выбранного запроса для проверки различных сценариев.
  • Filtering: Мощные инструменты для фильтрации трафика по хосту, пути, заголовкам или содержимому.
  • Export/Import: Сохранение сессий трафика для последующего анализа или обмена с командой.

Настройка и использование Charles Proxy

Установка

Charles Proxy доступен для macOS, Windows и Linux. Загрузите установочный файл с официального сайта и следуйте инструкциям для вашей операционной системы. После установки Charles автоматически настраивает системные настройки прокси для перехвата трафика с вашего компьютера.

Базовая конфигурация прокси

При первом запуске Charles автоматически предлагает настроить системный прокси. Подтвердите это действие.
Для ручной настройки:

  1. macOS: System Settings > Network > [Ваш сетевой адаптер] > Details > Proxies. Убедитесь, что Web Proxy (HTTP) и Secure Web Proxy (HTTPS) включены и указывают на 127.0.0.1 порт 8888.
  2. Windows: Settings > Network & internet > Proxy. Убедитесь, что Use a proxy server включен, адрес 127.0.0.1, порт 8888.
  3. Браузеры: Некоторые браузеры (например, Firefox) могут использовать собственные настройки прокси. Убедитесь, что они настроены на использование системных настроек или вручную укажите 127.0.0.1:8888.

Перехват HTTP-трафика

После запуска и настройки прокси, Charles начнет автоматически записывать весь HTTP-трафик, проходящий через вашу систему. Трафик отображается в окне Structure (структурированное дерево хостов) или Sequence (хронологический список запросов).

SSL Proxying (HTTPS-трафик)

Для просмотра содержимого HTTPS-трафика необходимо установить корневой сертификат Charles Proxy и включить SSL Proxying для интересующих хостов.

  1. Установка корневого сертификата:

    • Для вашего компьютера: Перейдите в меню Help > SSL Proxying > Install Charles Root Certificate (для macOS) или Install Charles Root Certificate on a Mobile Device or Remote Browser (для других ОС, следуйте инструкциям).
    • Для мобильных устройств:
      1. Убедитесь, что ваше мобильное устройство настроено на использование Charles как прокси. IP-адрес вашего компьютера и порт 8888.
      2. На мобильном устройстве откройте браузер и перейдите по адресу chls.pro/ssl.
      3. Загрузите и установите сертификат. Возможно, потребуется вручную доверять сертификату в настройках безопасности устройства.
        • iOS: Settings > General > About > Certificate Trust Settings (включить доверие для Charles Proxy CA).
        • Android: Процесс может варьироваться, часто требуется установить сертификат из загрузок, а затем настроить его как доверенный пользовательский сертификат.
  2. Включение SSL Proxying для хостов:

    • В Charles перейдите в меню Proxy > SSL Proxying Settings....
    • На вкладке SSL Proxying нажмите Add.
    • В полях Host и Port укажите хост и порт, трафик которого вы хотите расшифровать (например, api.example.com и 443). Вы можете использовать * для порта, если не уверены.
    • Добавьте все необходимые хосты.

Просмотр и анализ запросов/ответов

После перехвата трафика вы можете выбрать любой запрос в панели Sequence или Structure для детального просмотра:

  • Overview: Общая информация о запросе и ответе.
  • Contents: Содержимое запроса и ответа (заголовки, текст, JSON, XML, изображения). Charles автоматически форматирует JSON и XML.
  • Headers: Детальный просмотр HTTP-заголовков.
  • Query: Параметры запроса (для GET-запросов).
  • Form: Параметры формы (для POST-запросов).
// Пример отформатированного JSON-ответа в Charles
{
  "status": "success",
  "data": {
    "userId": 123,
    "username": "testuser",
    "email": "test@example.com",
    "roles": ["admin", "user"]
  },
  "timestamp": "2023-10-27T10:00:00Z"
}

Продвинутые техники отладки

Rewriting (Перезапись)

Функция Rewriting позволяет изменять запросы или ответы "на лету". Это полезно для:

  • Изменения заголовков (например, добавление авторизационного токена).
  • Изменения параметров URL.
  • Модификации тела запроса или ответа.

Пример: Изменение заголовка ответа

  1. Перейдите в меню Tools > Rewrite....
  2. Включите Enable Rewrite.
  3. Нажмите Add для создания нового набора правил.
  4. На вкладке Include добавьте хост и путь, для которого вы хотите применить правила (например, api.example.com и /users/*).
  5. На вкладке Rules нажмите Add.
  6. Выберите Type: Add Header.
  7. В Where выберите Response.
  8. Укажите Name: X-Custom-Header, Value: Debug-Mode-Active.
  9. Нажмите OK и OK. Теперь каждый ответ от api.example.com/users/* будет содержать этот заголовок.

Map Local (Картирование на локальный файл)

Map Local позволяет перенаправлять запросы на локальные файлы. Это удобно для:

  • Разработки фронтенда с использованием фиктивных (mock) данных.
  • Тестирования изменений в API без изменения бэкенда.

Пример: Подмена ответа API локальным JSON-файлом

  1. Создайте JSON-файл на вашем компьютере (например, mock_user_data.json) с желаемым содержимым.
    json { "status": "mocked", "data": { "userId": 999, "username": "mockuser", "email": "mock@example.com" } }
  2. В Charles перейдите в меню Tools > Map Local....
  3. Включите Enable Map Local.
  4. Нажмите Add.
  5. В поле Host укажите хост API (например, api.example.com).
  6. В поле Path укажите путь к ресурсу (например, /users/123).
  7. В разделе Local Path нажмите Choose... и выберите ваш mock_user_data.json.
  8. Нажмите OK и OK. Теперь запрос к api.example.com/users/123 будет возвращать содержимое вашего локального файла.

Throttling (Ограничение скорости)

Throttling позволяет имитировать различные сетевые условия, что критично для тестирования производительности и UX приложений.

  1. Перейдите в меню Proxy > Throttling Settings....
  2. Включите Enable Throttling.
  3. Выберите предустановленный пресет (например, 3G) или настройте пользовательские параметры Bandwidth (пропускная способность) и Latency (задержка).
  4. Вы можете применить throttling ко всем хостам (Throttle All Hosts) или только к определенным (Only for specified hosts).

Breakpoints (Точки останова)

Breakpoints позволяют приостановить запрос перед его отправкой или ответ перед его получением, давая возможность вручную изменить содержимое.

  1. Перейдите в меню Proxy > Breakpoint Settings....
  2. Включите Enable Breakpoints.
  3. Нажмите Add и укажите хост и путь для запроса или ответа, который вы хотите перехватить.
  4. Когда Charles перехватит соответствующий запрос/ответ, появится окно Edit Request или Edit Response.
  5. Внесите необходимые изменения и нажмите Execute для продолжения.

Фильтрация трафика

Для работы с большим объемом трафика эффективное использование фильтров является ключевым.

  • Filter field: В нижней части окна Charles есть поле Filter. Введите имя хоста или часть URL для отображения только соответствующего трафика.
  • Focus: Выберите хост в панели Structure, затем кликните правой кнопкой мыши и выберите Focus. Это скрывает весь трафик, кроме выбранного хоста.
  • Record Settings: В меню Proxy > Recording Settings... можно указать, какие хосты включать или исключать из записи трафика.
// Пример использования поля Filter
api.example.com
/users
status:200

Распространенные сценарии использования

  • Отладка API: Проверка правильности отправки запросов и получения ответов от сторонних API.
  • Тестирование мобильных приложений: Анализ сетевых запросов, выполняемых мобильными приложениями, включая работу с push-уведомлениями и фоновыми задачами.
  • Фронтенд-разработка: Мокирование API-ответов, изменение поведения сервера без изменения его кода.
  • Тестирование производительности: Имитация медленного интернета для выявления проблем с загрузкой и отзывчивостью.
  • Анализ безопасности: Проверка уязвимостей, таких как раскрытие конфиденциальных данных в незащищенных запросах.

Устранение неполадок

  • "No traffic" (Нет трафика):
    • Убедитесь, что Charles запущен и системный прокси настроен корректно.
    • Проверьте, что в Charles включена запись трафика (красная кнопка Record в панели инструментов).
    • Если используете Firefox, убедитесь, что его настройки прокси указывают на системные или на Charles вручную.
  • SSL Handshake Failed (Ошибка рукопожатия SSL):
    • Проверьте, установлен ли корневой сертификат Charles на вашем устройстве.
    • Убедитесь, что для нужного хоста включен SSL Proxying в Proxy > SSL Proxying Settings....
    • Некоторые приложения могут использовать "certificate pinning", что препятствует перехвату HTTPS-трафика даже с установленным сертификатом Charles. В таких случаях Charles может быть бессилен без модификации приложения.
  • Медленная работа Charles:
    • Отключите запись трафика (Record) когда она не нужна.
    • Используйте Recording Settings для исключения неинтересных хостов.
    • Очищайте сессии (File > Clear Session) для освобождения памяти.
Обновлено: 04.03.2026
Назад к категории

Попробуйте наши прокси

20,000+ прокси в 100+ странах мира