Захват HTTP-трафика через код - какие есть варианты?
Я работал над этим некоторое время - я создаю модуль, который должен захватывать трафик HTTP/HTTP, который идет от и к хост-компьютеру. Мой оригинальный язык - Java, и я могу сделать следующее:
- Создайте прокси-сервер, используя LittleProxy
- Измените настройки моего браузера, чтобы использовать созданный мной прокси
- Выполните транзакции в браузере, чтобы мой прокси мог их записать.
Это работает нормально, за исключением следующих проблем:
- Для кого-то, использующего мое приложение, это создает дополнительные накладные расходы для ручной настройки сведений о прокси в браузере (хотя это можно сделать с помощью кода, изменив настройки браузера и запустив его).
- Мое приложение может записывать только транзакции из определенного браузера, который указывает на прокси.
Я хотел бы улучшить этот модуль таким образом, чтобы пользовательские накладные расходы были удалены. Что-то вроде того, что Wireshark, Fiddler и LoadRunner (VuGen). У меня вопрос, как они это делают? Они также управляют прокси где-нибудь за кулисами? Или они перехватывают HTTP-трафик из сети, ОС или какого-то другого уровня?
Если быть точным, у меня есть следующие вопросы:
- Является ли создание прокси единственным способом получения HTTP-запросов?
- Могу ли я отслеживать запросы / ответы с уровня ОС (без прокси)? Если да, достаточно ли хорошо Java или я должен склоняться к.NET (C# или что-то)?
- Если прокси является единственным способом, могу ли я использовать Fiddler или Wireshark? Есть ли у них API, которые я могу включить в свой код? (Я не сталкивался ни с одним в их документации - вероятно, я не выгляжу достаточно усердно)
Любая информация поможет мне с направлением. Пожалуйста помоги!
Спасибо, Шрирам Шридхарен