Захватывает все запросы и ответы из веб-браузера? - PullRequest
7 голосов
/ 16 августа 2010

Есть ли способ получить и распечатать все запросы и ответы из веб-браузера, включая асинхронные запросы?

Ответы [ 2 ]

5 голосов
/ 16 августа 2010

Думали ли вы об использовании Fiddler ? У них даже есть API , который вы можете использовать для этого.

Редактировать

Вы можете попробовать использовать Навигационное событие или Событие LoadCompleted для получения информации об ответе. Возможно, вы сможете использовать Навигационное событие для запроса информации. Эти события могут происходить с асинхронными запросами, но я не уверен в этом.

Править наносит ответный удар

Ну, я провел некоторое тестирование, используя вышеуказанные события, и я боюсь, что ничего не получил. События не давали мне ничего, что я мог бы использовать. Несмотря на то, что у них был доступ к веб-ответам и веб-запросам, в моем тестировании они всегда были ничем / ничем.

Полагаю, печальная реальность заключается в том, что элемент управления веб-браузера не был предназначен для использования так, как вы хотите. Он предназначен только для обслуживания веб-страниц / данных и не предоставляет вам доступа к данным. Я думаю, что они сделали это как C.Y.A. мера, чтобы кто-то не сделал браузер вредоносного / шпионского ПО.

Лучше всего будет связывать веб-браузер с fiddler (или какой-нибудь другой библиотекой 'sniffing').

4 голосов
/ 31 августа 2010

Еще один способ сделать это - реализовать собственный обработчик Asynchronous Pluggable Protocol, но это не тривиальная задача. По сути, приложения - это механизм, используемый Internet Explorer для загрузки данных с URL-адреса через URLMON. Вы можете реализовать свое собственное приложение, которое заменит обработчик по умолчанию, который использует URLMON, что позволит вам контролировать все запросы и ответы.

Вместо замены обработчика по умолчанию вы также можете реализовать приложение, которое оборачивает его. Обычно упоминаемый пример - PassThroughAPP , созданный Игорем Тандетником, который показывает, как что-то подобное можно сделать. Вы также можете найти реализацию C # в этом проекте кода article . Я полагаю, что интерфейс, который вас больше всего заинтересовал бы, это IHttpNegotiate и метод OnResponse , который позволяет клиенту проверять заголовки запроса и ответа.

Есть некоторые проблемы с PassThroughApp, которые подробно описаны вместе с возможным решением здесь . Еще несколько ресурсов включены ниже.

http://support.microsoft.com/?id=kb;en-us;303740 http://www.codeproject.com/KB/aspnet/AspxProtocol.aspx

...