Fiddler был написан Эриком Лоуренсом (Eric Lawrence) в то время когда он работал в Microsoft, в группе по разработке IE. В 2012 году Fiddler был приобретен компанией Telerik, Эрик так же перешел в Telerik для продолжения работы над своим продуктом.
Fiddler представляет из себя прокси, который захватывает весь HTTP и HTTPS трафик, позволяя его анализировать и даже изменять.
Конечно, если и другие средства анализа, например для более глубокого анализа можно использовать Microsoft Network Monitor:
С другой стороны анализ запросов Web приложений можно провести прямо в браузере, используя Developer Tools, которые обычно доступны по клавише F12:
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 в верхней части вкладки.
Fiddler позволяет устанавливать точки останова перед отправкой запроса на сервер или перед передачей ответа клиенту.
Включить их можно различным образом:
Раз уж Fiddler - это прокси, то функция отправки ответа клиенту без фактического обращения к серверу вполне ожидаема. Все что нужно сделать - это создать правила и действия для них на вкладке AutoResponder. Правило представляет из себя строку для поиска или регулярное выражение, а в качестве действия может быть возврат определенного статуса, файла, перенаправление на другой адрес и т.д. Таким образом можно даже тестировать запросы к несуществующему или недоступному серверу или адресу:
Проверка запроса к несуществующему адресу:
Обратите внимание на включенные опции Enable automatic responses и Unmatched requests passthrough - первая включает автоматическую отправку ответов по созданным правилам, вторая пропускает все остальные запросы непосредственно к серверу.
Все созданные правила для AutoResponder можно сохранить в файл *.farx.
Возможно вам требуется просмотреть трафик от вашего телефона или планшета в Fiddler. Первое что необходимо сделать - это в Fiddler выбрать пункт меню Tools - Fiddler Options..., в открывшемся окне перейти на вкладку Connections и включить опцию Allow remote computers to connect.
Уже после этого если вы откроете браузер в телефоне или планшете и введете <IP_компьютера>:8888 (порт по умолчанию) - запрос отобразиться в списке сессий.
Есть еще несколько интересных возможностей:
Подводя итоги можно сказать что Fiddler - это мощный и удобный в использовании инструмент, который может быть отличным помощником при разработке и отладке программ, сервисов и т.п.
Страница - http://www.telerik.com/fiddler
Fiddler представляет из себя прокси, который захватывает весь HTTP и HTTPS трафик, позволяя его анализировать и даже изменять.
Конечно, если и другие средства анализа, например для более глубокого анализа можно использовать Microsoft Network Monitor:
С другой стороны анализ запросов Web приложений можно провести прямо в браузере, используя Developer Tools, которые обычно доступны по клавише F12:
Fiddler похож на "золотую середину". С его помощью можно:
- исследовать проблемы;
- анализировать производительность;
- подменять запросы и ответы;
- тестировать безопасность;
- и т.д.
Если на вашем компьютере работает сервер и по какой-то причине запросы к localhost или 127.0.0.1 не идут через прокси, вы можете использовать виртуальное имя ipv4.fiddler (ipv6.fiddler).
Статистика
Выполнив запрос к http://www.yandex.ru и остановив захват трафика (F12) можно увидеть что фактически был выполнена 31 сессия запросов и ответов. По каждой сессии или выделив сразу несколько сессий можно посмотреть статистику на вкладке Statistics:
На вкладке Timeline можно увидеть как запросы выполнялись во времени.
В списке сессий сразу можно видеть пиктограмму типа данных, статус, адрес, размер и другую информацию.
Чтобы быстро увидеть сессии, на выполнение которых ушло много времени, можно использовать фильтр: на вкладке Filters необходимо отметить пункт Use Filters, и в блоке Response Type and Size отметить Time HeatMap. Для того чтобы применить настройки фильтра в верхней части вкладки необходимо нажать на кнопку Action и выбрать Run Filterset now. После применения фильтра некоторые сессии в списке могут поменять фон в зависимости от затраченного времени:
(запрос к http://maps.yandex.ru/)
Отправка запросов
Чтобы просто повторно отправить запрос можно выбрать его в списке и нажать R, или выбрать пункт контекстного меню Replay (там же есть вариант изменить запрос перед отправкой).
Для примера отправим запрос к методу groups.getById из API сайта vk.com. Для этого я выполнил этот запрос из браузера, в окне Fiddler перетащил его на вкладку Composer, изменил параметр и выполнил:
Сразу открылась вкладка Inspectors, в нижней части которой я увидел ответ в формате JSON.
Еще один вариант использования этой возможности - отправка различных значений в заголовке Accept-Language, для того чтобы посмотреть результаты на разных языках, но результат придется смотреть на вкладке Inspectors что в данном случае может быть не так удобно как в браузере.
Другой вариант замены Accept-Language - это использование фильтра: необходимо включить фильтр, в блоке Request Headers включить Set request header и указать интересующий язык, возможно также потребуется включить Delete request header чтобы удалить cookie:
Для примера попробую загрузить vk.com с указанием другой локализации:
Как видно на скриншоте браузер в заголовке Accept-Language отправил ru-RU, но это значение было заменено на en с помощью фильтра Fiddler. В результате страница вернулась на английском языке.
Так же фильтр может отобрать только сессии содержащие определенный URL или запросы отправленные определенным процессом, скрыть ответы с определенным статусом (2xx, 3xx и т.д.), помечать запросы (ответы) содержащие определенный заголовок, заблокировать файлы по типу или размеру и т.п.
Кстати, набор условий для фильтрации можно сохранять и загружать, используя пункты Save Filterset и Load Filterset у кнопки Actions в верхней части вкладки.
Breakpoints
Включить их можно различным образом:
- переключателем в строке состояния;
- через меню Rules - Automatic Breakpoints;
- с помощью клавиш F11, Alt+F11 и Shift+F11 для выключения.
AutoResponder
Проверка запроса к несуществующему адресу:
Обратите внимание на включенные опции Enable automatic responses и Unmatched requests passthrough - первая включает автоматическую отправку ответов по созданным правилам, вторая пропускает все остальные запросы непосредственно к серверу.
Все созданные правила для AutoResponder можно сохранить в файл *.farx.
Перехват запросов от других устройств
Уже после этого если вы откроете браузер в телефоне или планшете и введете <IP_компьютера>:8888 (порт по умолчанию) - запрос отобразиться в списке сессий.
Но такой вариант не удобен для просмотра запросов из приложений, поэтому необходимо сделать так чтобы все запросы шли через нужный нам прокси. Для Android есть приложения для глобальной настройки прокси (требуется root). Я использую ProxyDroid. После изменения настроек прокси, запускаем приложение, например Yandex.Metro и видим запросы и ответы от приложения:
Еще одна удобная возможность в программе - использование команд. Для начала ввода команды необходимо поместить курсор в поле QuickExec или нажать Alt+Q.
QuickExec
Еще одна удобная возможность в программе - использование команд. Для начала ввода команды необходимо поместить курсор в поле QuickExec или нажать Alt+Q.
Самые популярные команды:
- ?текст - поиск URL, содержащих указанный текст, в списке сессий;
- >размер, <размер - поиск сессий, где размер ответа больше или меньше указанного (в байтах);
- =статус или метод - поиск сессий с определенным статусом ответа (301, 500 и т.д.) или методом запроса (POST, GET и т.д.);
- cls - очистка списка сессий;
- g или go - продолжить выполнение всех breakpoint.
Полный список команд доступен на странице документации.
Что еще умеет Fiddler
- симулировать работу через модем. Включить можно через меню Rules -> Performance -> Simulate Modem Speeds;
- использовать различные значения для поля User-Agent. Меню Rules -> User-Agents;
- сохранять одну или несколько сессий в архив (*.saz) с возможностью задать пароль. Сделать это можно либо через контекстное меню или через меню File. Для установки пароля в окне сохранения необходимо выбрать тип файла Password-Protected SAZ (*.saz);
- утилита TextWizard - помогает быстро конвертировать текст в различные кодировки. Запустить можно с помощью кнопки TextWizard на панели инструментов, через меню Tools -> TextWizard..., или нажав Ctrl+E.
Таки почему не wireshark?
ОтветитьУдалитьWirechark относится к более продвинутым инструментам, а для повседневных задач и Fiddler отлично подходит.
УдалитьВ планах есть статья про Wireshark, так что это вопрос времени.
Для примера попробую загрузить vk.com с указанием дрогой локализации:
ОтветитьУдалитьВы допустили ошибку в слове "другой"
Дмитрий, спасибо. Исправил.
УдалитьВ целях отладки запросов мне нужно подключить роутер к интернету с помощью "Общий доступ к интернету" используя свой ethernet порт ноутбука как LAN (раздача интернета). При этом интернет раздается с другой сетевой карты (WiFi). Как мне заставить ходить роутер через Fiddler если прописать в роутер я это не могу (не нужно говорить про uart/serial, не тот случай)?
УдалитьЕсли нет возможности настроить прокси на роутере, то как вариант (если это для тестовых целей) можно захватывать весь трафик с помощью Microsoft Network Monitor или Wireshark и сохранять в CAP-файл. Затем в Fiddler выбрать File > Import > Packet Capture и изучать.
УдалитьНо думаю что есть и другие решения для такой ситуации.
> Если на вашем компьютере работает сервер и по какой-то причине запросы к localhost или 127.0.0.1 не идут через прокси, вы можете использовать виртуальное имя ipv4.fiddler (ipv6.fiddler)
ОтветитьУдалитьМожно об этом поподробней: где и как "использовать виртуальное имя"? Спасибо
С такой проблемой можно столкнуться при использовании старой версии (<9) Internet Explorer или при написании .NET приложений. Суть в том что локальный трафик (трафик адресованный на localhost или адрес 127.0.0.1) они не пускают через прокси, соответственно этих запросов не будет видно в Fiddler'е.
УдалитьЧтобы обойти подобные ограничения есть виртуальные имена - т.е. вы отправляете запрос на адрес ipv4.fiddler, Fiddler его перехватит и перенаправит на 127.0.0.1
Добрый день. У меня есть необходимость зациклить POST запрос на несколько часов. Сидеть и долбить кнопку Execute не хочется. Подскажите как это сделать в Fiddler?
ОтветитьУдалитьСпасибо!
Добрый день, Михаил. Вы можете выполнить этот запрос один раз, затем в списке сессий слева выделить его и нажать клавишу "S" или выбрать в контекстном меню Replay -> Reissue Sequentially. В открывшемся окне введите сколько раз необходимо повторить запрос.
УдалитьЕсли между запросами надо вставить паузу - можете настроить AutoResponder на этот запрос, а в качестве ответа выберите *delay:1000 (задержка 1 сек.)
Спасибо большое! C AutoResponder немного не понял. Если я делаю репит на 10 запросов и ставлю на AutoResponder *delay10000, то он ждет 10 сек, а потом посылает все 10 запросов сразу. Как сделать чтобы он ждал после каждого запроса?
УдалитьЯ предполагаю что у Вас включена опция "Match only once". Эта опция находится напротив поля где указано *delay:10000.
УдалитьНет, с этого поля галка убрана.
УдалитьСтранно. Специально протестировал - пауза после каждого запроса вставляется.
УдалитьА какое правило Вы использовали? EXACT:_URL_?
Да, так и использовал. Ну ничего, решил уже задачу wireshark-ом. Еще раз спасибо за помощь!
УдалитьЗдравствуйте. Подскажите, как вычислить майнер на ресурсе? Вот например на этом s1.nod-key.com
ОтветитьУдалитьСпасибо.
Выполнив запрос через Composer видно что возвращается страница, содержащая какой-то скрипт. Он обфусцирован, поэтому определить его с помощью фильтров будет сложно.
УдалитьЯ бы советовал использовать специальное расширение для браузера, например No Coin.
Спасибо, ну расширения я использую, думал можно с помощью fiddler провести инспекцию, на наличие высокого исходящего трафика.
Удалить