Как перехватить HTTP-запросы и ответы клиентского компьютера (как это делает Fiddler) - PullRequest
15 голосов
/ 17 июня 2009

Я думал, что единственный способ перехватить запрос - это использовать прокси-сервер, но фидлер каким-то образом может перехватывать HTTP-запросы и ответы, не настраивая ничего в любых браузерах.

Что происходит под капотом?

А вы знаете какую-нибудь библиотеку для этого? (На любых языках)

Ответы [ 8 ]

23 голосов
/ 20 июня 2009

Fiddler - это прокси, написанный на C # и обертывающий базовые сокеты.

Он регистрируется в WinINET с использованием соответствующего вызова API во время работы и отключается таким же образом. Большинство браузеров автоматически определяют настройки прокси-сервера WinINET и используют их. Firefox этого не делает, поэтому в текущих версиях Fiddler устанавливается дополнение Firefox.

-EricLaw [MSFT]

13 голосов
/ 17 июня 2009

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

Подробнее здесь

4 голосов
/ 17 июня 2009

Я не знаю, как это делает Fiddler, но это можно сделать с помощью Многоуровневого поставщика услуг в Windows.

Из Википедии:

«Многоуровневый поставщик услуг (LSP) - это функция интерфейса поставщика услуг (SPI) Microsoft Windows Winsock 2. Многоуровневый поставщик услуг - это библиотека DLL, которая использует API-интерфейсы Winsock для вставки себя в стек TCP / IP. Стек, многоуровневый поставщик услуг, может перехватывать и изменять входящий и исходящий интернет-трафик, что позволяет обрабатывать весь трафик TCP / IP, проходящий между Интернетом и приложениями, имеющими доступ к Интернету (такими как веб-браузер, почтовый клиент, и т.д.). "

1 голос
/ 18 июня 2009

Другим способом перехвата трафика без прокси-сервера является WCCP на поддерживаемом устройстве.

http://www.cisco.com/en/US/docs/ios/11_2/feature/guide/wccp.html

1 голос
/ 17 июня 2009

Другой вариант - использовать что-то вроде Wireshark . Следующее со страницы О нас на http://www.wireshark.org/

Wireshark является передовым в мире анализатор сетевых протоколов и является де-факто (и часто де-юре) стандарт во многих отраслях и образовательных учреждения.

Особенности

Wireshark имеет богатый набор функций, который включает в себя следующее:

  • Глубокая проверка сотен протоколов, с добавлением большего количества всех время
  • Живой захват и анализ в автономном режиме
  • Стандартный трехпанельный браузер пакетов
  • Мультиплатформенность: работает на Windows, Linux, OS X, Solaris, FreeBSD, NetBSD, и многие другие
  • Захваченные сетевые данные можно просматривать с помощью графического интерфейса или в режиме TTY. Утилита TShark
  • Самые мощные фильтры в отрасли
  • Богатый анализ VoIP
  • Чтение / запись множества различных форматов файлов захвата: tcpdump (libpcap), Pcap NG, Catapult DCT2000, Cisco Secure IDS iplog, сетевой монитор Microsoft, Сеть General Sniffer® (сжатая и без сжатия), Sniffer® Pro и NetXray®, Сетевые инструменты Наблюдатель, NetScreen Snoop, Novell LANalyzer, RADCOM WAN / LAN Analyzer, Шомити / Финисар Сюрвейер, Tektronix K12xx, Visual Networks Visual UpTime, WildPackets EtherPeek / TokenPeek / AiroPeek и многие другие другие
  • Захват файлов, сжатых с помощью gzip, может быть распакован на лету
  • Данные в реальном времени могут быть считаны из Ethernet, IEEE 802.11, PPP / HDLC, ATM, Bluetooth, USB, Token Ring, Рамка Реле, FDDI и другие (в зависимости от твоя платформа)
  • Поддержка расшифровки для многих протоколов, включая IPsec, ISAKMP, Kerberos, SNMPv3, SSL / TLS, WEP и WPA / WPA2
  • Правила раскраски могут быть применены к списку пакетов для быстрого, интуитивно понятного анализ
  • Вывод можно экспортировать в XML, PostScript®, CSV или простой текст
1 голос
/ 17 июня 2009

Полагаю, вы не хотите слышать, что вы можете просто перехватить их на веб-сервере вместо клиента (если он локально) или использовать WPAC (автоматическая настройка прокси).

Другим вариантом является использование программного обеспечения, такого как SocksCap, которое «отлаживает» процесс браузера (или веб-сервера), и всякий раз, когда он вызывает некоторые функции winsock, они перехватывают его и вызывают собственный код.

Библиотека для таких вещей (перехватывает вызовы библиотек в отлаженном процессе): обход .

1 голос
/ 17 июня 2009

Из заметок MSDN на расширяющий скрипач

Fiddler поддерживает обработчик событий JScript .NET, который позволяет пользователю автоматически изменять HTTP-запрос или ответ. Движок может изменить внешний вид сеанса в пользовательском интерфейсе Fiddler, привлечь внимание к ошибкам или вообще удалить неинтересные сеансы из списка.

1 голос
/ 17 июня 2009

Возможно, сетевой интерфейс работает в случайном режиме. Вот как WireShark может отслеживать сетевой трафик и отображать его.

Подробнее: http://en.wikipedia.org/wiki/Promiscuous_mode

...