Как я могу контролировать все входящие http запросы? - PullRequest
67 голосов
/ 13 декабря 2010

Мне нужно следить за приложением по входящим http POST и GET запросам, исходящим извне, а иногда и внутри аппарата.

Возможно ли это?

Используется fiddler, но это только делает исходящие сообщения не входящими (извне аппарата) или я настроил их неправильно?

Это для моего вебаприложение, которое должно получать POST с внешнего сервера.

Ответы [ 9 ]

61 голосов
/ 13 декабря 2010

Что вам нужно сделать, это настроить Fiddler для работы в качестве «обратного прокси»

На веб-сайте Fiddler есть инструкции по 2 различным способам сделать это.Вот копия шагов:


Шаг # 0

Чтобы сработал любой из следующих параметров, необходимо разрешить другим компьютерам подключаться к Fiddler,Для этого нажмите Инструменты> Параметры Fiddler> Подключения и установите флажок «Разрешить подключение удаленным компьютерам».Затем закройте Fiddler.

Опция № 1: настроить Fiddler в качестве обратного прокси-сервера

Fiddler можно настроить так, чтобы любой трафик, отправляемый на http://127.0.0.1:8888, автоматически отправлялся надругой порт на той же машине.Чтобы настроить эту конфигурацию:

  1. Запустите REGEDIT
  2. Создайте новый DWORD с именем ReverseProxyForPort в HKCU \ SOFTWARE \ Microsoft \ Fiddler2.
  3. Установите DWORD на локальный портвы хотите перенаправить входящий трафик (обычно порт 80 для стандартного HTTP-сервера)
  4. Перезапустить Fiddler
  5. Перейдите в браузере на http://127.0.0.1:8888

Вариант № 2: написать правило FiddlerScript

В качестве альтернативы, вы можете написать правило, которое делает то же самое.

Допустим, вы работаете с веб-сайтом на порту 80 компьютера с именем WEBSERVER.Вы подключаетесь к веб-сайту с помощью Internet Explorer Mobile Edition на устройстве Windows SmartPhone, для которого нельзя настроить веб-прокси.Вы хотите захватить трафик с телефона и ответ сервера.

  1. Запустите Fiddler на компьютере WEBSERVER, работающем через порт по умолчанию 8888.
  2. Нажмите Инструменты |Параметры Fiddler и убедитесь, что установлен флажок «Разрешить подключение удаленным клиентам».Перезагрузите при необходимости.
  3. Выберите Правила |Настройте правила.
  4. Внутри обработчика OnBeforeRequest добавьте новую строку кода:if (oSession.host.toLowerCase () == "webserver: 8888") oSession.host = "webserver: 80";
  5. На смартфоне перейдите к http://webserver:8888

Запросы со смартфона появятся в Fiddler.Запросы перенаправляются с порта 8888 на порт 80, где работает веб-сервер.Ответы отправляются обратно через Fiddler на смартфон, который не подозревает, что контент изначально пришел с порта 80.

32 голосов
/ 13 декабря 2010

Я бы установил Microsoft Network Monitor, настроил инструмент так, чтобы он видел только HTTP-пакеты (фильтровал порт) и начал захватывать пакеты.

Вы можете загрузить его здесь

10 голосов
/ 01 августа 2016

Настройка Fiddler в качестве «обратного прокси» в Windows

(для Mac см. Ссылку в комментарии Партизано ниже)

Я знаю, что уже есть ответ, предлагающий это, однако я хочу предоставить объяснение и инструкции для этого, которые Telerik должен предоставил, а также охватить некоторые «ошибки», так что вот так:

Что значит настроить 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/controller/action


Пошаговое

Убедитесь, что Fiddler может принимать удаленные HTTP-запросы через порт 8888:

Запустите Fiddler от имени администратора Перейдите в Инструменты> Параметры Fiddler> Подключения и убедитесь, что для параметра «Разрешить подключение удаленных компьютеров» установлено значение «Fiddler прослушивает порт», равное 8888:

enter image description here

Настройка Fiddler для пересылки запросов, полученных через порт 8888, на порт 80

  • Закрыть Скрипач
  • Старт РЕГЕДИТ
  • Создайте новый DWORD с именем ReverseProxyForPort внутри HKEY_CURRENT_USER \ SOFTWARE \ Microsoft \ Fiddler2.
    • Теперь установите значение DWORD для локального порта, на который вы хотите перенаправить входящий трафик (обычно это порт 80 для стандартного HTTP-сервера)
  • Для этого щелкните правой кнопкой мыши на DWORD, который вы создали, и выберите «Изменить». Убедитесь, что для «Base» установлено значение «Decimal», и введите «80» (или другой порт) в качестве «Value data»:

