Для чего нужен fiddler
Fiddler-инструмент для анализа трафика мобильных приложений. Выявляем уязвимости
Разработчики большое внимание уделяют удобству и внешнему виду, однако вопросам безопасности не всегда уделяется должное внимание. Недостаточная защищенность приложения увеличивает репутационные риски для компании-разработчика, а утечка конфиденциальных пользовательских данных негативно сказывается на его деловой репутации.
Большинство современных мобильных приложений построены на клиент-серверной архитектуре. Как правило, клиент функционирует под управлением одной из популярных мобильных ОС – Android или iOS, и обменивается данными с сервером. Использование открытых незащищенных протоколов передачи данных многократно увеличивают риски компрометации передаваемого трафика. Но даже защищенные соединения не всегда дают 100% гарантию надежности сохранности данных.
В данной статье мы познакомимся с инструментом Fiddler, позволяющим перехватывать и анализировать весь трафик между клиентом и сервером. Данный инструмент может помочь выявить уязвимости в процессе клиент-серверного взаимодействия мобильного приложения.
(Если вы уже работали с этим инструментом, делитесь опытом в комментариях)
Для начала установите Fiddler на ПК или ноутбук. Убедитесь, что ПК/ноутбук и смартфон находятся в одной сети (например, подключив устройства к одному wifi-роутеру). Это условие является обязательным, т.к. устройства не увидят друг друга. Проверить связь между устройствами можно через команду ping.
Далее, убедитесь, что Fiddler может принимать входящие соединения:
Настройка устройства на базе Android
Убедитесь, что Fiddler запущен и брандмауэр Windows отключен, далее на Android-устройстве выполните шаги:
После нажатия на кнопку «Сохранить» весь трафик смартфона должен быть виден в окне Fiddler.
Настройка устройств на базе iOS
Убедитесь, что Fiddler запущен и брандмауэр Windows отключен, далее на iOS-устройстве выполните шаги:
После нажатия на кнопку «Сохранить» весь трафик смартфона должен быть виден в окне Fiddler.
С этими настройками возможен перехват только незащищенного HTTP-трафика. Для работы с защищенным HTTPS-трафиком потребуется установка корневого сертификата на устройствах, а также дополнительная настройка Fiddler.
Для Android: скачайте FiddlerRoot certificate, откройте его, установите и задайте имя.
Для iOS: скачайте FiddlerRoot certificate, откройте его, нажмите «разрешить», после чего перейдите в Настройки → Профиль загружен → Установить. Далее в Настройках → Основные → Об этом устройстве → Доверие сертификатам → найдите сертификат и сделайте его доверенным.
После этого вы сможете работать и анализировать защищенный HTTPS-трафик в Fiddler.
Скриптуемый отладочный прокси Fiddler
Материал на этой странице устарел, поэтому скрыт из оглавления сайта.
Fiddler – прокси, который работает с трафиком между Вашим компьютером и удалённым сервером, и позволяет инспектировать и менять его.
Fiddler можно расширять с помощью скриптов на языке JScript.NET (писать их очень просто), менять меню программы, и вообще – замечательный инструмент.
Использовать его можно с любым браузером.
Эта статья описывает Fiddler 2.4. В вашей версии Fiddler какие-то возможности могут измениться, какие-то образоваться.
Режимы подключения
У Fiddler есть 2 способа подключения.
Первый – это просто запустить его. При этом он автоматически будет работать для программ, использующих WinINET.
Это, например, Internet Explorer, Chrome, приложения MS Office.
Firefox тоже автоматически подхватит Fiddler, за счёт того что при установке Fiddler в него ставится соответствующее расширение:
Fiddler не под Windows
Если вы работаете не под Windows, то Fiddler можно поставить в виртуальную машину.
Если вы так захотите поступить, то вдобавок возьмите удобный переключатель прокси, например Elite Proxy Switcher под Firefox или Proxy Pick для IE, чтобы переключение на прокси осуществлялось в один клик.
Операции над запросами
При заходе в Fiddler, открывается окно запросов слева и рабочие вкладки справа.
Как видно, опций много, на изображении они еле-еле помещаются. И, поверьте, возможностей – ещё больше.
Возможности
В окне запросов слева можно просматривать и выбирать запросы, смотреть их заголовки, сохранять их на диск все вместе или по отдельности.
AutoResponder – позволяет подставить свой файл вместо сервера.
Например, приятель попросил поправить скрипт vasya.js на сайте, но доступа к серверу не дал.
С Fiddler задача решается просто – сохраняете скрипт на диске, в AutoResponder указываете, что vasya.js нужно брать с диска, а не с сайта – и исправляете, что нужно, перезагружаете страницу, проверяете – всё с комфортом.
Composer – позволяет составить запрос на сервер вручную.
Например, вы хотите сделать такой же AJAX-запрос, как только что делали. Для этого можно просто выбрать его слева и нажать кнопку Replay (слева-сверху).
А если хочется поменять? Нет ничего проще – выбираем справа Composer и перетаскиваем запрос слева в него. После этого исправляем, что хотим и Execute.
Filters – позволяет назначить действия в зависимости от вида запроса. Опции станут понятны после перехода на вкладку.
FiddlerScript – основа мощи Fiddler: скрипт, задающий функциональность. Его редактированием можно добавить или удалить пункты меню, колонки в списке запросов, и, вообще, поменять почти всё.
Язык программирования JScript.NET, который здесь используется, может взаимодействовать с Windows в полном объёме, включая коммуникацию с базой данных, Word, Excel.
Правила
Слева-сверху в меню находится пункт Rules (правила). В нём изначально находятся некоторые возможности FiddlerScript, которые поставляются «из коробки».
Хотите посмотреть, как ваш сайт будет грузиться «на GPRS»? Выбирайте Rules → Performance → Simulate Modem speeds.
Для добавления новых правил можно их задать через пункт «Customize Rules» (на JScript.NET, разумеется). В открывающемся скрипте есть пункты меню и их реализация.
При наступлении любого события из обширного списка, Fiddler вызывает соответствующий обработчик из правил. Например, onBeforeRequest, onShutdown. Стандартные правила отлично прокомментированы, и писать новые весьма просто.
FiddlerScript позволяет манипулировать заголовками, запросом, менять ширину канала, управлять выводом запроса в Fiddler и так далее и т.п.
Брейкпойнт на запросе
В меню Rules → Automatic Breakpoints можно включить автоматическое прерывание Fiddler при обработке запроса.
После этого, если сделать запрос в браузере, подключённом к Fiddler, то его выполнение зависнет, а в левом окошке Fiddler этот запрос будет отмечен специальным значком.
Если выбрать такой подвисший запрос мышкой, то во вкладке SessionInspector им можно управлять: менять сам запрос и ответ сервера (после Break on Response, когда сервер уже ответил).
Задавать прерывание на запросах определённого вида также можно через Filters.
Отладка HTTPS
Fiddler является прокси, а HTTPS шифруется от браузера до сервера-получателя, поэтому по умолчанию Fiddler не имеет доступа к содержимому HTTPS-запросов.
Чтобы его получить, Fiddler должен сыграть роль хакера-перехватчика: расшифровывать запросы, и потом отправлять дальше. Это возможно, если инсталлировать специальный сертификат: Tools → Fiddler Options → HTTPS(вкладка) → выбрать все галочки.
После окончания отладки этот сертификат можно убрать.
Скачать
Fiddler можно бесплатно скачать с сайта разработчика. Там же доступна документация и видео.
Битва Charles и Fiddler: как тестировать с комфортом?
Всем привет! Меня зовут Ксения Мерзлозубова, и я тестирую мобильные приложения в компании ATI.SU.
Для тестирования большинства задач мобильному тестировщику необходим сниффер — инструмент для перехвата и анализа трафика. Сейчас существует множество снифферов, но самые популярные — это Charles и Fiddler. В этой статье я опишу их достоинства и недостатки, обращу внимание на фичи, удобство использования, дизайн и еще некоторые нюансы. Снифферы всегда помогают мне при ручном тестировании, поэтому надеюсь, что и вы сможете выбрать один из них или будете использовать все.
Добавлю, что у Fiddler существует 2 версии: Classic и Everywhere. Расскажу про обе.
Charles
Тестировщики обычно называют его «Чарльз» или ласково «Чарлик». Для начала обсудим основные плюсы этого сниффера.
Плюсы
Кроссплатформенность. Есть версии на Mac OS, Windows и Linux. Это очевидное преимущество, если каждый из ваших коллег выбрал себе рабочую ОС по душе, и нужен общий инструмент для тестирования.
Удобная панель инструментов с такими функциями как очищение сессии, редактирование и перевыполнение запроса, остановкой перехвата трафика и другими.
Панель инструментов
Классификация запросов по хостам. У сниффера есть экраны Structure и Sequence. На экране Sequence перехваченные запросы отображаются последовательно, а на экране Structure еще и с группировкой по хостам. Для удобства можно настроить фокус на определенный хост. Тогда остальные запросы попадут в группу Other hosts. Этот вариант подойдет, если вы тестируете небольшую группу запросов к одному хосту, а остальные в текущий момент не важны.
Возможность экспортировать настройки. Например, можно попросить коллегу экспортировать настройки Charles и загрузить их себе, чтобы не настраивать все опции вручную. Настройки экспортируются в формате xml.
Возможность просматривать несколько сессий в соседних закладках. Здесь под «сессией» я подразумеваю один сеанс перехвата трафика. Например, вы воспроизводите сложный баг, и вам нужно повторить его дважды, чтобы сравнить траффик. Тогда можете использовать для каждого повтора отдельную сессию, а затем переключаться между ними.
Современный интерфейс. В отличие от Fiddler Classic, у которого интерфейс напоминает десктопные приложения из 2000-х, Charles выглядит актуальнее.
Минусы
Нет возможности наложить таймаут на запрос. При тестировании часто требуется проверить, как поведет себя конкретный запрос при задержке ответа и нестабильном интернете. К сожалению, Charles позволяет создать такую задержку только для хоста. Настройка влияет на все запросы указанного хоста, а их может быть очень и очень много. Найти настройку можно так: Proxy — Trottle Settings.
Trottle Settings
Нет возможности экспортировать сессию в формате txt или json. Теперь под «сессией» я подразумеваю запрос и ответ вместе, одним файлом. Charles предлагает форматы chls, csv, trace, har и другие.
Форматы экспорта сессии
Документация без скриншотов и видео. У этого сниффера есть документация на официальном сайте, и она целиком состоит из текста. На мой взгляд, документация платного инструмента должна быть как минимум дополнена поясняющими скриншотами, а еще лучше видео.
Это платный инструмент. В отличие от Fiddler Classic, у Charles бесплатный только триальный период в 30 дней. Однако, этот минус сомнительный, т.к. хороший инструмент и должен быть платным.
Fiddler Classic
Этот инструмент долгое время был моим любимчиком, так как с него я начинала изучение снифферов.
Плюсы
Удобная подмена ответов. Чтобы подменить ответ, в Fiddler Classic достаточно перетащить запрос на закладку AutoResponder. Далее можно выбрать вариант ответа в Rule Editor или нажать Edit Response и дать волю фантазии.
AutoResponder в Fiddler Classic
Для сравнения, чтобы подменить ответ в Charles, придется:
Копировать url; Добавить настройку подмены (Rewrite).
Вставить скопированный url.
Создать новое правило подмены (Rewrite rule) для url.
Выбрать тип подмены. Например, Body или Status.
Выбрать, в запросе или в ответе сделать подмену.
Допустим, вы подменяете тело ответа (Body). Тогда нужно заготовить измененное тело заранее и вставить в поле Value.
Rewrite в Charles
На самом деле шаги не сложные, но путь к подмене ответа длиннее, чем в Fiddler. В качестве альтернативы в обоих снифферах есть возможность подменять ответ на файл.
Много функций вынесены на панель инструментов. На мой взгляд, панель инструментов Fiddler Classic менее удобная, чем у Charles, но разработчики постарались вынести на нее большое количество опций.
Возможность цветового выделения запросов. Для наглядности, можно выделить запрос другим цветом. В Charles я не нашла подобной функции.
Бесплатный инструмент. Из трех инструментов, которые я сравниваю, только Fiddler Classic абсолютно бесплатно можно скачать с официального сайта.
Два способа редактирования запросов. В Fiddler и Charles есть аналогичные способы редактирования запросов. Они позволяют менять любую часть запроса. Покажу их на скриншотах ниже.
Редактирование запроса в Fiddler Classic
Редактирование запроса в Charles
Однако в Fiddler есть и второй способ: использование редактора запросов Composer. Основное преимущество этого способа в том, что в Composer есть лог измененных и выполненных запросов. В нем очень просто найти запрос, который вы меняли ранее и вернуться к его редактированию.
Документация. Просто почитайте ее на официальном сайте.
Минусы
Только под Windows. Для других ОС на официальном сайте Fiddler предлагается скачать Fiddler Everywhere, о котором я расскажу позже в этой статье.
Устаревший дизайн интерфейса. Этот пункт выглядит очень субъективно, но с ним согласны большинство моих коллег.
Редактирование ответа только в текстовом формате. В AutoResponder есть встроенный редактор ответа. Если ответ содержит множество вложенных структур и полей, то читать его в текстовом виде крайне неудобно, а редактирование в формате json отсутствует. Также нет поиска по тексту в редакторе, поэтому быстро найти нужное поле не получится. Однако, выход есть — можно использовать отдельный текстовый файл для подмены ответа.
Fiddler Everywhere
Перейдем к новому Fiddler. Судя по списку релизов на официальном сайте, этот сниффер появился в 2018 году.
Плюсы
Кроссплатформенность. В отличие от предшественника, у Fiddler Everywhere есть версии под Mac OS, Windows и Linux.
Удобные фильтры запросов. Перехваченные запросы отображаются на закладке Life Traffic. Там можно настроить, какие столбцы показывать, а какие скрывать. Также есть фильтры по каждому столбцу. Если использовать фильтры по нескольким столбцам, то они применяются вместе.
Life Traffic
Сохранение сессий внутри инструмента — это преимущество по сравнению с Charles и Fiddler Classic, где сессии нужно экспортировать в файл для сохранения.
Отправка сессий другим пользователям. В Fiddler Everywhere можно поделиться сессией с коллегой, указав его email, если он тоже пользуется этим инструментом. Тут «сессия» — это один или несколько запросов.
Современный интерфейс. В отличие от Fiddler Classic, этот сниффер может похвастаться более актуальным интерфейсом, который напоминает привычный многим тестировщикам Postman.
Улучшенный Composer. В Fiddler Everywhere редактор запросов Composer получил функционал и дизайн, аналогичный Postman, за исключением некоторых функций. Например, нет возможности использовать переменные, писать скрипты или использовать раннер для запуска коллекций.
Сохранение коллекций. В отличие от Charles и Fiddler Classic в этом сниффере можно сохранять запросы в коллекции и давать им названия.
Документация. У Fiddler Everywhere есть подробная документация на официальном сайте.
Минусы
Нет брейкпоинтов. Брейкпоинты позволяют останавливать выполнение запроса и на ходу изменять его. Многие тестировщики привыкли к ним в Charles и Fiddler Classic. На текущий момент есть просьбы пользователей сделать breakpoints к команде разработчиков Progress Telerik. Вот еще пример. Судя по ответам, этот функционал есть в планах на будущее.
Платный инструмент. У сниффера есть бесплатный триальный период в 30 дней, а далее можно выбрать тарифный план.
Дополнительно
Добавлю, что большая часть функционала описанных снифферов совпадает. Они все отлично справляются с редактированием запросов, экспортом и импортом сессий, поиском по части запроса, поэтому на этих функциях я не останавливалась в статье.
В зависимости от проекта и задачи, тестировщику может потребоваться разный функционал сниффера. Если вам приглянулся какой-то инструмент, рекомендую попробовать его на практике, так как ваши рабочие потребности могут отличаться от моих.
Если у вас есть, что сказать по теме статьи, буду рада комментариям!
Русские Блоги
Подробное руководство по артефакту Fiddler4
Будь твоим талантом
Когда вы не можете поддержать свои амбиции
Тогда вам следует успокоиться и узнать
Я читал эту статью автора, лично считаю, что она довольно хорошая, очень подробная, но я не чувствую, что там много верстки, поэтому набираю вручную.
оглавление
Подробное руководство по артефакту Fiddler4
0x01 причина
В реальных проектах из-за частой отладки разработки, нестабильных интерфейсов и несвоевременного обновления документов интерфейса мы выбираем тестирование интерфейса, и многое другое нам необходимо самостоятельно фиксировать и анализировать интерфейс.
0x02 Почему выбирают Fiddler
A. Хотя Firebug может захватывать пакеты, он недостаточно мощный для анализа подробной информации HTTP-запросов. Функции имитации http-запросов недостаточно, а firebug часто требует «без обновления модификации». Если страница обновляется, все изменения не будут сохранены.
C. Httpwatch также является широко используемым инструментом захвата пакетов http, но поддерживает только браузеры IE и firefox (в других браузерах могут быть соответствующие плагины). Он кажется немного слабым для HTTP-запросов, которые хотят отлаживать браузер Chrome.
0x03 Как работает Fiddler
0x04 Базовый интерфейс Fiddler
Fiddler4, который я использую
По умолчанию наш Fiddler не включает поддержку https по умолчанию. Если интерфейс в проекте использует протокол https, эту функцию необходимо включить.