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作为代理