Как отслеживать все входящие HTTP-запросы?
Мне нужно отслеживать свое приложение от входящих HTTP POST
и GET
запросов, исходящих извне, а иногда и внутри машины.
Возможно ли это?
Используется скрипач, но это только делает исходящий не входящий (извне машины), или я его неправильно настроил?
Это для моего веб-приложения, предназначенного для приема POST
с внешнего сервера.
Ответы
Ответ 1
Ребята нашли идеальный способ отслеживать ВСЕ трафик, который протекает локально между запросами от моей машины к моей машине:
- Установить Wireshark
-
Когда вам нужно захватить трафик, который идет от локального хоста к локальному хосту, вам будет сложно использовать wirehark, поскольку он контролирует только входящий трафик на сетевой карте. Способ сделать это - добавить маршрут к окнам, который заставит весь трафик через шлюз, и это будет зафиксировано в сетевом интерфейсе.
Чтобы сделать это, добавьте маршрут с помощью <ip address>
<gateway>
:
cmd> route add 192.168.20.30 192.168.20.1
-
Затем запустите захват на wirehark (убедитесь, что вы выбрали интерфейс с байтами, проходящими через него). Затем фильтруйте.
Новые добавленные маршруты появятся в черном цвете. (поскольку они являются локальными адресами)
Ответ 2
Что вам нужно сделать, это настроить Fiddler на работу как "обратный прокси"
Есть инструкции по 2 различным способам, которые вы можете сделать на веб-сайте Fiddler. Вот копия шагов:
Шаг # 0
Прежде чем работать с одним из следующих параметров, вы должны разрешить другим компьютерам подключаться к Fiddler. Для этого выберите "Сервис" > "Параметры скрипача" > "Подключения" и установите флажок "Разрешить удаленные компьютеры для подключения". Затем закройте Fiddler.
Вариант №1: настройка Fiddler как обратного прокси
Fiddler можно настроить так, чтобы любой трафик, отправленный на http://127.0.0.1:8888
, автоматически отправлялся на другой порт на том же компьютере. Чтобы установить эту конфигурацию:
- Запустить REGEDIT
- Создайте новый DWORD с именем ReverseProxyForPort внутри HKCU\SOFTWARE\Microsoft\Fiddler2.
- Установите DWORD на локальный порт, к которому вы хотите перенаправить входящий трафик (обычно это порт 80 для стандартного HTTP-сервера).
- Перезапустить Fiddler
- Перейдите в браузер
http://127.0.0.1:8888
Вариант № 2: Напишите правило FiddlerScript
В качестве альтернативы вы можете написать правило, которое делает то же самое.
Предположим, что вы используете веб-сайт на порту 80 машины с именем WEBSERVER. Вы подключаетесь к веб-сайту с помощью Internet Explorer Mobile Edition на устройстве Windows SmartPhone, для которого вы не можете настроить веб-прокси. Вы хотите захватить трафик с телефона и ответ сервера.
- Запустите Fiddler на машине WEBSERVER, работая на порту по умолчанию 8888.
- Нажмите "Инструменты" | Fiddler Options и установите флажок "Разрешить удаленные клиенты подключиться". При необходимости перезапустите.
- Выберите Правила | Настроить правила.
- Внутри обработчика OnBeforeRequest добавьте новую строку кода:
if (oSession.host.toLowerCase() == "webserver: 8888" ) oSession.host = "webserver: 80";
- На смартфоне перейдите к
http://webserver:8888
Запросы от SmartPhone появятся в Fiddler. Запросы пересылаются с порта 8888 на порт 80, где работает веб-сервер. Ответы отправляются обратно через Fiddler в SmartPhone, который не знает, что контент изначально был отправлен с порта 80.
Ответ 3
Я бы установил Microsoft Network Monitor, сконфигурировал инструмент, чтобы он мог видеть только HTTP-пакеты (фильтровать порт) и запускать захват пакетов.
Вы можете скачать его здесь
Ответ 4
Настроить Fiddler как "обратный прокси" в Windows
(для Mac см. ссылку в комментарии Partizano ниже)
Я знаю, что уже есть ответ, предлагающий это, однако я хочу дать объяснения и инструкции для этого, которые должен был предоставить Telerik, а также покрыть некоторые "gotchas", поэтому здесь идет:
Что значит настроить Fiddler как "обратный прокси" ?
- По умолчанию Fiddler только отслеживает исходящие запросы с компьютера, на котором вы запускаете Fiddler
- Чтобы отслеживать входящие запросы, вам нужно настроить Fiddler на работу как "обратный прокси"
- Это означает, что вам нужно установить Fiddler как "прокси", который перехватит входящие HTTP-запросы, которые отправляются на определенный порт (8888) на компьютере, где вы хотите прослушивать входящие запросы. Затем Fiddler пересылает эти запросы на веб-сервер на том же компьютере, отправив их на обычный порт для HTTP-запросов (обычно порт 80 или 443 для https). Это действительно очень быстро и легко сделать!
- Стандартный способ установить это с помощью Fiddler - заставить Fiddler перехватить весь запрос, отправленный в порт "8888" (так как это обычно не будет использоваться ничем другим, хотя вы можете так же легко использовать другой порт)
- Затем вам нужно использовать редактор реестра, чтобы заставить Fiddler пересылать любые HTTP-запросы, которые Fiddler получает на порт 8888, чтобы они перенаправлялись на стандартный порт http (порт 80, порт 443 для запроса https или другой настраиваемый порт, на который настроен ваш веб-сервер)
ПРИМЕЧАНИЕ. Чтобы это сработало, любой запрос, который вы хотите перехватить, должен быть отправлен на порт 8888
Вы делаете это, добавляя: 8888 к вашему имени хоста, например, например, для маршрута MVC:
Http://myhostname: 8888/контроллер/действие
Пошаговое руководство
Убедитесь, что Fiddler может принимать удаленные HTTP-запросы на порт 8888:
Запустить Fiddler как администратор. Выберите "Инструменты" > "Параметры Fiddler" > "Подключения" и убедитесь, что "Разрешить удаленные компьютеры подключиться" отмечен, а "Fiddler listenens on port" установлен на 8888:
![введите описание изображения здесь]()
Настроить Fiddler для пересылки запросов, полученных на порт 8888, на порт 80
- Закрыть Fiddler
- Запустить REGEDIT
- Создайте новый DWORD с именем ReverseProxyForPort внутри HKEY_CURRENT_USER\SOFTWARE\Microsoft\Fiddler2.
- Теперь установите значение DWORD для локального порта, к которому вы хотите перенаправить входящий трафик (обычно это порт 80 для стандартного HTTP-сервера).
- Чтобы сделать это, щелкните правой кнопкой мыши созданный DWORD и выберите "Изменить". Убедитесь, что для "Base" установлено значение "Decimal" и введите "80" (или другой порт) в качестве "данных значения":
Убедитесь, что порт 8888 открыт на брандмауэре
- Вы должны убедиться, что порт 8888 открыт для внешних запросов (он не будет по умолчанию, если ваш сервер защищен брандмауэром).
Что это! Теперь Fiddler должен быть настроен как обратный прокси-сервер, чтобы перехватить все запросы с порта 8888 (чтобы вы могли просматривать их в Fiddler), и затем он будет перенаправлять их на ваш веб-сервер для фактического управления.
Проверить запрос
- Перезапустить Fiddler
- Чтобы проверить, что Fiddler перехватывает внешние запросы, откройте браузер на том же компьютере, на котором вы установили Fiddler как обратный прокси. Перейдите в браузер http://127.0.0.1:8888
- Этот тест делает основной запрос на порт 8888
- Вы должны увидеть запрос, перехваченный Fiddler
- Теперь вы можете протестировать запрос с другого компьютера, например, сделав запрос из браузера на другом компьютере, подобном этому (где "remoteHostname" - это имя хоста на компьютере, на котором вы установили Fiddler как обратный прокси)
Http://RemoteHostName: 8888/контроллер/действие
- В качестве альтернативы вы можете составить запрос, используя другой экземпляр Fiddler на удаленном компьютере, используя URL-адрес, аналогичный приведенному выше. Это позволит вам выполнить запрос GET или POST.
ВАЖНО: после того, как вы закончите просмотр своих запросов, вернитесь в Инструменты > Параметры Fiddler > Подключения и удалите параметр "Разрешить удаленные компьютеры для подключения", в противном случае третьи стороны смогут отсканировать трафик через ваш сервер
Ответ 5
Microsoft Message Analyzer - это преемник Microsoft Network Monitor 3.4
Если ваш входящий HTTP-трафик идет на ваш веб-сервер с портом 58000, запустите анализатор в режиме администратора и нажмите новый сеанс:
Использовать фильтр: tcp.Port = 58000 и HTTP
трассировка: "Локальные сетевые интерфейсы (Win 8 и более ранние версии)" или "Локальные сетевые интерфейсы (Win 8.1 и более поздние версии)" зависят от вашей ОС
Уровень анализа: полный
Ответ 6
Вы можете подумать о том, чтобы запустить Fiddler в качестве обратного прокси-сервера, вы должны иметь возможность подключать клиентов к адресу Fiddler, а затем перенаправлять запросы от Fiddler в ваше приложение.
Для этого потребуется либо небольшая манипуляция с портом, либо клиентская конфигурация, в зависимости от того, что проще в зависимости от ваших требований.
Подробности о том, как это сделать: http://www.fiddler2.com/Fiddler/Help/ReverseProxy.asp
Ответ 7
Используйте TcpView, чтобы увидеть прослушивание портов и соединения. Это будет не дать вам запросы.
Чтобы видеть запросы, вам нужно обратное прокси-серверу, о котором я не знаю никаких таких инструментов.
Используйте трассировку, чтобы предоставить вам части запросов (сначала 1 Кбайт запроса).
Ответ 8
Использование Wireshark..
Я не пробовал:
http://wiki.wireshark.org/CaptureSetup/Loopback
Если это сработает, вы можете фильтровать трафик http
/http contains GET
/http contains POST
.
Возможно, вам придется запустить два экземпляра Wireshark, один захват локального и один удаленный пульт. Я не уверен.
Ответ 9
Вы также можете попробовать HTTP Debugger, он обладает встроенной способностью отображать входящие HTTP-запросы и не требует каких-либо изменений в конфигурации системы.
![Отладчик HTTP]()