在开发互联网应用的过程中,常常会设立或利用网络接口。为了调试对网络接口的使用,往往需要查看流入和流出网络接口的网络流量或数据包。“抓包工具”就是一类用于记录通过网络接口的数据的工具。


我们知道,网络协议是分层设计的,OSI模型将网络协议分为了7个层次。不同的抓包工具,可以在网络协议的不同层次上工作。常用的Wireshark就是一种在网络层上工作的抓包工具,不仅自带大量的协议分析器,而且可以通过编写Wireshark插件来识别自定义的协议。虽然Wireshark功能强大,但是却并不能解决所有的抓包问题,其原因在于:


  • Wireshark工作在网络层;如果计算机配置了IPSec传输层加密,则在网络层的流量都已经被加密,什么也看不到。

  • 当今大量网络接口使用HTTPS加密,Wireshark不能抓取到HTTPS流量的明文内容。

    

那么,如何抓取到HTTPS请求的明文内容呢?使用Fiddler就可以办到。


Fiddler是Eric Lawrence编写的HTTP抓包软件。Fiddler工作在应用层上,作为其他程序的HTTP代理服务器。它可以直接抓取并分析HTTP流量,也可以作为“中间人”抓取并分析HTTPS流量。


Fiddler抓取HTTPS流量

 fiddler的http、https的抓包功能非常强大,可非常便捷得对包进行断点跟踪和回放,但是普通的配置对于像招商银行、支付宝、陌陌这样的APP是抓不到包的,需要一些特殊的配置,本文把fiddler Android下https抓包的详细配置都罗列出来,供大家参考。


这里需要准备两台主机,一台用来开启fiddler 和 代理流量,另一台用来充当被代理端(可以是电脑、或手机)


首先要进行配置

利用Fiddler 解SSL加密 数据包_第1张图片

选择 Fiddler options开始配置


利用Fiddler 解SSL加密 数据包_第2张图片

勾选捕获HTTPS连接、解码HTTPS流量、忽略服务端证书错误


利用Fiddler 解SSL加密 数据包_第3张图片

运输远程主机连接


利用Fiddler 解SSL加密 数据包_第4张图片

开启远程连接功能后,可以使用命令查看下Fiddler监听的IP地址是不是0.0.0.0 ,如果不是那么可以重启Fiddler



下面就拿Android手机抓包举例 

Android 版本4 以后的系统在wifi连接高级选项中支持两种代理模式“无”“手动”。 

Android 5.x以后还支持另外个选项“自动配置”,可以写pac配置文件,自动代理需要代理的域名,话不多说。


手机打开wifi连接界面,长按wifi热点 打开“修改网络”

利用Fiddler 解SSL加密 数据包_第5张图片


利用Fiddler 解SSL加密 数据包_第6张图片

代理主机填写电脑端的ip  端口填写Fiddler默认监听的端口 8888


保存 连接。


手机端上安装Fiddler 根证书信任

利用Fiddler 解SSL加密 数据包_第7张图片

手机上用浏览器打开代理页面


利用Fiddler 解SSL加密 数据包_第8张图片

页面最下方有个 根证书的连接  点击安装证书信任


给这个用户证书命个名 然后确定就完成了



看效果

手机上打开登陆微博,然后看Fiddler的捕获页面

利用Fiddler 解SSL加密 数据包_第9张图片

https连接 已经可以看到URI了 ,右边可以看到HTTP报头。


好了可以抓Android包了, 但是也不一定所有app的https流量都可以抓,比如谷歌服务是基于https的通道流量,就无法解析。

还有一些应用并没有使用Android 的HTTP连接器,所以就无法应用到wifi设置中的代理配置。

当然我们在这里不讨论Android上的一些问题,主要讨论怎样使用Fiddler解 HTTPS流量。