从Web浏览器控件捕获所有请求和响应?

时间:2010-08-16 15:45:35

标签: c# .net wpf wpf-controls webbrowser-control

是否可以捕获并打印出来自Web浏览器控件的所有请求和响应,包括异步请求?

2 个答案:

答案 0 :(得分:5)

您是否考虑过使用Fiddler?他们甚至可以使用API来实现此目的。

修改

您可以尝试使用Navigated eventLoadCompleted event获取回复信息。您可以使用Navigating event获取请求信息。这些事件可能会在异步请求中发生,但我不确定。

编辑反击

我使用上述事件进行了一些测试,我担心什么都没有。事件没有给我任何我可以使用的东西。即使他们可以访问webresponse和webrequest,但在我的测试中它们总是无效/无效。

我想令人遗憾的是,网页浏览器控件不是按照您想要的方式使用。它仅用于提供网页/数据,并不提供查看数据的权限。我认为他们是以C.Y.A.衡量,以防止有人制作恶意软件/间谍软件浏览器。

您最好的选择是将网页浏览器与小提琴手(或其他一些“嗅探”库)结合起来。

答案 1 :(得分:4)

实现此目的的另一种方法是实现自己的Asynchronous Pluggable Protocol处理程序,但这不是一项简单的任务。基本上,APP是Internet Explorer用于通过URLMON从URL下载数据的机制。您可以实现自己的APP来替换URLMON使用的默认处理程序,这将允许您控制所有请求和响应。

除了替换默认处理程序,您还可以实现包装它的APP。一个常见的例子是Igor Tandetnik创建的PassThroughAPP,它展示了如何完成这样的事情。您还可以在此代码项article中找到C#实现。我相信您最感兴趣的接口是IHttpNegotiateOnResponse方法,它允许客户端检查请求和响应标头。

PassThroughApp存在一些问题,详细说明以及可能的解决方案here。下面列出了一些资源。

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