反骨仔

一个业余的 .NET Core 攻城狮

0%

14 Fiddler 手机抓包

Fiddler 不但能截获各种浏览器发出的 HTTP 请求,也可以截获各种智能手机发出的 HTTP/HTTPS 请求 。

Fiddler 能捕获 iOS 设备发出的请求,比如 iPhone、iPad 和 MacBook 等苹果设备 。同理,其也可以截获均由 Android 和 Windows Phone 等设备发出的 HTTP/HTTPS 请求。

14.1 环境准备

Fiddler 如果想要实现手机抓包:

  1. 电脑上安装有 Fiddler 抓包工具
  2. 安装有 Fiddler 的电脑必须跟手机处在同 一个网络里
  3. 在 Fiddler 中设置好捕获 HTTPS

14.2 Fiddler 截获手机原理图

Fiddler 作为代理服务器,可以接收远程机器发来的 HTTP/HTTPS 协议的数据包,并且将其转发到 Web 服务器。

image-20210110155515388

14.3 截获手机发出的 HTTP 包有什么作用

用处一:APP 开发人员利用 Fiddler 可以截获手机发出的 HTTP 包,从而调试 APP 程序。

用处二:软件测试人员可以用其来测试智能手机上的软件,做接口测试或者安全测试。

用处三:截获了 HTTP/HTTPS 后,可以下断点修改 HTTP 请求和 HTTP 响应。

14.4 手机抓包

14.4.1 配置 Fiddler 允许“远程连接”

启动 Fiddler ,单击菜单栏中 Tools->Fiddler Options->Connections ,选中“ Allow remote computers to connect ”

image-20210110155757123

选中后就表示允许远程机器把 HTTP/HTTPS 请求发送到 Fiddler 上来(配置完后记得要重启 Fiddler )。同时,我们还能看到 Fiddler 的工作端口号是 8888。

14.4.2 获取 Fiddler 所在机器的 IP 地址

查看电脑的 IP 地址,按快捷键 [Windows+R],调出运行窗口。输入 CMD,可以打开 CMD 命令行工具;输入命令 ipconfig,可以找到 IP 地址。

一个电脑可能有多个网卡,注意要找到真正 的 IP 地址,例如某 IP 地址是 10.0.0.1.1。

image-20210110155959350

或者在 Fiddler 中,将鼠标放在右上方的“online”图标上,提示信息中也能看到 IP 地址。

image-20210116205509272

image-20210110160032600

14.4.3 手机上设置代理服务器

以华为手机为例进行讲解,其他品牌的手机操作方法与此差不多。具体操作步骤如下:

  1. 打开手机中的设置 -> WLAN,找到手机当前连接的 Wi-Fi:

image-20210110160157884

  1. 将代理改为手动,服务器主机名为 Fiddler 所在电脑的 IP 地址, 服务器端口为 8888

image-20210110160228074

  1. 单击“连接”就可以设置成功

14.4.4 测试 Fiddler 捕获手机发出的 HTTP

打开手机上的浏览器,在浏览器中输入 www.163.com。163 网站用的是 HTTP 协议而不是 HTTPS 协议,查看 Fiddler 是否捕获到了 HTTP 数据包。

打开手机上的 APP,在 APP 中进行 一 些操作,查看 Fiddler 是否能捕获到 HTTP 数据包。

如果抓不到 HTTP 的包,很可能是 Windows 防火墙的问题,到控制面板中关闭防火墙后再试试。

14.4.5 捕获手机上的 HTTPS

如果只是抓取手机上 APP 或者浏览器发出的 HTTP 请求,则不需要安装证书, 直接就能抓到。

如果需要捕获 HTTPS 请求,则必须把 Fiddler 证书安装到手机上 。

14.4.6 Apple 设备需要使用插件制作新证书

如果要对 Apple 设备进行抓包,则需要重新做证书,某些 Android 可能也需要重新做证书。

