Fiddler 4 как пользоваться

12 декабря 2014 г.

Fiddler был написан Эриком Лоуренсом (Eric Lawrence) в то время когда он работал в Microsoft, в группе по разработке IE. В 2012 году Fiddler был приобретен компанией Telerik, Эрик так же перешел в Telerik для продолжения работы над своим продуктом.

Fiddler представляет из себя прокси, который захватывает весь HTTP и HTTPS трафик, позволяя его анализировать и даже изменять.

Конечно, если и другие средства анализа, например для более глубокого анализа можно использовать Microsoft Network Monitor:

С другой стороны анализ запросов Web приложений можно провести прямо в браузере, используя Developer Tools, которые обычно доступны по клавише F12:

Fiddler похож на "золотую середину". С его помощью можно:

  • исследовать проблемы;
  • анализировать производительность;
  • подменять запросы и ответы;
  • тестировать безопасность;
  • и т.д.

Для начала работы с Fiddler достаточно его установить и запустить, после этого запросы приложений, поддерживающие работу через прокси, начнут идти через него.

Если на вашем компьютере работает сервер и по какой-то причине запросы к localhost или 127.0.0.1 не идут через прокси, вы можете использовать виртуальное имя ipv4.fiddler (ipv6.fiddler).

Статистика

На вкладке Timeline можно увидеть как запросы выполнялись во времени.

В списке сессий сразу можно видеть пиктограмму типа данных, статус, адрес, размер и другую информацию.

Чтобы быстро увидеть сессии, на выполнение которых ушло много времени, можно использовать фильтр: на вкладке Filters необходимо отметить пункт Use Filters, и в блоке Response Type and Size отметить Time HeatMap. Для того чтобы применить настройки фильтра в верхней части вкладки необходимо нажать на кнопку Action и выбрать Run Filterset now. После применения фильтра некоторые сессии в списке могут поменять фон в зависимости от затраченного времени:

