Як відстежувати всі вхідні http-запити?


75

Мені потрібно стежити за моєю заявкою з вхідних http POSTіGET запитами, що надходять ззовні, а іноді всередині машини.

Чи можливо це?

Використовував скрипт, але це лише не надходить (не ззовні машини), або я неправильно його налаштував?

Це для мого веб-додатку, який призначений для отримання POSTз зовнішнього сервера.

Відповіді:


66

Що вам потрібно зробити, це налаштувати Fiddler на роботу як "зворотний проксі"

На веб-сайті Fiddler є інструкції щодо двох різних способів, як це зробити. Ось копія кроків:


Крок No0

Перш ніж будь-який із наведених нижче параметрів буде працювати, потрібно дозволити іншим комп’ютерам підключатися до Fiddler. Для цього натисніть Інструменти> Параметри скрипта> Підключення та встановіть прапорець «Дозволити віддаленим комп’ютерам підключатися». Потім закрийте Скрипаль.

Варіант №1: Налаштуйте скрипт як зворотний проксі-сервер

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. Клацніть Інструменти | Параметри скрипта та переконайтеся, що встановлено прапорець «Дозволити віддаленим клієнтам підключатися». За потреби перезапустіть.
  3. Виберіть Правила | Налаштування правил.
  4. Всередині обробника OnBeforeRequest додайте новий рядок коду:
    if (oSession.host.toLowerCase () == "webserver: 8888") oSession.host = "webserver: 80";
  5. На смартфоні перейдіть до http://webserver:8888

Запити від смартфона з’являться у скрипті. Запити пересилаються з порту 8888 на порт 80, де працює веб-сервер. Відповіді надсилаються через Fiddler на смартфон, який не здогадується, що вміст спочатку надходив з порту 80.


8
Чому це так складно? Звичайно, існує програма, яка переглядає всі мої мережеві інтерфейси і просто читає http-пакети. Не вдається отримати для цього wireshark або мережевий монітор ....
Exitos

Wireshark ДУЖЕ потужний, і я особисто лише почав вчитися працювати з ним за останні кілька місяців. Я був би здивований, дізнавшись, що він теж не може зробити щось подібне. Можливо, справа лише в налаштуванні правильної фільтрації на потрібному інтерфейсі. Я надішлю ще одну відповідь, якщо зможу зрозуміти, як це зробити за допомогою Wireshark.
Саул Долгін

Привіт Сауле, ти читав мою відповідь нижче. Якщо ви додасте маршрут у вікнах, це витіснить весь трафік, а потім повернеться назад.
Exitos,

Я прочитав вашу відповідь, і це має сенс фіксувати трафік localhost за допомогою wireshark. Думаю, мені слід зазначити, що Fiddler також здатний фіксувати трафік "localhost" ... але є кришка. Ви повинні робити свої запити на веб-сервері, використовуючи ім'я хосту замість "localhost" або адресу зворотного зв'язку 127.0.0.1.
Саул Долгін

@SaulDolgin Як нам налаштувати Fiddler, якщо веб-служба працює на порту 11000? як mywebserver: 11000 / mywebservice.asmx
FMFF

32

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

Ви можете завантажити його тут


1
вау, це чудовий інструмент! Я намагався використовувати Fiddler і встановлювати віддалений проксі, але ніколи не вдавався. За допомогою мережевого монітора я бачу, як називається моя веб-служба та які запити.
Олег Д.

У мене була така ж проблема, як і у попереднього плаката, я ніколи не зміг змусити Скрипця працювати коректно. Інструмент монітора мережі MS працював як чемпіон.
буферний

1
Цей інструмент працював добре, але я, здається, не можу перевірити корисне навантаження для безпечних викликів SSL. Я отримую лише SSLApplicationData: Binary Large Object (304 Bytes)повідомлення. Чи є спосіб переглянути ці дані?
atconway

