前面弄了一个简单的c#爬虫,但是有些数据在web上看不到,仅仅属于桌面应用程序或者手机端app。
查询资料学习网络抓包,看能不能从应用程序中解析出需要的数据。
利用fiddler工具能够抓包的条件,第三方应用程序使用:
- IE Chrome等浏览器
- 程序使用WinInet库进行HTTP/HTTPS通信
- 程序内嵌Webbrowser
如果程序没有使用Windows提供的WinInet库进行HTTP通信,而是自带了一个库,比如VC程序使用libcurl,JAVA程序使用JDK中的URLConnection或第三方OkHttp,C#使用System.Net.Http等,这些库在程序内部实现了HTTP包的封装与拆解,那么最终他们将直接调用操作系统的socket api发送数据,操作系统当然就没法给他们设置。也就无法抓包。
可以用 depends]工具查看第三方应用程序是否依赖WININET.DLL,也可以用VisualStudio自带的工具 spy++]查看第三方应用是否内嵌Webbrowser控件,如果有内嵌,则Webbrowser中的内容可以用Fiddler抓包。
不满足上述条件的第三方程序,没法用Fiddler抓包,所以创造条件去抓包。
Fiddler抓包的原理是在本机的8888端口开启了HTTP/HTTPS代理,任何通过Fiddler代理的HTTP/HTTPS通信内容都会被解析,所以只要能给第三方程序设置HTTP/HTTPS代理,目标程序的HTTP通讯内容就会出现在Fiddler里。
- 第三方程序自身带有代理设置功能。
- 第三方程序自身不带代理设置,引入其他软件强制设置代理,比如Proxifier。
fiddler