Убедитесь, что порт 8888 открыт на брандмауэре

  • Вы должны убедиться, что порт 8888 открыт для внешних запросов (по умолчанию это не будет, если ваш сервер защищен брандмауэром)

Вот и все! Fiddler теперь должен быть настроен как обратный прокси-сервер для перехвата всех запросов с порта 8888 (чтобы вы могли просматривать их в Fiddler), а затем он перенаправит их на ваш веб-сервер для фактической обработки.

Проверка запроса

  • Перезапустить Fiddler
  • Чтобы проверить, что Fiddler перехватывает внешние запросы, откройте браузер на том же компьютере, где вы настроили Fiddler в качестве обратного прокси . Перейдите в браузере на http://127.0.0.1:8888
  • Этот тест выполняет базовый запрос к порту 8888
  • Вы должны увидеть запрос, перехваченный Fiddler
  • Теперь вы можете протестировать запрос с другого компьютера, например, сделав запрос из браузера на другом компьютере, подобном этому (где «remoteHostname» - это имя хоста на компьютере, где вы настроили Fiddler в качестве обратного прокси-сервера) :

http://remoteHostname:8888/controller/action

  • Кроме того, вы можете составить запрос, используя другой экземпляр Fiddler на удаленной машине, используя URL-адрес, аналогичный приведенному выше. Это позволит вам сделать запрос GET или POST.

ВАЖНО: После того, как вы закончили просмотр ваших запросов, вернитесь в Инструменты> Параметры Fiddler> Подключения и удалите опцию «Разрешить подключение к удаленным компьютерам», в противном случае третьи лица смогут пересылать трафик. через ваш сервер

9 голосов
/ 13 декабря 2010

Ребята нашли идеальный способ отслеживания ВСЕГО трафика, который локально проходит между запросами от моей машины к моей машине:

  1. Установка Wireshark
  2. Когда вам нужно захватить трафик, который течет от локального хоста к локальному, тогда вам будет сложно использовать wireshark, поскольку это только контролирует входящий трафик на сетевой карте.Способ сделать это - добавить маршрут к окнам, который будет форсировать весь трафик через шлюз, и это будет зафиксировано на сетевом интерфейсе.

    Для этого добавьте маршрут с помощью <ip address> <gateway>:

    cmd> route add 192.168.20.30 192.168.20.1
    
  3. Затем запустите захват на Wireshark (убедитесь, что вы выбрали интерфейс, через который проходят байты) Затем отфильтруйте.

Новые добавленные маршруты будут выделены черным цветом.(так как они являются локальными адресами)

5 голосов
/ 23 октября 2015

Microsoft Message Analyzer является преемником Microsoft Network Monitor 3.4

Если ваш http-трафик поступает на ваш веб-сервер через порт 58000, запустите Analyzer в режиме администратора и нажмите новый сеанс:

использовать фильтр: tcp.Port = 58000 и HTTP

сценарий трассировки: «Локальные сетевые интерфейсы (Win 8 и более ранние версии)» или «Локальные сетевые интерфейсы (Win 8.1 и более поздние версии)» зависит от вашей ОС

Уровень разбора: полный

3 голосов
/ 13 декабря 2010

Вы могли бы рассмотреть возможность запуска Fiddler в качестве обратного прокси-сервера, вы должны иметь возможность подключать клиентов к адресу Fiddler и затем перенаправлять запросы от Fiddler в ваше приложение.

Для этого потребуется либо немного манипулировать портами, либо настроить клиент, в зависимости от того, что проще в зависимости от ваших требований.

Подробная информация о том, как это сделать здесь: http://www.fiddler2.com/Fiddler/Help/ReverseProxy.asp

2 голосов
/ 13 декабря 2010

Использование Wireshark ..

Я не пробовал это: http://wiki.wireshark.org/CaptureSetup/Loopback

Если это работает, вы можете фильтровать трафик http / http contains GET / http contains POST.

Возможно, вам придется запустить два экземпляра Wireshark, один для захвата локальных, а другой для захвата удаленных. Я не уверен.

2 голосов
/ 13 декабря 2010

Используйте TcpView , чтобы увидеть прослушивание портов и соединения. Это не даст вам запросы.

Чтобы увидеть запросы, вам необходимо изменить прокси-сервер, которого я не знаю ни о каких подобных инструментах.

Используйте tracing , чтобы предоставить вам части запросов (первые 1 КБ запроса).

0 голосов
/ 07 сентября 2017

Вы также можете попробовать HTTP Debugger , он имеет встроенную возможность отображения входящих HTTP-запросов и не требует никаких изменений в конфигурации системы.

HTTP Debugger

...