Ответ
Charles Proxy — это кроссплатформенное программное обеспечение (прокси-сервер), которое выступает в роли промежуточного узла (man-in-the-middle) для перехвата, анализа и модификации HTTP/HTTPS-трафика между клиентским приложением (браузер, мобильное приложение) и сервером. Это незаменимый инструмент для тестирования, отладки и анализа работы с сетью.
Основные сценарии использования:
- Отладка API: просмотр запросов и ответов в удобном формате (JSON, XML).
- Тестирование: модификация запросов/ответов «на лету» для проверки поведения приложения.
- Производительность: анализ времени загрузки ресурсов, эмуляция медленных сетей.
- Безопасность: проверка передаваемых данных на наличие чувствительной информации.
Ключевые возможности:
| Функция | Описание |
|---|---|
| SSL Proxying | Расшифровка HTTPS-трафика для его просмотра (требует установки сертификата Charles на устройство). |
| Breakpoints | Остановка запроса или ответа для их модификации перед отправкой. Полезно для тестирования обработки ошибок. |
| Throttling | Имитация различных сетевых условий (3G, медленный Wi-Fi) для тестирования при низкой скорости. |
| Map Local / Remote | Подмена ответа от сервера на содержимое локального файла (Map Local) или перенаправление запроса на другой URL (Map Remote). |
| Repeat / Compose | Повторение выбранного запроса (для воспроизведения сценария) или создание нового запроса вручную. |
| Rewrite | Автоматическое изменение запросов и ответов по заданным правилам (например, подмена заголовков). |
Базовый пример настройки и перехвата:
- Запустите Charles (по умолчанию слушает порт
8888). - Настройте ваше устройство или браузер использовать Charles как HTTP-прокси.
- Установите и доверьте корневой сертификат Charles на устройстве для расшифровки HTTPS.
- Весь сетевой трафик начнёт отображаться в интерфейсе.
Пример перехваченного запроса в Charles:
GET /api/v1/products?category=books HTTP/1.1
Host: api.example.com
Authorization: Bearer eyJhbGciOiJ...
User-Agent: Mozilla/5.0
Accept: application/json