(запрос к http://maps.yandex.ru/)

Отправка запросов

Еще одной функцией Fiddler является возможность отправлять запросы, например для отладки серверного метода или его проверки. Вся работа связанная с отправкой запроса выполняется на вкладке Composer. Сюда можно перетащить сессию из списка, модифицировать запрос и отправить его на сервер нажав кнопку Execute.

Чтобы просто повторно отправить запрос можно выбрать его в списке и нажать R, или выбрать пункт контекстного меню Replay (там же есть вариант изменить запрос перед отправкой).

Для примера отправим запрос к методу groups.getById из API сайта vk.com. Для этого я выполнил этот запрос из браузера, в окне Fiddler перетащил его на вкладку Composer, изменил параметр и выполнил:

Сразу открылась вкладка Inspectors, в нижней части которой я увидел ответ в формате JSON.

Еще один вариант использования этой возможности – отправка различных значений в заголовке Accept-Language, для того чтобы посмотреть результаты на разных языках, но результат придется смотреть на вкладке Inspectors что в данном случае может быть не так удобно как в браузере.

Для примера попробую загрузить vk.com с указанием другой локализации:

Как видно на скриншоте браузер в заголовке Accept-Language отправил ru-RU, но это значение было заменено на en с помощью фильтра Fiddler. В результате страница вернулась на английском языке.

Так же фильтр может отобрать только сессии содержащие определенный URL или запросы отправленные определенным процессом, скрыть ответы с определенным статусом (2xx, 3xx и т.д.), помечать запросы (ответы) содержащие определенный заголовок, заблокировать файлы по типу или размеру и т.п.

Кстати, набор условий для фильтрации можно сохранять и загружать, используя пункты Save Filterset и Load Filterset у кнопки Actions в верхней части вкладки.

Читайте также:  Рэмо двина dx 5v usb отзывы

Breakpoints

  • переключателем в строке состояния;
  • через меню Rules – Automatic Breakpoints;
  • с помощью клавиш F11, Alt+F11 и Shift+F11 для выключения.

Когда Fiddler останавливает выполнение запроса или отправку ответа – есть возможность внести в него изменения:

AutoResponder

Раз уж Fiddler – это прокси, то функция отправки ответа клиенту без фактического обращения к серверу вполне ожидаема. Все что нужно сделать – это создать правила и действия для них на вкладке AutoResponder. Правило представляет из себя строку для поиска или регулярное выражение, а в качестве действия может быть возврат определенного статуса, файла, перенаправление на другой адрес и т.д. Таким образом можно даже тестировать запросы к несуществующему или недоступному серверу или адресу:

Проверка запроса к несуществующему адресу:

Обратите внимание на включенные опции Enable automatic responses и Unmatched requests passthrough – первая включает автоматическую отправку ответов по созданным правилам, вторая пропускает все остальные запросы непосредственно к серверу.

Все созданные правила для AutoResponder можно сохранить в файл *.farx.

Перехват запросов от других устройств

Возможно вам требуется просмотреть трафик от вашего телефона или планшета в Fiddler. Первое что необходимо сделать – это в Fiddler выбрать пункт меню Tools – Fiddler Options. в открывшемся окне перейти на вкладку Connections и включить опцию Allow remote computers to connect.

Уже после этого если вы откроете браузер в телефоне или планшете и введете :8888 (порт по умолчанию) – запрос отобразиться в списке сессий.

Но такой вариант не удобен для просмотра запросов из приложений, поэтому необходимо сделать так чтобы все запросы шли через нужный нам прокси. Для Android есть приложения для глобальной настройки прокси (требуется root). Я использую ProxyDroid. После изменения настроек прокси, запускаем приложение, например Yandex.Metro и видим запросы и ответы от приложения:

Текущий сайт https://loadtestweb.wordpress.com/ доступен по протоколу HTTPS. И задания предполагают работу с HTTP-запросами, которые удобно изучать используя Fiddler 4.

Ниже описано, как его настроить и использовать на примере следующего окружения:

  • Windows 7 x64 (операционная система);
  • .NET Framework 4 (предполагается, что .NET 4 установлен в системе, нужен для работы Fiddler 4);
  • Fiddler 4 (прокси сервер);
  • Mozilla Firefox (браузер, который будет работать через прокси-сервер).

А в завершении статьи описано, что делать, если после настройки остались ошибки подключения. Описано как удалить из кеша браузера информацию об оригинальном сертификате.

Дистрибутив Fiddler 4 можно скачать по ссылке:

Инструкция по настройке Fiddler + Firefox (простая, понятная):

После установки можно сделать следующие настройки:

  • сделать прокси-сервис несистемным;
  • включить расшифровку HTTPS;
  • отключить проверку обновлений.

Сделать прокси-сервис несистемным

Запустить F >Capturing .

Открыть меню настроек из главного меню и на вкладке «Connection» отжать кнопку Act as system proxy on startup .

Включить расшировку HTTPS

Открыть меню настроек из главного меню и на вкладке «HTTPS» нажать кнопки:

  • Capture HTTPS CONNECTs;
  • Decrypt HTTPS traffic.

Также кликнуть по ссылке Protocols и вписать в список протоколов все популярные протоколы:

как показано выше

Отдельный профиль для работы через Fiddler

Для перехвата трафика и экспериментов желательно иметь браузер, в котором не жалко очистить кеш и изменить настройки. Удобно создать новый отдельный профиль Mozilla Firefox.

Для этого нужно выполнить три шага:

  1. Закрыть открытый браузер Mozilla (это важно)
  2. Создать пустой каталог для нового профиля: C: empprofile
  3. Создать ярлык или bat-файл c командой запуска Mozilla:

Можно запускать браузер с чистым профилем.

В linux командный файл для работы с временным профилем может выглядеть так:

Настройка эталонного профиля

Работа с временным профилем — копией эталонного:

Примечание: если не использовать отдельный профиль, а настроить текущий профиль Mozilla на работу через Fiddler, и уже ранее в этом профиле был открыт исследуемый сайт по https, то браузер не даст расшифровать соединение и использовать Fiddler.

Это работа механизма защиты от расшифровки соединения. Браузер знает, что ранее для https использовался корректный ключ. И вдруг появился новый ключ — ключ Fiddler. Никаких возможностей добавить исключение не будет.

Читайте также:  Nvidia geforce fx 5700le

Поэтому важно настроить новый чистый профиль. Плюс в нём будет чистый кеш. Значит все запросы будут отправлены браузером. Что важно при эмуляции нагрузки.

Загрузка сертификата Fiddler в Mozilla Firefox

Запустить Fiddler и выгрузить сертификат в файл на рабочий стол.

Запустить Mozilla Firefox открыть настройки, расширенные, сертификаты и импортировать сертификат Fiddler 4 в список доверенных. Выбрав сертификат с рабочего стола.

В качестве разрешения — разрешить идентификацию веб-сайтов.

Настройка работы Mozilla Firefox через прокси сервер

Запустить Fiddler, посмотреть на каком порту он слушает соединения.

Установить в Mozilla Firefox работу через прокси-сервер на этом же порту, в большинстве случаев это будет localhost и порт 8888.

Теперь при работе Mozilla Firefox не отображаются ошибки соединения, связанные с сертификатом. А пишется, что соединение зашифровано и корневой сертификат называется «DO_NOT_TRUST», это сертификат Fiddler 4.

А в Fiddler 4 видны все запросы и ответы. Их можно просматривать на вкладке «Inspectors».

Для удобства работы можно включить правила (Главное меню / Rules):

  • Hide CONNECTs;
  • Remove All Encodings.

Hide CONNECTs уберёт из отображения события «рукопожатия» при установке https-соединения.

Remove All Encodings полезно если сервер отдаёт ответы в сжатом виде (gzip encoding). А это почти всегда так для современного веба. И чтобы поиск по ответам сервера работал корректно нужно сразу распаковывать ответы сервера.

А поиск по ответам очень важен — для корреляции параметров в запросах и ответах. Именно ради поиска мы и выбрали Fiddler 4. Просто просматривать запросы и ответы можно бы было в консоли браузера. А полнотекстовый поиск есть только в Fiddler, других инструментов с подобной функциональностью ещё не встречал.

Неподдерживаемые протоколы

Fiddler (версия для Linux во всяком случае) пока не может работать с TLS 1.3 и SPDY. Поэтому чтобы перехватывать трафик от браузера Firefox, непосредственно работая в нём, стоит отключить TLS 1.3 и SPDY в профиле браузера, используемого для перехвата трафика. Они в частности используются на сайте https://loadtestweb.info/

Отключение — перейти в about:config

Ввести в строку фильтра

Далее отключить настройки

  • network.http.spdy.enabled
  • network.http.spdy.allow-push
  • network.http.spdy.enabled.http2
  • network.http.spdy.enabled.deps
  • network.http.spdy.websockets

Ввести строку фильтра

security.tls.version.max по умолчанию значение 4, если в Fiddler была предварительно включена поддержка tls1.1 и tls1.2 (смотри выше как), то версию надо понизить до 3.

Выполняете действие, но не видно никаких логов в Fiddler

Возможно в Mozilla Firefox не настроен прокси-сервер.

Возможно настройки прокси-сервера была выполнены только для протокола http, а для протокола https не были выставлены. Или не была поставлена галочка:

  • [v] Use this proxy server for all protokols

Возможно в Mozilla Firefox прокси-сервер настроен, но в Fiddler не включена расшифровка https. В таком случае почти никакой ценной информации не будет видно.

Возможно в Fiddler включена фильтрация по процессам — при настройке по умолчанию в нижней панели Fiddler должно быть написано:

Если тут написано Internet Explorer или что-то, что не соответствует вашему процессу, то рекомендую покликать на эту надпись и добиться того, чтобы фильтр был в состоянии: All processes

Возможно на вкладке Filters (справа одна из вкладок) была настроена фильтрация запросов. В таком случае название вкладки будет с включенной галочкой:

Перейдите на вкладку фильтров и отключите фильтры.

Если браузере видна ошибка, что соединение не защищено

И при этом есть возможность добавить исключение для сайта

Значит был пропущен или не полностью выполнен шаг добавления сертификата Fiddler в доверенные сертификаты браузера.

  • настройки Mozilla Firefox были выполнены для отдельного профиля (как рекомендуется в статье), а сейчас запущен профиль по умолчанию, или наоборот
  • сертификат Fiddler был добавлен в доверенные сертификаты Mozilla, но при этом не была проставлена галочка со степенью доверия: Этот сертификат может служить для идентификации веб-сайтов
  • вы настроили работу Mozilla Firefox через Fiddler, и сертификат указали, но потом в Fiddler сгенерировали новый сертификат
Читайте также:  Вк страница чужом компьютере войти

Нет возможности добавить исключение для сайта

Ошибка с HSTS (HTTP Strict Transport Security).

Значит в текущем профиле браузера уже была осуществлена работа с сайтом по https, и при этом использовался отличный от текущего сертификата Fiddler сертификат:

  • прежний сертификат Fiddler;
  • сертификат настоящего удостоверяющего центра (ещё до настройки работы браузера через Fiddler).

Это браузер видит неожданную смену сертификата издателя, чует атаку, и блокирует подключение без возможности добавить исключение. Защищает.

В этом случае можно выбрать три варианта:

Вариант 1. Профиль

Перейти на новый профиль браузера. Настроить его по новой.

Вариант 2. Забыть сайт (в текущем профиле)

Открыть историю, например, по комбинации Ctrl + Shift + H. Кликнуть правой кнопкой мыши на сайт, к которому невозможно подключиться. И выбрать последний пункт «Забыть этот сайт» или «Forget About This Site».

Потеряется вся история работы с сайтом. Куки, сессии.

Вариант 3. Забыть вообще всё (очистить профиль)

Или очистить текущий профиль от всего (если не жалко) — Ctrl + Alt + Del в адресной строке.

Использовано изображение с сайта http://toposrednik.ru .

Если остались вопросы, оставляйте комментарии. Или задавайте вопросы почтой, адрес в разделе Контакты.

На Хабре уже упоминалась данная тулза, но как-то в контексте других тем.

What is Fiddler?
Fiddler is a Web Debugging Proxy which logs all HTTP(S) traffic between your computer and the Internet. Fiddler allows you to inspect traffic, set breakpoints, and «fiddle» with incoming or outgoing data. Fiddler includes a powerful event-based scripting subsystem, and can be extended using any .NET language.

Fiddler is freeware and can debug traffic from virtually any application that supports a proxy, including Internet Explorer, Google Chrome, Apple Safari, Mozilla Firefox, Opera, and thousands more. You can also debug traffic from popular devices like Windows Phone, iPod/iPad, and others.

To debug applications you’ve written in Java, .NET, or using WinHTTP, see this page.

Итак Fiddler — прокси, который работает с трафиком между вашим компьютером и удаленным сервером, и позволяет просматривать и менять его.

применение первое:
Собственно раз уж это прокси — то мы можем увидеть все запросы их заголовки, cookie, параметры передаваемые на сервер.
Когда-то, мне довольно часто задавали вопрос back-end разработчики — чем можно посмотреть параметры передаваемые на сервер при отправке формы. Тогда я через консоль firebug довешивал onsubmit на форму, делал serialize и посылал при необходимости форму аяксом. Теперь зная про фидлер — можно не городить костыли.
Кроме того нажав F11 можем отлаживать запросы — добавляя нужные параметры перед посылкой на сервер и подставляя другие ответы от сервера.

замена расширения для FF:
Есть замечательное расширение в ФФ для тестирования сайта на медленном соединении (название которого я всегда забываю). Кроме того «у него» есть маленький недостаток — я не могу проверить сайт в других браузерах кроме ФФ.
На помощь спешит:

autoResponder+ firebug
То чем я пользуюсь чаще всего и то чем хотелось поделиться больше всего.
Ситуация — у вас есть ссылка на живой сайт в котором нужно дописать/исправить/отлаживать скрипт.

— Знакомая ситуация?

Что делать? Шеф все пропало, я не могу работать в таких условиях!

Спокойно!
Делай раз:

Сохраняем скрипт у себя на машине. И открываем в редакторе.

Делай два: приводим код к читабельному виду, к примеру с помощью этого сервиса, и сохраняем полученное заменяя обфусцированный код.

Делай три:
— создаем правило в AutoResponder. Теперь если мы обновим в браузере нашу страницу, при этом скрипт который мы отлаживали будет иметь удобоваримый вид —

Теперь каждый раз когда вы обновляете страницу пока вам будет подменяться и отдаваться ваш локальный файл. Нет необходимости сохранять страницу на машину чтобы добавить или отладить функциональность.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Adblock detector