TL;DR

  • Charles Proxy перехватывает HTTP/HTTPS трафик для инспекции и модификации
  • SSL Proxying требует установки сертификата на устройство (мобильное/браузер)
  • Breakpoints позволяют модифицировать запросы/ответы в реальном времени
  • Map Local/Remote перенаправляет запросы на локальные файлы или другие серверы
  • Throttling симулирует медленные сети для тестирования производительности

Идеально для: Мобильных тестировщиков, API-разработчиков, отладки production-проблем Пропусти, если: Нужна только простая инспекция запросов (хватит DevTools браузера) Время чтения: 14 минут

Мобильное приложение падает, но только на медленных сетях. API возвращает разные данные в production и staging. Нужно протестировать обработку ошибок, но нельзя заставить сервер вернуть ошибки.

Charles Proxy находится между приложением и интернетом. Он видит всё, позволяет изменять что угодно. Отладка сети становится возможной вместо догадок.

Этот туториал охватывает Charles от установки до продвинутых техник.

Что такое Charles Proxy?

Charles Proxy — это HTTP proxy и монитор. Он захватывает сетевой трафик от любого приложения, настроенного на его использование, отображая запросы и ответы для инспекции.

Что делает Charles:

  • Перехватывает трафик — видит каждый запрос приложения
  • Инспектирует SSL/TLS — расшифровывает HTTPS для отладки
  • Модифицирует запросы — меняет headers, body, URL перед отправкой
  • Мокает ответы — возвращает фейковые данные без изменений сервера
  • Троттлит bandwidth — симулирует медленные/нестабильные сети
  • Записывает сессии — сохраняет и воспроизводит трафик

Установка и настройка

Установка

macOS:

brew install --cask charles

SSL Proxying

По умолчанию Charles не может читать HTTPS. Включи SSL Proxying:

  1. Proxy → SSL Proxying Settings
  2. Включи Enable SSL Proxying
  3. Добавь хосты: * для всех или конкретные как api.example.com
  4. Установи Charles Root Certificate:
    • macOS: Help → SSL Proxying → Install Charles Root Certificate
    • Доверь в Keychain Access (Always Trust)

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

iOS

  1. Подключи iPhone к той же WiFi что и компьютер
  2. Найди IP компьютера: Help → Local IP Address
  3. На iPhone: Настройки → WiFi → (i) рядом с сетью
  4. Настроить Proxy → Вручную
    • Сервер: IP компьютера
    • Порт: 8888
  5. Установи SSL-сертификат:
    • Открой Safari, перейди на chls.pro/ssl
    • Скачай и установи профиль
    • Настройки → Основные → Об этом устройстве → Доверие сертификатов

Android

  1. Подключись к той же WiFi
  2. Настройки WiFi → Изменить сеть → Дополнительно
  3. Proxy: Вручную
    • Имя хоста: IP компьютера
    • Порт: 8888
  4. Установи сертификат с chls.pro/ssl

Модификация запросов

Breakpoints

Останавливай запросы для ручной модификации:

  1. ПКМ на запросе → Breakpoints
  2. Когда запрос попадает на breakpoint:
    • Модифицируй URL, headers, body
    • Нажми Execute для продолжения

Rewrite Tool

Автоматические модификации:

  1. Tools → Rewrite
  2. Настрой правило:
    • Location: api.example.com
    • Type: Modify Header / Body / URL
    • Match и Replace значения

Пример — добавить auth header:

Type: Add Header
Where: Request
Header Name: Authorization
Header Value: Bearer test-token-123

Мокание ответов

Map Local

Возвращай локальный файл вместо ответа сервера:

  1. ПКМ на запросе → Map Local
  2. Выбери локальный файл (JSON, HTML)
  3. Все совпадающие запросы вернут твой файл
// mock-user.json
{
    "id": 1,
    "name": "Test User",
    "role": "admin"
}

Map Remote

Перенаправляй запросы на другой сервер:

  1. Tools → Map Remote
  2. Map from: https://api.example.com/*
  3. Map to: https://staging.example.com/*

Троттлинг сети

  1. Proxy → Throttle Settings
  2. Включи Throttling
  3. Выбери пресет или настрой:
ПресетBandwidthLatency
56k Modem48 kbps200ms
3G780 kbps200ms
4G8 Mbps50ms

Типичные сценарии тестирования

Тестирование обработки ошибок

// error-500.json
{
    "error": "Internal Server Error",
    "code": 500
}

Тестирование таймаутов

  1. Включи Throttling
  2. Установи очень высокую latency (30000ms)
  3. Наблюдай обработку таймаута

Тестирование пустых состояний

// empty-list.json
{
    "items": [],
    "total": 0
}

Charles Proxy с помощью ИИ

Что ИИ делает хорошо:

  • Объяснять HTTP статус-коды и headers
  • Генерировать mock JSON-ответы
  • Конвертировать cURL в код
  • Анализировать паттерны трафика

Что требует людей:

  • Определять какой трафик важен
  • Понимать бизнес-контекст данных
  • Последствия для безопасности
  • Решения о тестировании на реальных устройствах

FAQ

Что такое Charles Proxy?

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

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

Charles Proxy предлагает 30-дневный бесплатный триал с 30-минутными лимитами сессий. После триала лицензия стоит $50 за пользователя (единоразовая покупка). Бесплатные альтернативы: mitmproxy (командная строка, open source), Proxyman (macOS native), и DevTools браузера для базовой инспекции.

Как использовать Charles с мобильными приложениями?

Настрой WiFi proxy на мобильном устройстве на IP компьютера и порт Charles (8888). Оба устройства должны быть в одной сети. Для HTTPS установи SSL-сертификат Charles на устройство. Android 7+ приложениям может потребоваться дополнительная конфигурация для доверия пользовательским сертификатам.

Может ли Charles модифицировать API-ответы?

Да. Charles предлагает несколько вариантов: Breakpoints для редактирования в реальном времени, Map Local для возврата локальных файлов, Map Remote для перенаправления на другие серверы и Rewrite правила для автоматической модификации headers/body.

Официальные ресурсы

Смотрите также