Инструменты тестировщика
Fiddler для тестировщика: установка, перехват трафика и подмена ответов
Fiddler – программа-сниффер от компании Telerik. Она работает прокси-сервером между клиентом и сервером и показывает каждый запрос и ответ, которые через неё проходят. Версий две: Fiddler Classic работает только в Windows и бесплатен, Fiddler Everywhere работает в Windows, macOS и Linux и продаётся по подписке. Тестировщик разбирает в Fiddler трафик браузера и телефона, повторяет запросы в Composer, подменяет ответы сервера по правилам и ставит точку останова, чтобы поправить запрос вручную.
- Classic и Everywhere
- две версии для разных систем и по разной цене
- 8888 и 8866
- порты Classic и Everywhere по умолчанию, их вписывают на телефоне
- Бесплатно
- урок с заданиями в моём базовом курсе
Что такое Fiddler и зачем он тестировщику
Fiddler, как и Charles, относится к снифферам: трафик клиента идёт через него, и тестировщик видит, что ушло на сервер и что вернулось. Клиентом может быть браузер, настольная программа или мобильное приложение, если телефон подключён к компьютеру через прокси. Часть этого видна и на вкладке Network в DevTools, но, по моему опыту, с Fiddler заглядывать в браузер часто не нужно. Заголовки, куки, тело и код ответа собраны в одном окне.
Чаще всего Fiddler ставят ради подмены. Клиенту можно вернуть ошибку 404 или 500 вместо успешного ответа, убрать обязательный заголовок или подставить в него пустое значение и посмотреть, как поведут себя клиент и сервер. Я сравниваю это с позитивными и негативными проверками API в Postman, только данные здесь меняются на лету.
Пример из мобильного банка: правилом подменить ответ на запрос баланса кодом 500. Приложение должно показать сообщение об ошибке и предложить повторить загрузку. Если вместо этого на главном экране появляется баланс 0 ₽, это серьёзный баг, потому что клиент решит, что у него пропали деньги.
В 2021 году я называл Fiddler бесплатной заменой Charles Proxy, у пробной версии которого сеанс ограничен получасом. Сейчас бесплатен только Fiddler Classic, а Fiddler Everywhere продаётся по подписке, поэтому условия перед установкой стоит проверить на сайте Telerik.
Fiddler Everywhere и Fiddler Classic: в чём разница
Классическую версию нельзя было поставить на macOS и Linux, и Telerik выпустила новую реализацию с другим интерфейсом, Fiddler Everywhere. Стоит освоить обе и повторить одни и те же задачи в каждой.
Системы
Classic работает только в Windows. Everywhere есть для Windows, macOS и Linux.
Интерфейс
Everywhere выглядит современно и понятнее новичку. Classic похож на старое настольное приложение с множеством вкладок.
Подмена ответов
В Classic это вкладка AutoResponder. В Everywhere во время записи урока она называлась так же, а в новых версиях её место заняла вкладка Rules.
Точки останова
В 2021 году breakpoints были только в Classic, и я ждал их в Everywhere. Теперь в Everywhere точку останова ставят правилом на вкладке Rules.
Обмен сессиями
В Everywhere сохранённую сессию можно отправить коллеге по почте, если у него тоже есть учётная запись Fiddler.
Статистика и таймлайн
В Classic есть вкладки Statistics и Timeline. По ним видно, когда клиент подключился и отправил запрос и в каком порядке грузились HTML, CSS и картинки, то есть можно оценить производительность.
Установка и перехват HTTPS
Обе версии скачивают с сайта Telerik, ссылки на загрузку и документацию собраны в бесплатном уроке курса. Fiddler Everywhere при первом запуске просит войти в учётную запись.
Без корневого сертификата Fiddler видит только то, что браузер подключился к сайту по HTTPS, а содержимое запросов остаётся зашифрованным. Поэтому после установки делают несколько настроек. Если на компьютере стоят обе версии, перед работой в Classic я выключаю перехват в Everywhere, чтобы программы не конфликтовали.
1. Включить перехват
В Classic это пункт Capture Traffic в меню File или клавиша F12. В Everywhere захват трафика включают на вкладке Live Traffic.
2. Доверять сертификату
В Classic открывают Tools, затем Options, вкладку HTTPS, отмечают Decrypt HTTPS traffic и соглашаются установить сертификат. В Everywhere то же делают в настройках, в разделе HTTPS.
3. Разрешить подключения извне
Чтобы ловить трафик телефона, в Classic на вкладке Connections окна Options отмечают Allow remote computers to connect, а в Everywhere в разделе настроек Connections включают Allow remote devices to connect.
4. Подключить телефон
Телефон и компьютер должны быть в одной сети Wi-Fi. В настройках сети телефона прокси указывают вручную: IP-адрес компьютера и порт Fiddler, 8888 у Classic или 8866 у Everywhere. Затем на телефон ставят сертификат Fiddler, иначе HTTPS останется нечитаемым.
Live Traffic и Composer: как разбирать и повторять запросы
Главное окно Fiddler Everywhere – Live Traffic. В нём по строке на каждую пару запроса и ответа: адрес, код ответа, метод, процесс (программа-клиент, которая отправила запрос), удалённый IP-адрес и размер. Через меню колонок под тремя точками лишние столбцы прячут, а нужные добавляют.
У каждой колонки свой фильтр: равно, содержит, не содержит, начинается с, пусто или не пусто. Чтобы оставить только успешные ответы, в фильтре кода выбирают "начинается с" и пишут 2, потому что коды всех успешных ответов лежат в диапазоне от 200 до 299. Фильтры по нескольким колонкам действуют одновременно.
Значок в начале строки показывает, что лежит в ответе, например картинка. Если значок непонятен, достаточно навести на него курсор. Полный список значков есть в руководстве пользователя Fiddler, в разделе о Live Traffic.
Инспекторы
Выбранную сессию разбирают в инспекторах: заголовки, куки, тело запроса и ответа, превью, версия протокола и код ответа.
Сохранение сессий
Нужные запросы выделяют, правой кнопкой выбирают Save и Selected Sessions и дают сохранению имя. Потом его открывают в списке сессий и продолжают работу.
Отправка разработчику
Сохранённую сессию в Everywhere отправляют коллеге по адресу почты. Ему приходит ссылка, и он открывает в своём Fiddler ровно те запросы, на которые сервер ответил, например, 404 или 500.
Composer
Окно для отправки запросов, похожее на Postman: метод, адрес, версия протокола, заголовки, параметры и тело. Перехваченную сессию можно перетащить в Composer, и заголовки с параметрами подставятся сами. Запросы сохраняют в коллекции и папки, но переменных и окружений здесь нет, поэтому для постоянной работы с API я оставляю Postman.
Пример: промокод не применяется
Покупатель интернет-магазина жалуется, что скидка по промокоду не появляется. Тестировщик очищает Live Traffic, вводит промокод и фильтром по адресу находит запрос к API промокодов: сервер ответил 200, но в теле ответа скидка равна нулю. Значит, скидку не считает сервер, и вёрстка тут ни при чём. Сохранённую сессию с этим запросом отправляют разработчику бэкенда вместе с баг-репортом.
Подмена ответов и точки останова
Подменой занимается Auto Responder, в новых версиях Fiddler Everywhere это вкладка Rules. Правило состоит из условия и действия. Условие (match) описывает, какие запросы ловить, например точный адрес. Действие говорит, что сделать вместо обычного ответа: вернуть другой код, убрать или изменить заголовок, подменить картинку вроде логотипа, перенаправить на другой адрес или оборвать соединение сразу после ответа.
Каждое правило включают отдельным переключателем, а работают они, только пока включён общий переключатель всей вкладки. После проверки его нужно выключить, иначе подмена продолжит работать. Все действия с ключевыми словами перечислены в документации Fiddler, в разделе об Auto Responder, а какие из них нужны, зависит от проекта и от проверок, которые вы придумали.
Так выглядит пример из урока: успешный ответ превращается в 404.
1. Поймать запрос
Очистить Live Traffic и обновить страницу, чтобы в списке появились все её запросы.
2. Создать правило
Выбрать нужный запрос и добавить его в Auto Responder. В условие подставится его адрес один в один.
3. Задать действие
Указать код 404 вместо 200. Так же можно удалить обязательный заголовок или отправить в нём пустую строку или null.
4. Включить и проверить
Включить Auto Responder и отправить запрос, например из Composer. Сервер как будто ответил 404. Если поменять в правиле код на 200 и повторить запрос, ответ снова будет успешным.
Точка останова в Classic
В меню Rules, пункт Automatic Breakpoints, выбирают Before Requests (F11) или After Responses (Alt+F11). Запрос останавливается, его можно поправить и отпустить кнопкой Run to Completion. Остановку выключает пункт Disabled (Shift+F11).
Точка останова в Everywhere
На вкладке Rules создают правило с действием Set Breakpoint: перед отправкой запроса или перед тем, как ответ дойдёт до клиента. Правило действует на трафик, перехваченный после его включения.
Пример: цена в запросе заказа
В интернет-магазине ставят точку останова перед отправкой запроса оформления заказа и в его теле меняют цену товара с 5000 на 1. Если сервер принял заказ за 1 рубль, это критический дефект безопасности: сервер обязан брать цену из своей базы и не доверять тому, что прислал клиент.
Видеоуроки, шпаргалки и задания
Fiddler я посвятил два ролика на YouTube. В первом ставлю обе версии, устанавливаю сертификат для HTTPS и настраиваю перехват трафика с телефона. Во втором разбираю Live Traffic, Composer и Auto Responder в Fiddler Everywhere и точки останова в Fiddler Classic. В бесплатном базовом курсе по тестированию тема идёт уроком "Работа с Fiddler": там есть ссылки на загрузку и документацию обеих версий, а после теории задания, одно из них на перехват трафика.
Шпаргалка по кодам ответов помогает выбрать ошибку для подменённого ответа, а шпаргалка по HTTPS объясняет, зачем снифферу свой сертификат. В тренажёре нужно найти баги в API-запросах.
- Урок курсаЭтот урок с заданиями – бесплатно
- Мой видеоуроккак использовать Fiddler для тестирования
- Мой видеоурокFiddler, установка и настройка
- Шпаргалкакоды ответов HTTP
- ШпаргалкаHTTPS, TLS и версии HTTP
- Тренажёрпоиск багов в API-запросах
- СтатьяCharles Proxy для тестировщика
- СтатьяПерехват HTTP и HTTPS трафика в Postman
Курсы по теме
Вопросы и ответы
Что такое Fiddler?
Программа-сниффер от Telerik, которая работает прокси-сервером между клиентом и сервером. Она показывает запросы и ответы браузера, программ и мобильных приложений, умеет отправлять свои запросы и подменять ответы сервера.
Чем Fiddler Everywhere отличается от Fiddler Classic?
Classic работает только в Windows и бесплатен. Everywhere есть для Windows, macOS и Linux, у него современный интерфейс и обмен сессиями с коллегами, и продаётся он по подписке. В 2021 году точки останова были только в Classic, а в новых версиях Everywhere их ставят правилами на вкладке Rules.
Fiddler бесплатный?
Fiddler Classic бесплатен и работает в Windows. Fiddler Everywhere для Windows, macOS и Linux продаётся по подписке, и актуальные условия лучше смотреть на сайте Telerik.
Как перехватить HTTPS в Fiddler?
Установить корневой сертификат Fiddler и сделать его доверенным: в Classic через Tools, Options, вкладку HTTPS и флажок Decrypt HTTPS traffic, в Everywhere в настройках HTTPS. Без сертификата Fiddler видит только подключение к сайту, а содержимое запросов остаётся зашифрованным.
Как подключить телефон к Fiddler?
Подключить телефон и компьютер к одной сети Wi-Fi, в Fiddler разрешить подключения с других устройств (Allow remote computers to connect в Classic, Allow remote devices to connect в Everywhere), а на телефоне вручную указать прокси: IP-адрес компьютера и порт 8888 для Classic или 8866 для Everywhere. Чтобы видеть HTTPS, на телефон ставят сертификат Fiddler.
Что выбрать: Fiddler или Charles?
Fiddler даёт практически те же функции, что Charles: перехват, подмену ответов, точки останова и отправку запросов. Charles платный и работает в Windows, macOS и Linux, Fiddler Classic бесплатен, но только в Windows, поэтому выбор чаще всего зависит от системы и от того, что уже используют на проекте.
Посмотреть программы курсов
Программа каждого курса открыта целиком: видны все модули, уроки и число шагов.

