Fiddler 抓取手机应用发送的HTTP消息
我们测试手机应用时,需要查看发送消息,我发现不少人采用的方法是:在服务端 使用tcpdump或者WireShark抓包。
这种方法有一定的麻烦之处。如果你不方便访问服务器怎么办?
白月黑羽这里介绍一下,如何使用Fiddler来抓取手机App的网络请求。包括HTTP 和 HTTPS 的请求。
Fiddler是一款免费的Web调试工具,它抓包的原理和WireShark不同。
Fiddler启动时,会把自己设置为Windows系统的缺省HTTP代理服务器。
我们只需要设置客户端手机使用 Fidder作为代理,它就可以抓到发送过来的HTTP包了。
安装
根据下图提示 输入,并点击下载

抓包环境设置
我们先以安卓的华为手机为例,演示抓包过程
- 
确保你的手机和你安装Fiddler的电脑在同一个 路由器网段内(其实,只要互通就可以 了)。 
- 
打开Fiddler,从菜单栏里选择 “Tools -> Options...” 
点击 "Connections"选项卡,
   
如上图所示,勾选 "allow remote computers to connect",表示允许远程客户端连接使用本代理。
然后,点击 "HTTPS" 选项卡,

如上图所示,勾选 “Capture HTTPS CONNECTs”,接着勾选 “Decrypt HTTPS traffic”。
如果你的APP访问的服务使用的是自签名的非正式证书,需要把下面的“Ignore server certificate errors”勾选上。
- 
在手机上安装Fidder证书 由于HTTPS协议的安全性机制要求,通常来说,代理只有拥有服务端证书对应的私钥,才能查看到解密 客户端通信的 信息。 Fidder显然不可能拥有 服务端证书私钥,它是怎么做到 让客户端以为自己是合法的服务端的呢? 非常简单, 它自己给自己颁发证书!! 自己制造的证书,当然也就拥有了私钥。 当然,有个问题,自己颁发的证书,签名的颁发机构是Fiddler,而不是像 GlobalSign 这种权威证书颁发机构。 通常 操作系统里面 会把权威证书颁发机构的 证书安装为 受信任的根证书。 而客户端,比如手机APP, 可能要看服务端颁发证书的是否是 系统中受信任的根证书签名, 如果不是,就认为是不安全的,不去通信。 所以通常需要在手机系统上,把 Fiddler 的 证书安装为 受信任的根证书。 安装的过程很简单,以华为手机为例。 打开手机浏览器,在地址栏中输入Fiddler启动的web服务地址。 先查看一下你的电脑的IP地址,然后输入对应的网址。 可以这样查看,鼠标 悬停在Fiddler工具栏右上角的Online,查看电脑的ip,192.168.1.106 比如,IP地址为192.168.1.100, 则输入192.168.1.100:8888 随后访问该网址,应该出现如下界面,点击箭头处“FiddlerRoot certificate”链接,下载安装证书即可  
- 
设置手机WIFI,使用Fiddler作为代理