一、Fiddler 简介
Fiddler 是位于客户端和服务器端的 HTTP 代理,目前最常用的 http 抓包工具之一,功能非常强大,是 Web 调试的利器
主要功能:
-
监控浏览器所有的 HTTP/HTTPS 流量
-
查看、分析请求内容细节
-
伪造客户端请求和服务器响应
-
测试网站的性能解密 HTTPS 的 Web 会话
-
全局、局部断点功能
-
第三方插件
使用场景: -
接口调试、接口测试、线上环境调试、Web 性能分析
-
判断前后端 bug、开发环境 hosts 配置、mock、弱网断网测试
二、B/S架构
编写程序部署到 Web 服务器,Web 服务器运行在服务器上,绑定 ip 地址并监听某端口,接收和处理 http 请求,客户端通过 http 协议获取服务器上的网页、文档等
三、HTTP相关知识
1、英文全称:Hyper Text Transfer Protocol(超文本传输协议)
2、用于从万维网服务器传输超文本到本地浏览器的传送协议
3、HTTP 协议是基于 TCP 的应用层协议,它不关心数据传输的细节,主要是用来规定客户端和服务端的数据传输格式,
最初是用来向客户端传输 HTML 页面的内容。默认端口是 80
4、http 是基于请求与响应模式的、无状态的、应用层的协议
完整的 HTTP 协议
HTTP 请求报文:
HTTP 请求报文主要由请求行、请求头部、空一行、请求正文(请求体)4 部分组成
如图是 fiddler 某个会话的请求报文
请求头(Request Header)
HTTP 响应报文
HTTP 响应报文主要由状态行、消息报头、空一行、响应正文 4 部分组成
四、Fiddler界面操作
1、Fiddler概览:
2、Fiddler界面详解
3、Session List(会话列表)
Fiddler 抓取到的每条 http 请求(每一条称为一个 session)
主要包含了请求的 ID 编号、状态码、协议、主机名、URL、内容类型、body 大小、进程信息、自定义备注等信息
4、Statistics(统计)
HTTP 请求的性能和其他数据分析,如 DNS 解析的时间,建立 TCP/IP 连接的时间消耗等信息
5、 Inspectors(检查器)
Inspectors 意思是检查器;可以多种方式查看请求的请求报文和响应报文相关信息
6、AutoResponder(自动响应器)
AutoResponder 可用于拦截某一请求,进行如下操作:
a、重定向到本地的资源
b、使用 Fiddler 的内置响应
c、自定义响应
7、Filters(过滤器)
多维度的过滤规则,可根据主机、进程、请求头、响应头、状态码、响应类型和大小、断点进行请求的过滤
五、HTTP或HTTPS抓包操作
1、HTTPS抓包操作:
- 点击 Tools > Fiddler Options > HTTPS
- 勾选 Decrypt HTTPS Traffic
证书安装:
2、捕获 Firefox HTTPS 的包
- Tools > Fiddler Options > HTTPS
- Actions > Export Root Certificate toDesktop 将 Fiddler 根证书导出到桌面
Firefox 导入根证书
- 打开 Firefox 浏览器
- 击打开菜单 > 选项 > 高级 > 证书 > 查看证书
- 点击导入 > 选择桌面的 Fiddler 根证书 > 打开
3、抓不到 HTTPS 解决方案 1
- 关闭 Fiddler 和 Firefox
- 运行命令 certmgr.msc,打开系统的证书管理器(Fiddler 的 https 配置选项卡中的 Actions 也可打开)
- 点击操作 > 查找证书 > 输入 Fiddler 进行查找 > 选中所有查找到的证书 > 删除
- 重复步骤配置 Firefox 浏览器抓取 HTTPS 包
- 重新测试,大部分情况可以抓取 HTTPS 包了
4、抓不到 HTTPS 解决方案 2
清除系统安装的 Fiddler 根证书
-
运行命令 certmgr.msc,打开系统证书管理
-
点击操作 > 查找证书 > 输入"Fiddler"进行查找 > 选中所有查找到的证书 > 删除
清除 Firefox 中 Fiddler 根证书 -
打开 Firefox 浏览器
-
点击打开菜单 > 选项 > 高级 > 证书 > 查看证书
-
找到并各项中的 DO_NOT_TRUST_FiddlerRoot 证书
下载并安装 Fiddler 证书生成器 -
下载 FiddlerCertMaker.exe ,地址 https://www.telerik.com/fiddler/add-ons ,搜索:CertMaker
-
直接打开 FiddlerCertMaker.exe (安装过程中如出现错误可忽略)
重启 fiddler 和 Firefox 浏览器 -
重新导出导出证书步骤
六、IOS和Android设备抓包
1、抓 iOS 设备 APP 包-Fiddler 设置
-
点击 Tools > Fiddler Options > Connections.
-
勾选 Allow remote computers to connect.
-
重启 Fiddler
-
确保防火墙允许 Fiddler 进程可以远程连接
-
iOS 设备连接 WiFi
-
确保 iOS 设备可以访问到 http://FiddlerMachineIP:8888 ,该地址会返回 Fiddler Echo Service 页面
2、iOS 设备抓包-iOS 设备设置 -
点击设置 > Wi-Fi > 打开连接的 Wi-Fi 设置
-
点击配置代理 > 手动
-
设置 iOS 代理服务器地址为 Fiddler 所在主机的 IP 地址
-
设置端口为 Fiddler 监听的端口
-
点击存储 保存代理设置
-
打开一个非 HTTPS 的网站,此时 Fiddler 已经可以捕获 HTTP 请求了
3、iOS 设备抓包-安装证书解密 HTTPS
-
在 iOS 设备打开浏览器,访问 http://ipv4:8888/
-
点击 Fiddler Echo Service 页面底部 FiddlerRoot certificate 下载证书
-
打开 FiddlerRoot.cer 文件并安装
-
安装成功后,在通用 > 关于本机 > 证书信任设置中,信任刚安装的 Fiddler 证书
-
Safari 打开 https://www.baidu.com,已经可以抓取 HTTPS 包了
4、Android 设备抓包 -
以华为为例,打开设置 > WLAN > 连接上的 WLAN 设置
-
点击代理 > 手动,设置主机名为 Fiddler 所在主机的 IP,端口为 Fiddler 监听端口
-
打开 Android 设备浏览器,访问 http://ipv4:8888/
-
点击页面底部 FiddlerRoot certificate 下载证书
-
打开设置 > 更多设置 > 系统安全 > 加密与凭据 > 从存储设备安装
-
选择下载好的 FiddlerRoot.cer 进行安装
-
浏览器打开 https://www.baidu.com,已经可以抓取 HTTPS 包了
注意:测试完毕,记得关闭代理,否则手机无法上网