如何在iOS设备上使用Fiddler抓包
概述
Fiddler是一款功能强大的网络抓包工具,可以用于分析和调试网络请求。但是,由于iOS设备的网络请求走的是HTTPS协议,Fiddler默认是无法抓取到iOS设备上的包的。在本文中,我将介绍如何配置Fiddler以抓取iOS设备上的网络请求。
整体流程
下面是整个流程的步骤概述,具体的操作和代码将在后续的部分进行详细说明。
sequenceDiagram
participant A as Developer
participant B as iOS Device
participant C as Fiddler
A->B: 配置代理
B->C: 发送请求
C->B: 拦截请求
B->A: 返回响应
步骤详解
步骤1:配置iOS设备代理
首先,我们需要将iOS设备的代理设置为Fiddler的代理。按照以下步骤进行配置:
- 在iOS设备上打开“设置”。
- 进入“Wi-Fi”设置。
- 找到已连接的Wi-Fi网络并点击右侧的“i”图标。
- 在“HTTP代理”选项下,选择“手动”。
- 在“服务器”字段中,输入运行Fiddler的计算机的IP地址。
- 在“端口”字段中,输入Fiddler的监听端口,默认为8888。
- 点击“保存”以保存代理配置。
步骤2:安装Fiddler证书
由于iOS设备使用的是HTTPS协议,为了能够抓取到HTTPS请求,我们需要在iOS设备上安装Fiddler的证书。按照以下步骤进行安装:
- 在Fiddler界面上,点击“Tools”菜单。
- 选择“Options”选项。
- 在弹出的对话框中,选择“HTTPS”选项卡。
- 点击“Actions”下的“Export Root Certificate to Desktop”按钮,将证书导出到桌面。
- 将证书发送到iOS设备,可以通过邮件、AirDrop等方式发送。
- 在iOS设备上打开接收到的证书文件。
- 系统会提示安装证书,点击“安装”。
- 输入设备解锁密码,完成证书安装。
步骤3:配置Fiddler
最后,我们需要在Fiddler中进行一些配置,以确保能够正确地抓取iOS设备上的请求。
- 在Fiddler界面上,点击“Tools”菜单。
- 选择“Options”选项。
- 在弹出的对话框中,选择“Connections”选项卡。
- 在“Fiddler listens on port”字段中,输入监听端口,默认为8888。
- 确保“Allow remote computers to connect”复选框被勾选。
- 点击“OK”保存配置。
代码示例
在上述步骤中,需要使用到以下几行代码:
// 配置iOS设备代理
let proxyDict = [
"HTTPEnable": 1,
"HTTPProxy": "Fiddler的IP地址",
"HTTPPort": Fiddler的端口,
"HTTPSEnable": 1,
"HTTPSProxy": "Fiddler的IP地址",
"HTTPSPort": Fiddler的端口
]
UserDefaults.standard.register(defaults: ["VSSettings": proxyDict])
// 安装Fiddler证书
// 从Fiddler导出的证书文件路径
let certificatePath = "路径/fiddler.cert"
if let certificateData = NSData(contentsOfFile: certificatePath) {
let certificate = SecCertificateCreateWithData(nil, certificateData)
let certificates = [certificate] as CFArray
let installationResult = SecTrustStoreInstallCertificate(certificates, .persistent, nil, nil)
if installationResult != errSecSuccess {
// 证书安装失败
}
}
// 配置Fiddler
let fiddlerPort = Fiddler的端口
FiddlerApplication.Startup(fiddlerPort, true, true, true)
代码解释:
- 第一段代码用于配置iOS设备代理。将Fiddler的IP地址和端口设置为HTTP和HTTPS的代理地址