Fiddler4——手机抓包
一、下载工具包
百度搜索”fiddler 下载“ ,安装最新版本
下载的软件安装包为“fiddler_4.6.20171.26113_setup.exe”格式,双击安装。安装成功,在“开始”-“所有程序”,就会看见这样的图标,若是常用的话,也可以在桌面建一个快捷方式,如下图:
二、fiddler手机抓包原理
fiddler手机抓包的原理与抓pc上的web数据一样,都是把fiddler当作代理,网络请求走fiddler,fiddler从中拦截数据,由于fiddler充当中间人的角色,所以可以解密https
在本机开启了一个http的代理服务器,然后它会转发所有的http请求和响应。
Fiddler 是以代理web 服务器的形式工作的,它使用代理地址:127.0.0.1,端口:8888。网络请求走fiddler,fiddler从中拦截数据,由于fiddler充当中间人的角色,所以可以解密https。因此,它比一般的firebug或者是chrome自带的抓包工具要好用的多。不仅如此,它还可以支持请求重放等一些高级功能。它还可以支持对手机应用进行http抓包的。本文主要考察的就是手机抓包。
浏览器的代理设置默认是关着的,win7谷歌浏览器“设置--高级--系统--打开代理服务器--局域网设置--代理服务器”勾上。代理开关为开:可以抓到包,代理开关为关:抓不到包。
前提条件:
1).电脑需要安装Fiddler
2).测试手机需要支持Wifi
3).测试手机与电脑需要同一网络
4).所测APP需支持代理
三、设置Fiddler
菜单:
Tools-> Fiddler Options->HTTPS, 选中"Decrpt HTTPS traffic", Fiddler就可以截获HTTPS请求;
Tools-> Fiddler Options->Connections,勾选"Allow remote computers to connect" , 是允许别的机器把HTTP/HTTPS请求发送到Fiddler上来;
注: 8888为默认端口号,可修改,但需注意两点,一是本机空闲端口,二是手机代理设置时端口要一致。
查看本机的ip地址 ;
打开Fiddler,右上角有一个Online,这里也可以查看IP。如果和电脑的ip不一致时,以这里的为准。
四、 手机端进行参数配置
条件:保证手机和电脑都处于同一个网络。
Step1、给手机设置代理
Step2、打开手机浏览器,输入ip:端口号=192.***.**.***:8888,点击前往,见下图:
Step3、打开一个下载证书的页面,如下,点击最下方的“FiddlerRoot certificate”按钮,下载证书。
Step4、点击按钮,进入下个页面,出现一个安装文件,点击“安装”。
Step5、跳转页面要求设置一个手机密码,就是开机密码,没有就自己设置一个,记住密码就行会。输入开机密码后,出现一个授权证书,如下,点击安装即可。
出现“已验证”字样,如下图。表示证书安装成功。
五、验证手机抓包
操作手机,电脑fiddler中会显示一些http信息,即为成功
打开手机的浏览器,输入网址“baidu.com”。查看Fiddler上的有请求数据。结果如下:
六:后续问题---fiddler抓不到的情况分析
01. fiddler并不是支持全部协议
fiddler并不支持全部协议,目前已知的有http2、tcp、udp、websocket等,如果应用走了以上协议,那么fiddler肯定是抓不到的。
http2:因为fiddler是基于.net framework实现的,因为.net framework不支持http2,所以fiddler无法抓取http2
02. 证书写死在app中,fiddler不能抓取
fiddler抓包的原理是中间人攻击,也就是说,两头瞒,欺骗客户端&&欺骗服务器端,如果https证书写死在app里,也就是说,app不信任fiddler颁发给它的证书,app只信任自己的证书,fiddler没法瞒客户端了,因此fiddler也就抓取不到包了。
再多说几句,如果是自己开发的app,开发调试方便起见,可以使用类似wireshark的工具导入服务器证书,抓包解密。
修正不能抓取包问题--除了上述已知不能抓包的情况,其他情况都应该能抓取。以下是排查,修正问题的步骤。
01. 确认能否抓到手机浏览器的百度首页
因为百度是https加密的,所以如果配置正确肯定是可以抓到的。注意,我这里说的是三个条件,手机&&浏览器&&百度网页的首页,这些条件,都得满足 。
02. 重新安装证书
如果抓不到,可以确定是配置有问题。核实fiddler使用certmarker插件并且在手机上也安装了;如果已安装,则重新安装。 如果还不work,那么,重新生成证书,电脑和手机都重新安装,然后重启fiddler。一般来说,重新安装手机上的证书就解决问题了。