Fiddler является бесплатным веб-отладочным прокси-сервером для Windows, позволяющим перехватывать, просматривать и модифицировать HTTP/HTTPS трафик между клиентом и сервером. Инструмент позиционируется как посредник (man-in-the-middle proxy), который перехватывает весь веб-трафик, проходящий через него, предоставляя детализированный анализ каждого запроса и ответа.
Что такое Fiddler?
Fiddler работает как локальный прокси-сервер, по умолчанию прослушивающий порт 8888. При его запуске он автоматически настраивает системные прокси-настройки Windows, направляя весь HTTP/HTTPS трафик через себя. Это позволяет разработчикам, тестировщикам и аналитикам просматривать, анализировать и модифицировать сетевые взаимодействия, происходящие на их машине.
Основные функции Fiddler включают:
* Перехват и просмотр HTTP/HTTPS запросов и ответов.
* Дешифрование HTTPS-трафика.
* Модификация запросов и ответов "на лету".
* Имитация ответов сервера.
* Анализ производительности веб-приложений.
* Фильтрация трафика по различным критериям.
Установка и базовый запуск
Fiddler Classic доступен для загрузки с официального сайта Telerik. Процесс установки стандартный для Windows-приложений.
После установки и первого запуска Fiddler автоматически конфигурирует системные прокси-настройки. Все браузеры и приложения, использующие системный прокси, начнут направлять свой трафик через Fiddler.
Интерфейс Fiddler состоит из нескольких ключевых областей:
* Session List (слева): Список всех перехваченных HTTP/HTTPS сессий. Каждая строка представляет собой отдельный запрос и соответствующий ему ответ.
* Inspectors (справа, сверху): Вкладки для детального анализа выбранной сессии (запрос и ответ).
* QuickExec (справа, снизу): Командная строка для выполнения быстрых команд и фильтрации.
* Filters (справа, сверху, отдельная вкладка): Панель для настройки правил фильтрации трафика.
* AutoResponder (справа, сверху, отдельная вкладка): Инструмент для имитации ответов сервера или перенаправления запросов.
Перехват HTTPS-трафика
Для анализа современного веб-трафика, который преимущественно использует HTTPS, Fiddler должен выступать в роли доверенного центра сертификации (CA) для вашей системы.
Настройка дешифрования HTTPS
- Откройте Tools > Options... > HTTPS.
- Установите флажок "Decrypt HTTPS traffic".
- Fiddler предложит установить свой корневой сертификат в хранилище доверенных сертификатов Windows. Подтвердите установку.
- Перезапустите Fiddler и, возможно, браузеры/приложения для применения изменений.
После этой настройки Fiddler будет генерировать поддельные сертификаты для каждого HTTPS-соединения, подписывая их своим корневым сертификатом. Ваша система будет доверять этим сертификатам, позволяя Fiddler дешифровать и просматривать зашифрованный трафик.
Возможные проблемы и решения
- Предупреждения безопасности в браузере: Если браузер продолжает выдавать предупреждения о недоверенном соединении, убедитесь, что сертификат Fiddler установлен корректно в хранилище сертификатов браузера (некоторые браузеры, например Firefox, имеют собственное хранилище).
- Certificate Pinning: Некоторые приложения используют "certificate pinning", чтобы предотвратить MITM-атаки, включая те, что выполняются Fiddler. В таких случаях приложение может отказаться устанавливать соединение. Обход certificate pinning требует более сложных методов, выходящих за рамки базового использования Fiddler.
- VPN/другие прокси: Fiddler может конфликтовать с другими VPN-клиентами или прокси-серверами, которые также изменяют сетевые настройки.
Анализ запросов и ответов (Inspectors)
Вкладка "Inspectors" предоставляет детализированный просмотр выбранной сессии. Она разделена на две части: "Request" (запрос) и "Response" (ответ).
Основные вкладки инспекторов
- Headers: Отображает HTTP-заголовки запроса и ответа. Полезно для проверки
User-Agent,Cookies,Content-Type,Cache-Controlи других метаданных. - TextView: Представляет тело запроса/ответа в виде обычного текста. Часто используется для просмотра HTML, CSS, JavaScript или XML/JSON, если они не содержат сложных структур.
- WebView: Рендерит HTML-ответ в упрощенном браузере, показывая, как страница будет выглядеть.
- Raw: Отображает необработанные байты запроса или ответа, включая заголовки и тело, как они были отправлены по сети.
- JSON/XML: Автоматически форматирует и подсвечивает синтаксис для JSON- и XML-данных, делая их легкочитаемыми.
- Auth: Если запрос содержит заголовки аутентификации (например,
Authorization), эта вкладка их декодирует и отображает. - Cookies: Показывает куки, отправленные с запросом (
Cookie) и установленные сервером (Set-Cookie). - Timelines: Визуализирует временные задержки для каждого этапа запроса (DNS-разрешение, соединение, отправка запроса, получение первого байта, получение последнего байта). Полезно для анализа производительности.
Модификация трафика
Fiddler предоставляет мощные инструменты для изменения запросов и ответов, что критически важно для отладки и тестирования.
AutoResponder
Вкладка AutoResponder позволяет перехватывать запросы и отвечать на них заранее определенным содержимым или перенаправлять их.
Примеры использования AutoResponder:
* Имитация API-ответов: Разработка фронтенда без работающего бэкенда.
1. Перейдите на вкладку "AutoResponder".
2. Установите флажок "Enable rules" и "Unmatched requests passthrough".
3. Нажмите "Add Rule".
4. В поле "Rule Editor" введите URL-шаблон (например, exact:https://api.example.com/users).
5. В поле "Action" выберите "Find a file..." и укажите локальный JSON-файл с имитированным ответом.
6. Нажмите "Save". Теперь запросы к https://api.example.com/users будут получать данные из вашего локального файла.
* Блокировка ресурсов: Предотвращение загрузки определенных скриптов или рекламных баннеров.
1. Создайте правило с URL-шаблоном (например, regex:.*\.google-analytics\.com/ga\.js).
2. В "Action" выберите *drop.
* Перенаправление на локальные версии файлов: Тестирование изменений в JavaScript или CSS без развертывания на сервере.
1. Создайте правило с URL-шаблоном (например, exact:https://www.example.com/assets/app.js).
2. В "Action" выберите "Find a file..." и укажите путь к вашей локальной версии app.js.
FiddlerScript
FiddlerScript предоставляет возможность писать кастомные правила на C# для программной обработки трафика. Доступ к FiddlerScript осуществляется через Rules > Customize Rules... (откроется файл CustomRules.js в вашем текстовом редакторе).
Основные функции для перехвата:
* OnBeforeRequest(oSession: Session): Вызывается перед отправкой запроса на сервер.
* OnBeforeResponse(oSession: Session): Вызывается после получения ответа от сервера, но до его отправки клиенту.
Примеры FiddlerScript:
* Изменение заголовка запроса:
csharp
static function OnBeforeRequest(oSession: Session) {
if (oSession.url.Contains("api.example.com")) {
oSession.oRequest.headers.Add("X-Custom-Header", "Fiddler-Test");
}
}
* Модификация тела ответа:
csharp
static function OnBeforeResponse(oSession: Session) {
if (oSession.url.Contains("api.example.com/data") && oSession.oResponse.headers.ExistsAndContains("Content-Type", "application/json")) {
oSession.utilDecodeResponse(); // Декодировать gzip/deflate, если применимо
var sBody = oSession.GetResponseBodyAsString();
sBody = sBody.Replace("oldValue", "newValue");
oSession.utilSetResponseBody(sBody);
}
}
После внесения изменений в CustomRules.js сохраните файл. Fiddler автоматически перезагрузит скрипт.
Фильтрация трафика
Объем трафика может быть значительным. Fiddler предлагает несколько способов фильтрации для фокусировки на релевантных сессиях.
Вкладка Filters
Вкладка Filters (рядом с Inspectors) позволяет настроить мощные правила фильтрации.
- Hosts:
Show only if URL contains: Отображает только сессии, URL которых содержат указанную строку.Hide if URL contains: Скрывает сессии, URL которых содержат указанную строку.Show only for the following Hosts: Отображает трафик только для перечисленных хостов.
- Client Process:
Show only traffic from: Позволяет выбрать конкретные процессы (браузеры, приложения), трафик которых будет отображаться.
- Response Status: Фильтрация по кодам состояния HTTP (например, только
4xxили5xxошибки). - Breakpoints: Позволяет автоматически приостанавливать трафик при совпадении с определенными критериями, давая возможность модифицировать его перед отправкой или получением.
QuickExec команды
Командная строка QuickExec (внизу справа) позволяет быстро применять фильтры и выполнять другие действия.
select <mime-type>: Выбрать все сессии с указанным MIME-типом.- Пример:
select image(выбрать все изображения),select json(выбрать все JSON-ответы).
- Пример:
select <status-code>: Выбрать все сессии с указанным кодом состояния.- Пример:
select 404.
- Пример:
bpu <url-string>: Установить breakpoint перед запросом, если URL содержитurl-string.bpa <url-string>: Установить breakpoint после ответа, если URL содержитurl-string.cls: Очистить список сессий.quit: Закрыть Fiddler.
Анализ производительности
Fiddler предоставляет несколько инструментов для оценки производительности веб-приложений.
Вкладка Statistics
После выбора нескольких сессий (или всех) во вкладке Statistics отображаются агрегированные данные:
* Общее количество запросов.
* Общий размер переданных данных (запросы + ответы).
* Время загрузки страницы (Page Load Time).
* Среднее время ответа.
* Разбивка по типам содержимого (изображения, скрипты, CSS).
Вкладка Timelines
На вкладке Timelines отображается водопадная диаграмма (waterfall chart) для выбранных сессий, визуализирующая последовательность запросов и время, затраченное на каждый этап (DNS, Connect, Request, Response). Это помогает идентифицировать блокирующие ресурсы, медленные запросы и другие узкие места производительности.
Интеграция с другими прокси-сервисами
Fiddler может быть настроен для работы в связке с другими прокси-серверами, выступая в роли апстрим-прокси. Это полезно, например, при использовании корпоративного прокси или прокси-сервиса для доступа к гео-ограниченному контенту.
Настройка апстрим-прокси
- Откройте Tools > Options... > Gateway.
- Выберите "Use a custom proxy".
- Введите адрес и порт апстрим-прокси (например,
http=proxy.example.com:8080;https=proxy.example.com:8080). - Если апстрим-прокси требует аутентификации, укажите соответствующие учетные данные.
При такой конфигурации Fiddler будет перехватывать трафик от клиента, обрабатывать его (например, дешифровать HTTPS), а затем перенаправлять через указанный апстрим-прокси.
Расширения Fiddler
Fiddler поддерживает расширения, которые могут добавлять новые функции или инспекторы. Некоторые популярные расширения включают:
* SyntaxHighlighting: Улучшенное форматирование для различных типов данных.
* SAZ (Session Archive Zip): Формат для сохранения и обмена сессиями Fiddler.
* Waterfall: Расширенный анализ производительности.
Расширения можно найти на сайте Telerik или установить через Tools > Fiddler Add-ons.
Fiddler остается мощным и гибким инструментом для анализа и отладки веб-трафика на платформе Windows, предоставляя глубокий контроль над сетевыми взаимодействиями.