一、为什么要使用Fiddler?
1. 拦截并修改数据(调试利器)
- 场景:前端页面限制只能选 1 件商品,你想测试后端是否校验数量为 100 件;或者 App 返回的数据里有个字段是
success: false,你想改成true看页面反应。 - Fiddler:可以设置断点,在请求发出前或响应返回前,手动修改参数、Header 或返回值。这是 Fiddler 区别于普通抓包工具的核心价值。
2. 抓取非浏览器流量(App、小程序、客户端)
- 问题:浏览器按 F12 只能看网页请求,但你看不到手机 App、微信小程序、PC 端游戏或软件的 http 请求。
- Fiddler:可以在电脑上开启代理,手机或其它设备将流量转发到 Fiddler。这样,App 与服务器之间的“悄悄话”你全能听到。
3. 解密和查看 HTTPS 加密内容
- 问题:现在绝大多数流量都是 HTTPS(加密的)。普通抓包工具看到的是一堆乱码,无法查看具体传输的账号密码、订单数据或 JSON 接口。
- Fiddler:可以通过在自己的设备上安装 Fiddler 的根证书,它可以作为“中间人”解密流量,让你看到加密后的真实明文内容。
4. 模拟恶劣网络环境
- 场景:测试 App 在 2G 网络、高延迟、丢包严重的环境下会不会崩溃,或者弱网提示是否正常。
- Fiddler:可以内置模拟调制解调器速度的功能,可以精确限制上传/下载速度,模拟高延迟。
5. 替换本地文件(Mock 数据/绕过编译)
- 场景:想修改线上页面的 CSS 或 JS 文件来调试样式,但文件在远程服务器;或者后端接口还没写好,需要假数据。
- Fiddler:可以使用 AutoResponder 功能。当请求某个远程文件(如
main.js)时,自动返回你电脑上的本地文件。这样无需部署,即可替换线上资源。
6. 性能分析和排查慢请求
- 场景:网页加载很慢,想知道是哪个图片、JS 文件,还是接口拖慢了速度。
- Fiddler:可以精确显示每个请求的耗时(DNS 解析时间、建立连接时间、接收数据时间)。通过柱状图或列表排序,一眼定位性能瓶颈。
7. 当项目时间紧,开发没有给接口文档时,测试工程师可以通过Fiddl自行自行捕获
二、Fiddler的工作原理及功能
Fiddler 的核心工作原理是在客户端和服务器之间扮演一个“中间人”角色。它本质上是一个代理服务器,通过拦截、分析、甚至修改双方通信的数据包,来实现调试和分析的目的。
Fiddler的功能
- 监控浏览器所有的HTTP和https流量
- 查看,分析请求内容细节
- 伪造客户端请求和服务器响应
- 测试网站对的性能
- 解密https的web会话
- 全局或局部的断点功能
- 第三方插件
三、Fiddler的抓包
WEB端的https怎样去抓取?
- 设置:打开Fiddler,点击工具栏,第一个选项栏-->HTTPS,勾选对应的解密HTTPS里的全部选项
- 遇见的问题:打不开百度页面
- 解决办法:工具-->选项-->HTTPS-->点击右边的操作按钮-->选择将根证书导出到桌面-->你会在电脑桌面上看到一个名为
FiddlerRoot.cer的文件。-->导入证书-->Chrome/Edge浏览器:打开浏览器“设置” -->隐私和安全 --> 安全 --> 管理证书 --> 在弹出窗口选择 “受信任的根证书颁发机构” -> 点击导入-> 选择桌面上的FiddlerRoot.cer文件,并将其安装到“受信任的根证书颁发机构”即可。
手机端的APP中HTTPS怎样去抓包?
利用Fiddler抓取手机App的HTTPS包,核心原理是在电脑和手机之间建立一个“中间人”代理。整个过程分为电脑端配置、手机端连接和证书安装三大步骤。
- 打开Fiddler,点击菜单栏工具-->
选项->HTTPS标签页-->勾选解密HTTPS流量-->在下拉菜单中选择...来自所有进程-->勾选忽略服务器证书错误(避免部分网站报错)-->点击连接(Connections) 标签页,勾选允许远程计算机连接。Fiddler默认端口是 8888,建议保持默认设置完成后,请务必重启Fiddler。 - 设置手机代理-->- Android:进入
设置->WiFi,长按当前连接的WiFi名,选择修改网络->高级选项->代理选择手动。输入电脑的IP地址和端口8888并保存. - 下载并安装Fiddler证书-->在手机浏览器中访问
http://[你的电脑IP]:8888(例如http://192.168.1.100:8888),点击页面中的FiddlerRoot certificate-->下载后,进入设置-->安全->加密与凭据->从存储设备安装,选择下载的证书并安装。 - 安装于信任-->- 下载后,进入
设置->通用->VPN与设备管理,点击已下载的FiddlerRoot配置文件进行安装---->信任:安装后,进入设置->通用->关于本机->证书信任设置,开启FiddlerRoot证书的完全信任开关。这是很多iOS用户抓包失败的关键原因
- 抓包结束后,记得一定要把手机的代理设置关掉,否则关闭Fiddler后手机将无法正常上网
四、Fiddler过滤的方法
- 使用Fiddler界面右边的过滤器并设置过滤规则;(记得下次过滤时关闭过滤器)
规则:
1.按主机地址(域名)过滤
仅显示以下主机:多个域名用分号隔开,www.baidu.com;api.github.com
隐藏以下主机:填写要过滤掉隐藏的域名,google.com 隐藏所有谷歌域名
标记以下主机:匹配到的请求会在列表中高亮显示,api.标记所有API请求
2.按 URL 关键字过滤
仅当URL包含时才显示:只抓取URL里包含特定关键词的请求;
示例:想调试所有API接口,可以输入api.想排除图片和CSS,可以使用正则表达式:REGEX:.(js|css|jpg|png|ico)。
忽略下列URL:抓包时经常会有sina.com/...这类广告或统计域名,可以在这里填上sina.com来屏蔽掉。
3.按状态码或类型过滤
根据状态码过滤:比如勾选`隐藏成功 (2xx)`,这样会话列表里就只会显示报错(4xx、5xx)的请求,方便定位问题。
根据响应类型及URL:可以快速过滤掉图片、CSS、JS等资源文件,让界面只显示核心的API请求
- 隐藏对应的图片图标请求
- 通过类别图标去区分
- 通过搜索功能去区分
- 配置过滤头去区分
- 注意:如果捕捉不到数据可以考虑是否有反爬虫机制,可与开发沟通;
五、Fiddler的断点
Fiddler 的断点功能就像一个“网络抓包神器”上的暂停键。它可以在请求发送前或响应返回后“拦截”通信,并随意修改其中的数据,是测试和调试HTTP/HTTPS应用非常高效的手段,断点功能完全依赖网络。
断点的作用:
- 中断测试
- 极端测试
- 篡改数据
断点类型: 请求断点和响应断点
| 断点类型 | 拦截时机 | 核心应用场景 | 修改后流向 |
|---|---|---|---|
| 请求断点 | 客户端请求刚发出,准备发往服务器之前 | 突破前端限制:绕过前端输入校验(如年龄、金额),直接修改请求参数,测试服务器后端的校验逻辑是否健壮 | 修改后的请求 → 发送给服务器 |
| 响应断点 | 服务器已经处理完请求,但响应数据还未传回客户端之前 | 模拟极端场景:篡改服务器返回的数据(如状态码、JSON/HTML内容),测试客户端(App或浏览器)在这些异常情况下的表现,无需后端配合 | 修改后的响应 → 发送给客户端 |
- 总之请求断点修改的是“发出去的话”,用于测试后端;响应断点修改的是“收到的回复”,用于测试前端。
三种设置方式
| 设置方式 | 操作路径 | 特点 | 适用场景 |
|---|---|---|---|
| 全局断点 | 菜单栏:规则 → 自动断点 → 选择 请求之前 或 请求之后 | “宁可错杀一千” :会拦截所有经过Fiddler的会话,导致所有网页都无法正常加载,直到你放行 | 需要排查全局问题,或不确定具体URL时使用。用完记得关闭。 |
| 局部断点 | 在底部的命令行输入特定命令,如 bpu www.example.com | “精准狙击” :只拦截符合特定URL的请求,不影响其他网络访问,非常实用。 | 最常用。精准调试单个API接口或网页。 |
| 断点栏操作 | 点击Fiddler状态栏的断点区域,可快速开启/关闭全局断点 | 快速开关:一种便捷的全局断点开启方式。 | 临时快速启用全局拦截。 |
常用断点命令速查表
| 命令 | 作用 | 示例 | 取消命令 |
|---|---|---|---|
bpu | 拦截指定URL的请求(Request)。 | bpu /api/login | 输入 bpu 回车 |
bpafter | 拦截指定URL的响应(Response)。 | bpafter /api/user/info | 输入 bpafter 回车 |
bps | 拦截HTTP响应状态码为特定值的会话。 | bps 404 | 输入 bps 回车 |
bpv 或 bpm | 拦截特定HTTP方法(GET/POST等)的请求。 | bpv POST | 输入 bpv 回车 |
六、Fiddler的Mock
Fiddler中的Mock(模拟)就是让你“伪造”服务器返回给客户端(如浏览器、App)的数据,Mock 功能不依赖网络。
它的核心用途是:在不修改后端代码、不依赖真实服务器数据的情况下,让前端应用按照你设定的假数据来运行和测试。
其核心是:拦截请求,返回假的数据,没有网络也可以使用;
如何使用Fiddler Classic (Windows)的Mock?
- 使用 Fiddler中
AutoResponder(自动响应/转换)功能; - 捕获请求:运行你的应用,在Fiddler左侧会话列表中,找到你想Mock的那个请求-->右键-->保存-->响应-->整个响应-->保存到桌面-->篡改成要造假的数据-->保存
- 添加规则:先点击右侧的自动转换功能,勾选顶部的启用规则,再将左侧选中的请求,直接拖拽到右侧的规则列表中;
- 设置假的数据:
在列表中点击刚添加的规则,在下方的(规则编辑器)中,找到下拉菜单(默认是 `*...`)。第一行是你的URL,第二行是要选择的假数据地址
选择 **`Find a file...`** (查找文件...),然后选择一个你准备好的本地文件,你写好的假JSON数据。
点击保存
刷新你的前端页面,发起同样的请求
七、Fiddler的弱网测试
弱网测试的概念: 是模拟用户在网络信号差、网速慢、高延迟等恶劣网络环境下使用应用的一种健康性测试方法;
为什么要做弱网测试? 用户经常在地铁、隧道、电梯、车库等场景使用手机App,这些场景下网络会出现延迟、中断和超时等情况。弱网测试的目的就是验证应用在这些恶劣网络环境下的表现,确保:
- App不会发生崩溃(Crash)或无响应(ANR)
- 数据不会丢失
- 前端页面展示完整
- 后端服务器有合理的超时处理和友好的提示
弱网测试的操作流程:
Fiddler作为一个HTTP代理,提供了客户端请求前和服务器响应前的回调接口模拟限速的原理是通过延迟发送或接收数据的时间来限制上传和下载速度
-
电脑端设置:
- 打开Fiddler →
规则→自定义规则→ 在打开的脚本文件中,按Ctrl + F搜索/查找m_SimulateModem->找到以下代码
- 打开Fiddler →
if (m_SimulateModem) {
// Delay sends by 300ms per KB uploaded.
oSession["request-trickle-delay"] = "300"; // 上传延迟
// Delay receives by 150ms per KB downloaded.
oSession["response-trickle-delay"] = "150"; // 下载延迟
}
-
修改数值来控制网速:
- 数值越大,网速越慢
request-trickle-delay:控制上传速度(每上传1KB数据延迟的毫秒数)response-trickle-delay:控制下载速度(每下载1KB数据延迟的毫秒数)
-
保存修改后的文件(
Ctrl + S) -
保存后需要重新勾选
规则→性能→模拟调制解调器速度,新参数才会生效 -
测试结束后关闭弱网测试:取消勾选
模拟调制解调器速度
手机端设置:
- 手机和电脑连接同一WiFi
- 查看电脑IP地址:命令行输入 `ipconfig`
- 手机WiFi设置中,开启**手动代理**:
- 主机名:电脑IP地址
- 端口:8888[](http://www.51testing.com/mobile/view.php?itemid=7805834)
- 手机浏览器访问 `电脑IP:8888`,点击安装Fiddler根证书
常见弱网场景参数参考
| 网络场景 | 上传延迟(request) | 下载延迟(response) | 换算速度 |
|---|---|---|---|
| 2G网络 | 3000ms | 1000ms | 极慢速 |
| 3G网络 | 20ms | 10ms | 较快速 |
| 电梯/弱WiFi | 600-800ms | 600-800ms | 中低速 |
| 模拟丢包 | 加随机函数 | 加随机函数 | 不稳定 |
换算公式:延迟时间(ms) = 1000 ÷ 目标速度(KB/s) 例如:要模拟50KB/s的下载速度,需要设置延迟 = 1000÷50 = 20ms
注意事项
- 测试完成后务必关闭:取消勾选
模拟调制解调器速度,否则会影响正常上网 - 每次修改脚本后需重新勾选:保存脚本后弱网开关会被重置,需要再次开启
- HTTPS 流量需要解密:确保
工具→选项→HTTPS→ 勾选解密HTTPS流量
八、Fiddler一些常用的快捷命令及快捷键
这是 Fiddler 最具特色的功能之一。按下 Alt + Q 可以将焦点定位到左下角的黑色命令行输入框(QuickExec),输入特定命令并回车即可执行强大功能
| 命令格式 | 功能说明 | 示例 |
|---|---|---|
| 筛选与高亮 | ||
?关键字 | 高亮 URL 中包含该关键字的请求。 | ?baidu |
=状态码 或 =请求方法 | 高亮特定状态码(如200)或请求方法(如POST)。 | =404, =POST |
@域名 | 高亮请求 Host 中包含该域名的会话。 | @google.com |
>大小 或 <大小 | 筛选响应体大于或小于指定大小的会话(支持kb单位)。 | >5m, <100k |
select 类型 | 选择所有指定 MIME 类型的会话(如图片、CSS、JS)。 | select image, select css |
| 断点设置 | ||
bpu 字符串 | 拦截 URL 中包含该字符串的请求。 | bpu /api/user |
bpafter 字符串 | 拦截 URL 中包含该字符串的响应。 | bpafter .jpg |
bps 状态码 | 拦截指定 HTTP 状态码的响应。 | bps 404 |
bpv 请求方法 | 拦截指定请求方法(GET/POST)。 | bpv POST |
| 管理与控制 | ||
cls 或 clear | 清空当前所有的会话列表。 | cls |
g 或 go | 放行所有被断点暂停的会话。 | g |
start | 将 Fiddler 注册为系统代理(开始抓包)。 | start |
stop | 从系统代理中注销 Fiddler(停止抓包)。 | stop |
hide | 将 Fiddler 最小化到系统托盘。 | hide |
show | 从系统托盘恢复 Fiddler 窗口。 | show |
quit | 退出 Fiddler。 | quit |
这些是管理会话(Session)和日常操作中最常用到的快捷键,在 Fiddler Classic 和 Fiddler Everywhere 中基本通用
| 类别 | 操作 | 快捷键 (Win/Linux) | 快捷键 (macOS) |
|---|---|---|---|
| 抓包控制 | 开始/停止抓包 | F12 | F12 |
| 会话管理 | 清除所有会话 | Ctrl + X 或 Ctrl + Shift + Del | Cmd + Shift + Del |
| 删除选中的会话 | Del | Cmd + Del | |
| 选中全部会话 | Ctrl + A | Cmd + A | |
| 操作与调试 | 重新发送请求 (重放) | R | R |
| 高级重放 (设置次数) | Shift + R | Shift + R | |
| 恢复断点/放行请求 | F5 或 Go 按钮 | F5 | |
| 查找与定位 | 查找会话 | Ctrl + F | Cmd + F |
| 给会话添加备注 | M | M | |
| 其他 | 复制会话URL | Ctrl + U | Cmd + U |
注意:
Go按钮位于 Fiddler 的工具栏顶部,当你设置了请求断点后,点击它可以放行被暂停的会话