Что происходит, когда клиент отправляет повторяющиеся запросы через Fiddler?

#http #proxy #fiddler

#http #прокси #скрипач

Вопрос:

Я устанавливаю Fiddler на свой компьютер и использую Fiddler в качестве прокси для мониторинга трафика приложения в моем телефоне. Иногда Fiddler перехватывает повторяющиеся запросы с разными заголовками диапазона.

Например, приложение отправляет 3 HTTP GET-запроса для одного 1000-байтового файла MP4 с разным заголовком диапазона. Первый с «Диапазоном: 0-«, второй с «Диапазоном: 0-499», третий с «Диапазоном: 300-999». Fiddler получает все три ответа, тела которых в сумме составляют 1000 500 700 = 2200 байт. Но, похоже, что Fiddler не отправляет так много данных обратно в приложение.

Я предполагаю, что приложение сначала отправляет запрос «Range: 0-«, но перед получением какого-либо ответа оно отправляет запрос «Range: 0-499» и закрывает первый запрос. Когда получены первые 300 байт, приложение закрывает второй запрос и отправляет запрос «Диапазон: 300-999» и получает следующие 700 байт. Это правильно? Если это правильно, почему Fiddler загружает все три ответа, которые потребляют дополнительную пропускную способность? Если это неправильно, какой объем данных получает приложение?

Кроме того, что произойдет без прокси? Будут ли переданы 2200 байт и потребуется ли дополнительная пропускная способность?

Ответ №1:

Fiddler — это прокси. Он получает запросы от клиента и отправляет их на сервер. Имеют ли запросы смысл или нет, не являются оптимальными или нет, выходит за рамки Fiddler. Его задача — передавать запросы в точности в том виде, в каком они были получены на сервер (если вы не используете фильтры или сценарии для изменения или удаления запроса).

Единственная проблема может возникнуть в том случае, если клиент закрывает соединение до того, как данные с сервера были полностью получены. Если вы не используете потоковый режим Fiddler, запросы и ответы кэшируются для пересылки их по назначению. Поэтому Fiddler может загрузить событие полного ответа, если клиент уже отключился. Я предполагаю, что это случай первого запроса 0-GET. Возможно, из-за того, что клиент обнаружил, что используется прокси, он изменяет свою схему запросов на более совместимую с прокси систему.

Вы должны использовать Wireshark и перехватывать трафик на случай, если вы не используете Fiddler — может быть, это другое или нет, Wireshark сообщит вам (при условии, что трафик не зашифрован по HTTPS).

Комментарии:

1. Спасибо за ваш ответ. Режим потоковой передачи Fiddler был включен. Я пытаюсь использовать Wireshark, и это показывает, что иногда клиент запускает запрос, но в то же время отправляет ПЕРВЫЕ TCP-пакеты для закрытия соединения и запускает новое TCP-соединение с другим запросом для того же видео, но Fiddler продолжает получать оба полных ответа, и я не могу знать реальное потребление пропускной способности из-за повторяющегося ответа. Я подозреваю, что Fiddler не пересылает ПЕРВЫЕ TCP-пакеты, поэтому оба соединения существуют. Можно ли настроить Fiddler так, чтобы он действительно вел себя как клиент, а не как прокси?