05. Fiddler移动端抓包与插件
2024年10月28日大约 4 分钟
05. Fiddler移动端抓包与插件
1. HTTPS抓包
1. HTTPS与HTTP区别
HTTPS 在HTTP 的基础下加入SSL/TLS,HTTPS 的安全基础是 SSL,因此加密的详细内容就需要 SSL。
证书里还有对称、非对称的加密, 密钥、公钥
2. 设置过程
- 点击Tools > Options >HTTPS
- 勾选 Decrypt HTTPS Traffic
- 如果提示下载证书,就下载安装
- 注意点: IE和Chrome都是读系统的证书,如果要Firefox的证书默认自己管理。修改过程在下一章。
3. 错误解决
如果没抓到,可以尝试重装证书:Actions > Reset All Certificates > 确定
4. 验证
验证证书是否安装成功,如果不成功一定无法捕获https请求
- 进入windows证书管理界面,可以从[fiddler]进入,也可以直接搜索cert进入
- 操作>查找证书>输入fiddler>存在证书,如果没有即安装证书失败,尝试上一步重新安装。
- 打开百度之类的网站有https请求可以捕获。
5. Firefox HTTPS请求捕获
自己管理证书,不和上面一样,所以要更改为使用系统代理,版本不一样不一定如图片一样的位置,但过程都一样。
- 选择 >选项
- 高级 > 网络 > 设置
- 选择使用系统代理 或者 手动配置代理,注意端口号要和fiddler设置一致
- 或者导入fiddler的根证书到Firefox。先将根证书导入到桌面,再导入到Firefox内,并信任证书。
2. IOS设备APP抓包
1. Fiddler设置
- 点击 Tools >Options > Connections
- 勾选 Allow remote computers to connect.(允许远程主机连接)
- 重启 Fiddler
- 确保防火墙允许Fiddler进程可以远程连接ios设备连接wiFi
- 确保 ios 设备可以访问到 http://FiddlerMachineIP:8888,该地址会返回Fiddler Echo service页面
2. iOS设备设置
- 点击设置 > Wi-Fi > 打开连接的wi-Fi设置
- 点击配置代理 > 手动
- 设置 iOS代理服务器地址为Fiddler所在主机的IP地址
- 设置端口为Fiddler监听的端口
- 点击存储 保存代理设置
- 打开一个非HTTPS的网站,此时Fiddler已经可以捕获HTTP请求了
3. iOS设备抓包-安装证书解密HTTPS
在 iOS 设备打开浏览器,访问 http://ip:8888/
点击Fiddler Echo Service页面底部FiddlerRoot certificate下载证书
打开 设置 > 会出现 已下载的描述文件 > 点击安装
安装成功后,在通用 > 关于本机 > 证书信任设置中,信任刚安装的Fiddler证书
safari打开 https://www.baidu.com,已经可以抓取HTTPS的包了
3. Android设置设置
- 以小米9为例,打开设置 > WLAN > 连接上的WLAN设置
- 点击代理 > 手动,设置主机名为Fiddler所在主机的IP,端口为Fiddler监听端口
- 打开Android设备浏览器,访问 http://ip:8888/
- 点击页面底部FiddlerRoot certificate下载证书
- 打开设置 > 更多设置 > 系统安全 > 加密与凭据 > 从存储设备安装选择下载好的FiddlerRoot.cer (设置页搜索证书)
- 浏览器打开 https://www.baidu.com,已经可以抓取HTTPS包了
- 注意:测试完毕,记得关闭代理,否则手机无法上网
Android从7.0开始系统不再信任用户CA证书(应用targetSdkVersion >= 24时生效,如果targetSdkVersion < 24即使系统是7.0+依然会信任)。也就是说即使安装了用户CA证书,在Android 7.0+的机器上,targetSdkVersion >= 24的应用的HTTPS包就抓不到了。
开发人员配置debug:AndroidManifest中配置networkSecurityConfig,App信任用户CA证书,让系统对用户CA证书的校验给予通过。
4. Fiddler请求域名重定向
这里所说的重定向不是HTTP重定向,而是指把请求定向到代理服务器,例如www.baidu.com域的请求定向到本地服务器localhost:8080,通过这种操作可以用来调试某些线上应用,具体的配置步骤如下:
- 选择Tools -> HOSTS菜单
- 填写需要重定向的域名和代理服务器的域名或地址
前面是代理服务器的地址,后面是目标服务器,中间使用空格隔开。