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:
- Proxy → SSL Proxying Settings
- Включи Enable SSL Proxying
- Добавь хосты:
*для всех или конкретные какapi.example.com - Установи Charles Root Certificate:
- macOS: Help → SSL Proxying → Install Charles Root Certificate
- Доверь в Keychain Access (Always Trust)
Настройка мобильных устройств
iOS
- Подключи iPhone к той же WiFi что и компьютер
- Найди IP компьютера: Help → Local IP Address
- На iPhone: Настройки → WiFi → (i) рядом с сетью
- Настроить Proxy → Вручную
- Сервер: IP компьютера
- Порт: 8888
- Установи SSL-сертификат:
- Открой Safari, перейди на
chls.pro/ssl - Скачай и установи профиль
- Настройки → Основные → Об этом устройстве → Доверие сертификатов
- Открой Safari, перейди на
Android
- Подключись к той же WiFi
- Настройки WiFi → Изменить сеть → Дополнительно
- Proxy: Вручную
- Имя хоста: IP компьютера
- Порт: 8888
- Установи сертификат с
chls.pro/ssl
Модификация запросов
Breakpoints
Останавливай запросы для ручной модификации:
- ПКМ на запросе → Breakpoints
- Когда запрос попадает на breakpoint:
- Модифицируй URL, headers, body
- Нажми Execute для продолжения
Rewrite Tool
Автоматические модификации:
- Tools → Rewrite
- Настрой правило:
- Location:
api.example.com - Type: Modify Header / Body / URL
- Match и Replace значения
- Location:
Пример — добавить auth header:
Type: Add Header
Where: Request
Header Name: Authorization
Header Value: Bearer test-token-123
Мокание ответов
Map Local
Возвращай локальный файл вместо ответа сервера:
- ПКМ на запросе → Map Local
- Выбери локальный файл (JSON, HTML)
- Все совпадающие запросы вернут твой файл
// mock-user.json
{
"id": 1,
"name": "Test User",
"role": "admin"
}
Map Remote
Перенаправляй запросы на другой сервер:
- Tools → Map Remote
- Map from:
https://api.example.com/* - Map to:
https://staging.example.com/*
Троттлинг сети
- Proxy → Throttle Settings
- Включи Throttling
- Выбери пресет или настрой:
| Пресет | Bandwidth | Latency |
|---|---|---|
| 56k Modem | 48 kbps | 200ms |
| 3G | 780 kbps | 200ms |
| 4G | 8 Mbps | 50ms |
Типичные сценарии тестирования
Тестирование обработки ошибок
// error-500.json
{
"error": "Internal Server Error",
"code": 500
}
Тестирование таймаутов
- Включи Throttling
- Установи очень высокую latency (30000ms)
- Наблюдай обработку таймаута
Тестирование пустых состояний
// 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.
Официальные ресурсы
Смотрите также
- API Testing Tutorial - Основы тестирования API
- Appium Tutorial - Автоматизация мобильного тестирования
- Postman Tutorial - Инструмент тестирования API
- API Security Testing - Основы тестирования безопасности