Fiddler 默认的证书是基于命令行工具 makecert.exe,几乎所有的 Windows 客户端都接受该工具生产的证书。但是 Apple IOS 设备( iPhone 、iPad )和少部分 Android 要求根证书和服务器证书包含 makecert.exe 生产的证书中所没有的其他元数据。为了兼容这些设备,需要下载 Fiddler 插件“ CertMaker for IOS and Android ”。

Certificate Maker 的下载地址是 http://www.telerik.com/fiddler/add-ons

image-20210110161429604

14.4.7 iOS 设备安装证书方法

  1. 打开 iOS 手机的 Safari 浏览器,输入 http://hostip:8888,hostip 就是 Fiddler 所在的
    计算机上的 IP。在打开的网页中,单击 “ FiddlerRoot certificate ”,单击“ 允许”,下载证书。

image-20210110161837508

  1. 单击“ 安装”,安装证书

image-20210110161902184

14.4.8 Android 设备安装证书方法一

打开手机的浏览器,输入 http://hostip:8888,hostip 就是 Fiddler 所在的计算机上的 IP。在打开的网页上单击“ FiddlerRoot certificate“下载证书。

image-20210110162036557

在安装证书的界面,给证书取一个名字,然后单击“确定”,系统会提示证书安装成功。

image-20210110162104346

证书安装成功后,如果你的手机系统没有设置密码或者锁屏图案,则系统会提示你设置锁屏图案或者密码。

当然这种方法可能会安装失败。如有的手机无法按这种方式安装证书并提示“无法安装该证书,因为无法读取证书文件文件。这时可以使用下面的方法来安装证书。

image-20210110162202778

14.4.9 Android 设备安装证书方法二

  1. 启动 Fiddler ,单击菜单栏中的 Tools -> Fiddler Options -> HTTPS,在 Actions 中单击“Export Root Certificate to Desktop "

    这样可以把 Fiddler 的证书文件导出到电脑桌面上,Fiddler 的证书文件叫“FiddlerRoot.cer“

  2. 把 Fiddler 证书文件发到手机上。例如可以用 PC 上的 QQ 软件把文件“FiddlerRoot.cer"发送到手机 QQ 上来

    这样“ FiddlerRoot.cer”就保存在 了手机中 。比如某存储路径是:内部存储设备 Tencent -> QQfile_recv -> FiddlerRoot.cer

  3. 打开手机中的设置帽 -> 系统安全 -> 凭据存储 -> 从 SD 卡安装。

image-20210110165400045

4.选择 FiddlerRoot.cer,这样就能成功安装好证书

image-20210110165428947

14.4.10 测试 Fiddler 捕获手机的 HTTPS

打开手机上的浏览器,输入 https://www.baidu.com, 看看手机能否捕获到百度的 HTTPS 请求。

14.5 设置过滤

在手机上设置好代理后,Fiddler 上会抓到 PC 端 的和手机端的所有请求,可以设置过滤。

在 Fiddler 中,选择 File -> Fiddler Options -> HTTPS,选择“from remote clients only”。

image-20210116210432201

14.6 如何卸载证书

不同的手机品牌,卸载证书的操作有所差异 。 打开手机中的设置 –> 系统安全 -> 信任的凭据,选择 Fiddler 的证书,单击“删除”即可

image-20210110170523818

14.7 手机抓包提醒

手机设置代理后,测试完之后记得把代理关闭,否则手机将不能上网。

对 iPhone 上 iTunes 和 App Store 发出来的 HTTPS 包, Fiddler 很可能抓不到,随着 iOS 的不断升级,在 IOS 设备上抓包会变得越来越困难。

当 Fiddler 证书成功安装在手机上后,手机上会经常提示“网络可能会受到监控,受到不明第三方的监控” 。 这就是因为安装了 Fiddler 证书的原因,可忽略这个提示。

参考

《HTTP 抓包实战》