Charles Proxy / Fiddler | QArtel
Ко всей базеtools
Charles Proxy / Fiddler Около 4 мин чтения
Назначение
Charles Proxy и Fiddler — это прокси-серверы для перехвата и анализа HTTP/HTTPS-трафика. Они позволяют QA-инженеру видеть всё, что происходит между клиентом и сервером: заголовки, тело запросов и ответов, тайминги, SSL-рукопожатия.
Установка и базовая настройка
Charles Proxy
Скачать с официального сайта: https://www.charlesproxy.com
Установить и запустить — Charles автоматически становится системным прокси на порту 8888
Для HTTPS: Proxy → SSL Proxying Settings → Add → *:* (перехват всего)
Fiddler
Скачать Fiddler Classic (Windows) или Fiddler Everywhere (кроссплатформенный)
Запустить — слушает порт 8888 по умолчанию
Для HTTPS: Tools → Options → HTTPS → Decrypt HTTPS traffic
Перехват трафика (Traffic Intercepting)
Основные возможности
Возможность Описание Просмотр запросов URL, метод, заголовки, параметры, тело Просмотр ответов Статус-код, заголовки, тело (JSON, XML, HTML) Тайминги DNS, connect, TLS, TTFB, download Фильтрация По домену, типу контента, статус-коду
Настройка фильтров
View → Structure — дерево по хостам
View → Sequence — хронологический список
Recording Settings → Include — белый список URL
Filters tab → Hosts, Process, Content-Type
Фильтр по URL: regex:(?insx).*example\.com.*
Модификация запросов и ответов (Rewrite / Breakpoints)
Breakpoints (точки останова) Позволяют приостановить запрос/ответ и вручную изменить данные:
Правый клик на запрос → Breakpoints → запрос будет остановлен
При остановке можно изменить: URL, заголовки, тело, статус-код
Нажать Execute для отправки изменённого запроса/ответа
Применение в тестировании:
Изменить параметры запроса перед отправкой на сервер
Подменить ответ сервера (например, вернуть ошибку 500)
Проверить, как клиент обрабатывает некорректные данные
Rewrite Rules (автоматическая модификация) Charles: Tools → Rewrite
Fiddler: Rules → Customize Rules (скрипт)
Замена заголовка Authorization для тестирования без авторизации
Добавление параметра debug=true во все запросы
Замена тела ответа на фиктивные данные
Throttling (эмуляция медленной сети)
Зачем нужен throttling
Проверить поведение приложения на медленном 3G
Найти таймауты и зависания UI
Проверить корректность прогресс-баров и спиннеров
Настройка в Charles Proxy → Throttle Settings
Выбрать пресет: 3G , Edge , GPRS , DSL
Или задать вручную:
Bandwidth (пропускная способность)
Utilisation (загрузка канала)
Latency (задержка)
MTU (максимальный размер пакета)
Reliability (надёжность — % потерь)
Настройка в Fiddler Rules → Performance → Simulate Modem Speeds
Или Customize Rules → редактировать oSession["request-trickle-delay"]
SSL Proxying (перехват HTTPS)
Проблема HTTPS-трафик зашифрован. Без установки корневого сертификата прокси вы видите только CONNECT запросы.
Решение Шаг 1: Установить корневой сертификат Charles/Fiddler в доверенные
Charles: Help → SSL Proxying → Install Charles Root Certificate
Fiddler: Tools → Options → HTTPS → Actions → Export Root Certificate
Шаг 2: Добавить домены для перехвата
Charles: Proxy → SSL Proxying Settings → Add → *.api.example.com:443
Fiddler: Tools → Options → HTTPS → Decrypt HTTPS traffic
Шаг 3 (мобильные устройства):
На устройстве открыть http://charlesproxy.com/getssl
Установить профиль сертификата
(Android 7+) Добавить сертификат в системные → требуется root или network_security_config
Проверка После настройки вы должны видеть полные данные HTTPS-запросов, включая тело и заголовки.
Практические сценарии для QA
1. Тестирование обработки ошибок 1. Установить breakpoint на API-ответ
2. Изменить статус-код ответа с 200 на 500
3. Проверить, что UI корректно показывает ошибку
2. Проверка кэширования 1. Открыть приложение, загрузить данные
2. Проверить в Charles: должны быть запросы с Cache-Control
3. Повторить — при кэшировании запросов на сервер не будет
3. Тестирование на медленной сети 1. Включить Throttle → 3G
2. Выполнить типичный пользовательский сценарий
3. Замерить время загрузки, проверить UI
4. Поиск утечек данных 1. Включить запись всех запросов
2. Выполнить действия в приложении
3. Поискать в запросах: токены, пароли, PII
Charles vs Fiddler: сравнение Критерий Charles Fiddler Classic Платформа Windows, Mac, Linux Windows (Classic), кроссплатформа (Everywhere) Цена Платный ($50) Бесплатный Интерфейс Проще Богаче, но сложнее Скрипты Нет встроенного JScript / C# Мобильные Отличная поддержка Хорошая поддержка Протоколы HTTP, HTTPS HTTP, HTTPS, WebSocket
Альтернативы
mitmproxy —open-source, Python-based, CLI + Web UI
Burp Suite — популярен в безопасности, есть Community Edition
Wireshark — сетевой анализатор (ниже уровня HTTP)
DevTools (Chrome/Firefox) — встроенный Network tab
Советы
Не забывайте выключать прокси после использования — иначе браузер не будет работать
Сохраняйте сессии (File → Save) для документирования багов
Используйте Sequence view для хронологического анализа
Bookmark запросы для быстрого доступа к важным эндпоинтам