2015年8月30日
Fiddler抓取.NET应用程序的http通讯数据
Fiddler是一个http协议调试代理工具,据说它能够记录并检查我们的电脑和互联网之间的所有http通讯数据。那么怎样才能让Fiddler抓取我们.Net应用程序的http通讯数据呢?本文以用Fiddler抓取C#编写的模拟登录程序http通讯数据为例来分享这个主题。
一般情况下,我们都会用Fiddler去抓取浏览器访问网页时的http通讯数据,这个时候只要打开Fiddler就可以了,我们访问任何网页,Fiddler都会如实记录下相关信息。但是当我们想要抓取.Net应用程序的http通讯数据时,会发现如果仅仅是打开,我们在Fiddler中看不到任何关于我们应用程序的数据。
想要让.NET Framework自动连接到Fiddler,首先必须在开启.NET应用程序之前开启Fiddler,详细信息可以参考这里http://docs.telerik.com/fiddler/Configure-Fiddler/Tasks/ConfigureDotNETApp
我选用原文中描述的在C#应用程序中设置代理的方式:
我的应用程序中用了苏飞论坛中提供的HttpHelper,因此这里以在HttpHelper中设置代理的方式来说明。在我们配置HttpItem时,为其中的WebProxy赋值,例如:
1 2 3 4 5 6 7 8 |
item = new HttpItem() { URL = "http://www.nydus2015.info/login?callback=/loginbbs", Method = "GET", WebProxy = new WebProxy("127.0.0.1", 8888), Accept = "image/gif, image/jpeg, image/pjpeg, image/pjpeg, application/msword, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/x-ms-application, application/x-ms-xbap, application/vnd.ms-xpsdocument, application/xaml+xml, */*", UserAgent = "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)" }; |
在赋值完成后,再次运行.NET应用程序时,我们就可以在Fiddler中看到C#应用程序的http通讯数据。
若.net程序中添加了fiddler的代理,那么在运行时就需要开启fiddler,否则.net程序会出现“无法连接到远程服务器”的现象。