Как перехватывать HTTP-запросы и ответы клиентской машины (например, скрипач)

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

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

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

Ответ 1

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

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

Ответ 2

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

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

-EricLaw [MSFT]

Ответ 3

Я не знаю, как это делает скрипач, но это можно сделать с помощью Layered Service Provider в Windows.

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

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

Ответ 4

Может быть запущен сетевой интерфейс в беспорядочном режиме. Именно так WireShark может отслеживать сетевой трафик и отображать его.

Дополнительная информация: http://en.wikipedia.org/wiki/Promiscuous_mode

Ответ 5

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

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

Ответ 6

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

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

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

Ответ 7

Другой вариант - использовать что-то вроде Wireshark. Ниже на странице About на http://www.wireshark.org/

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

Функции

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

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