跳转至

Fiddler 抓取手机应用发送的HTTP消息

我们测试手机应用时,需要查看发送消息,我发现不少人采用的方法是:在服务端 使用tcpdump或者WireShark抓包。

这种方法有一定的麻烦之处。如果你不方便访问服务器怎么办?


白月黑羽这里介绍一下,如何使用Fiddler来抓取手机App的网络请求。包括HTTP 和 HTTPS 的请求。

Fiddler是一款免费的Web调试工具,它抓包的原理和WireShark不同。

Fiddler启动时,会把自己设置为Windows系统的缺省HTTP代理服务器。

我们只需要设置客户端手机使用 Fidder作为代理,它就可以抓到发送过来的HTTP包了。

安装

点击这里下载Fiddler

根据下图提示 输入,并点击下载

image

抓包环境设置

我们先以安卓的华为手机为例,演示抓包过程

  1. 确保你的手机和你安装Fiddler的电脑在同一个 路由器网段内(其实,只要互通就可以 了)。

  2. 打开Fiddler,从菜单栏里选择 “Tools -> Options...”

点击 "Connections"选项卡, image

如上图所示,勾选 "allow remote computers to connect",表示允许远程客户端连接使用本代理。


然后,点击 "HTTPS" 选项卡,

image

如上图所示,勾选 “Capture HTTPS CONNECTs”,接着勾选 “Decrypt HTTPS traffic”。

如果你的APP访问的服务使用的是自签名的非正式证书,需要把下面的“Ignore server certificate errors”勾选上。

  1. 在手机上安装Fidder证书

    由于HTTPS协议的安全性机制要求,通常来说,代理只有拥有服务端证书对应的私钥,才能查看到解密 客户端通信的 信息。

    Fidder显然不可能拥有 服务端证书私钥,它是怎么做到 让客户端以为自己是合法的服务端的呢?

    非常简单, 它自己给自己颁发证书!! 自己制造的证书,当然也就拥有了私钥。

    当然,有个问题,自己颁发的证书,签名的颁发机构是Fiddler,而不是像 GlobalSign 这种权威证书颁发机构。

    通常 操作系统里面 会把权威证书颁发机构的 证书安装为 受信任的根证书。

    而客户端,比如手机APP, 可能要看服务端颁发证书的是否是 系统中受信任的根证书签名, 如果不是,就认为是不安全的,不去通信。

    所以通常需要在手机系统上,把 Fiddler 的 证书安装为 受信任的根证书。


    安装的过程很简单,以华为手机为例。

    打开手机浏览器,在地址栏中输入Fiddler启动的web服务地址。

    先查看一下你的电脑的IP地址,然后输入对应的网址。

    可以这样查看,鼠标 悬停在 Fiddler工具栏右上角的Online,查看电脑的ip,192.168.1.106

    image

    比如,IP地址为192.168.1.100, 则输入192.168.1.100:8888

    随后访问该网址,应该出现如下界面,点击箭头处“FiddlerRoot certificate”链接,下载安装证书即可

    image

  2. 设置手机WIFI,使用Fiddler作为代理