1
SSL-трафік не повинен легко розшифровуватися. У цьому полягає намір використання SSL, щоб запобігти підслуховуванню, яке перевіряє трафік. У будь-якому випадку, є інструмент розшифровки для розшифровки SSL з монітора MS Network, якщо у вас є під рукою приватний ключ сервера SSL: blogs.technet.com/b/netmon/archive/2010/03/08/… . Скрипаль робить це, використовуючи підроблений сертифікат, ефективно здійснюючи атаку "людина посередині".
YudhiWidyatama

1
"Network Monitor 3.4 - це заархівований аналізатор протоколів версії, який більше не розробляється. Microsoft Message Analyzer - це заміна Network Monitor 3.4."
styfle

13

Налаштуйте Fiddler як "зворотний проксі-сервер" у Windows

(для Mac див. посилання в коментарі Partizano нижче)

Я знаю, що вже є відповідь, яка пропонує це, однак я хочу надати пояснення та вказівки щодо цього, які повинен був надати 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:

введіть тут опис зображення

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

  • Закрийте Скрипаль
  • Почніть REGEDIT
  • Створіть новий DWORD з назвою ReverseProxyForPort всередині HKEY_CURRENT_USER \ SOFTWARE \ Microsoft \ Fiddler2.
    • Тепер встановіть значення DWORD на локальний порт, на який ви хочете перенаправити вхідний трафік (зазвичай порт 80 для стандартного сервера HTTP)
  • Для цього клацніть правою кнопкою миші створений вами DWORD і виберіть "Змінити". Переконайтеся, що для параметра «База» встановлено значення «Десяткове число» та введіть «80» (або інший порт) як «Дані значення»:

Переконайтеся, що порт 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.

ВАЖЛИВО. Після завершення перегляду запитів поверніться до Інструменти> Параметри скрипта> Підключення та видаліть параметр «Дозволити віддаленим комп’ютерам підключатися», інакше сторонні сторони зможуть відбивати трафік через ваш сервер


В операційних системах без REGEDIT (Window ahs registry mac osx та linux немає), що має бути рівним кроком?
partizanos


9

Хлопці знайшли ідеальний спосіб контролювати ВСЕ трафік, який протікає локально між запитами від моєї машини до моєї машини:

  1. Встановіть Wireshark

  2. Коли вам потрібно зафіксувати трафік, який протікає від локального хосту до локального хосту, ви будете намагатися використовувати wireshark, оскільки це лише контролює вхідний трафік на мережевій карті. Це можна зробити шляхом додавання до вікон маршруту, який змусить весь трафік проходити через шлюз, і це буде зафіксовано на мережевому інтерфейсі.

    Для цього додайте маршрут за допомогою :<ip address> <gateway>

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

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


6

Microsoft Message Analyzer є наступником Microsoft Network Monitor 3.4

Якщо ваш вхідний трафік http надходить на ваш веб-сервер з портом 58000, запустіть Analyzer у режимі адміністратора та натисніть новий сеанс:

використовувати фільтр: tcp.Port = 58000 та HTTP

сценарій трасування: "Інтерфейси локальної мережі (Win 8 і раніше)" або "Інтерфейси локальної мережі (Win 8.1 і пізніші версії)" залежить від вашої ОС

Рівень синтаксичного аналізу: повний


3

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

Для цього знадобиться або маніпуляція з портами, або налаштування клієнта, залежно від того, що простіше залежно від ваших вимог.

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


1
Посилання переміщено на docs.telerik.com/fiddler/Configure-Fiddler/Tasks/…
Даніель

2

Використовуйте TcpView, щоб побачити прослуховування портів та з'єднання. Однак це не дасть вам запитів.

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

Використовуйте трасування, щоб надати вам частини запитів (перші 1 КБ запиту).


2

Використання Wireshark ..

Я не пробував цього: http://wiki.wireshark.org/CaptureSetup/Loopback

Якщо це працює, ви можете відфільтрувати для http/ http contains GET/ http contains POSTтрафіку.

Можливо, вам доведеться запустити два екземпляри Wireshark, один - локальний, а другий - віддалений. Я не впевнений.


1

Ви також можете спробувати налагоджувач HTTP , він має вбудовану можливість відображати вхідні запити HTTP і не вимагає жодних змін у конфігурації системи.

Налагоджувач HTTP

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.