浏览器通过http协议发送给服务器的内容很容易被拦截,因此,用http协议传输一些敏感数据的话是非常危险的,因此,现在好多网站都采用的是https协议。
fiddler默认情况下只会捕获http请求,需要设置后才能捕获https,接下来让我们一起简单了解一下https协议,以及如何通过fiddler对其进行抓包。
1 什么是HTTPS
简单理解,https就是加过密的http,使用https后,浏览器客户端和web服务器传输的数据是加密传输的,只有客户端和服务端知道具体内容。
采用HTTPS的网站都需要去数字证书认证机构(Certificate Authority,CA)申请证书。通过这个证书,浏览器在请求数据前与web服务器有几次握手验证,以证明相互的身份,然后对http请求和响应进行加密。
2 Fiddler如何捕获https会话
默认情况下,fiddler不会捕获https协议的会话,需要进行设置:
菜单栏->Tools->Options->Https页签,按照下图进行勾选:
如果有弹出其他弹窗,选择yes进行证书安装:
安装完整后,打开浏览器访问一下百度首页,检查是否可以捕获到请求信息。
3https证书的安装和查看
证书安装:
如果浏览器访问https网址出现提示说 此连接不被信任时,可以在fiddler中导出证书文件,安装到浏览器中。
导出证书步骤:
证书安装步骤(以谷歌浏览器为例,不同浏览器操作大同小异):
证书查看:
1、用键盘上的Win R快捷键,然后输入certmgr.msc命令
2、通过fiddler工具https协议配置页面的actions下的一个选项进行打开:
打开本地证书管理器页面如下:
4、Fiddler捕获https的握手验证请求
在使用浏览器访问百度首页的时候,可以查看到,fiddler的会话列表会出现很多“Tunnel to”的请求,如下图所示:
Http协议在客户端和服务器之间传输的时候,需要建立一个通道,这个通道称为Tunnel,客户端和服务器之间的通信都是在这条Tunnel的基础之上实现的。
当客户端无法直接访问某些网络时,只能通过代理服务器访问网络,然后,将内容转发给客户端,从宏观上看,客户端与服务器端就像建立了一条隧道一样。但是由于http tunnnel可控性不强,所以,服务器通常会限制”可connect的端口”(一般只开放SSL的443端口)。因为fiddler是代理软件,访问百度网页(使用了https协议),会使客户端用connect方法与目标服务器建立http tunnel,一旦connection建立完成,后续fiddler会转发、接收所有的tcp stream。
当然,并不是所有的受限网络(restricted network),https通信时,都会使用connect建立http tunnel,如果目标服务器限制connect方法,那么就会使用其它方法来建立通道(post/get)
如果觉得会话列表的tunnel to请求信息太多,影响使用的话,可以设置隐藏掉(Rules->Hide CONNECTs)