Fiddler完整使用指南
Fiddler 完整使用指南
一、Fiddler 基础介绍
1.1 什么是 Fiddler
Fiddler 是一款由 Telerik 公司开发的 HTTP/HTTPS 抓包调试工具。它作为一个本地代理服务器运行,能够拦截、记录、分析和修改客户端(浏览器、App 等)与服务器之间的所有 HTTP/HTTPS 通信数据。
Fiddler 是目前最流行的 Web 调试工具之一,被广泛应用于:
- 前端开发:调试接口请求、验证数据格式、模拟后端返回
- 后端开发:检查请求参数、分析响应数据、排查接口问题
- 测试工程师:接口测试、弱网模拟、篡改数据验证容错性
- 运维人员:分析网络请求、排查性能瓶颈
- 安全工程师:分析请求安全性、检测敏感数据泄露
1.2 Fiddler 的工作原理
┌──────────┐ ┌──────────────┐ ┌──────────┐
│ 客户端 │ ──HTTP──▶│ Fiddler │──HTTP──▶│ 服务器 │
│ (浏览器) │◀──HTTP──│ (本地代理) │◀──HTTP──│ (WebAPI) │
└──────────┘ └──────────────┘ └──────────┘
监听端口:8888
记录所有请求/响应
Fiddler 启动后会将自身设置为系统 HTTP 代理(默认端口 8888),所有经过该代理的网络流量都会被 Fiddler 拦截和记录。用户可以在 Fiddler 中查看、分析、修改这些请求和响应数据。
1.3 Fiddler 版本说明
| 版本 | 说明 |
|---|---|
| Fiddler Classic | 经典版本,仅支持 Windows,功能最为完整 |
| Fiddler Everywhere | 跨平台版本(Windows/Mac/Linux),界面更现代,部分高级功能需付费 |
| Fiddler Now | Fiddler Everywhere 的免费精简版 |
本文主要以 Fiddler Classic 为基础进行讲解,大部分功能在 Fiddler Everywhere 中同样适用。
1.4 Fiddler vs 其他抓包工具
| 特性 | Fiddler | Charles | Wireshark | Chrome DevTools |
|---|---|---|---|---|
| 平台 | Windows | 跨平台 | 跨平台 | 浏览器内 |
| HTTPS 抓包 | ✅ | ✅ | ✅ | ✅ |
| 修改请求/响应 | ✅ | ✅ | ❌ | ❌ |
| 弱网模拟 | ✅ | ✅ | ❌ | ✅ |
| Mock 服务 | ✅ | ✅ | ❌ | ❌ |
| 费用 | 免费/付费 | 付费 | 免费 | 免费 |
| 学习难度 | 中等 | 中等 | 较高 | 简单 |
二、Fiddler 安装
2.1 下载
- 访问 Telerik 官网:https://www.telerik.com/fiddler/fiddler-classic
- 选择 Fiddler Classic,点击 Free Download
- 填写简单的注册信息后即可下载安装包
也可以从国内镜像或软件管家下载,搜索 “Fiddler Classic” 即可。
2.2 安装步骤
- 双击下载好的
FiddlerSetup.exe安装包 - 阅读并同意许可协议
- 选择安装路径(建议保持默认路径,或改为非中文路径)
- 点击 Install 开始安装
- 安装完成后点击 Close
2.3 首次启动配置
-
启动 Fiddler,首次启动会弹出配置向导
-
HTTPS 抓包配置(重要):
- 点击菜单栏
Tools→Options→HTTPS - 勾选
Decrypt HTTPS traffic - 弹出证书安装提示,选择 是(Yes)
- 系统会自动安装 Fiddler 根证书

- 点击菜单栏
-
确认代理端口:
Tools→Options→Connections- 默认端口为 8888,确保未被其他程序占用
- 勾选
Allow remote computers to connect(如需抓取其他设备的请求)
2.4 常见安装问题
| 问题 | 解决方案 |
|---|---|
| 无法安装证书 | 以管理员身份运行 Fiddler |
| HTTPS 页面报错 | 确认 Fiddler 根证书已安装并信任 |
| 无法联网 | 检查系统代理设置是否被修改,关闭 Fiddler 后会自动恢复 |
| 端口被占用 | 修改 Fiddler 监听端口,或关闭占用 8888 端口的程序 |
三、Fiddler 界面功能介绍
3.1 主界面布局

3.2 菜单栏功能
File(文件菜单)
| 功能 | 说明 |
|---|---|
| Capture Traffic | 开启/关闭抓包开关(快捷键 F12) |
| New Session | 清空当前会话列表,开始新的抓包 |
| Open Session | 打开已保存的 .saz 会话文件 |
| Save | 保存当前会话到 .saz 文件 |
| Exit | 退出 Fiddler |
Edit(编辑菜单)
| 功能 | 说明 |
|---|---|
| Copy | 复制选中的会话信息 |
| Remove | 删除选中的会话(也可用 Delete 键) |
| Select All | 全选所有会话(Ctrl+A) |
| Find Sessions | 查找包含特定内容的会话 |
Rules(规则菜单)
| 功能 | 说明 |
|---|---|
| Hide Connects | 隐藏 CONNECT 隧道请求 |
| Hide Image Requests | 隐藏图片请求 |
| Hide HTTPS Connects | 隐藏 HTTPS 连接建立请求 |
| Hide 304s | 隐藏 304 缓存响应 |
| Automatic Breakpoints | 设置自动断点(Before Requests / After Responses) |
| Customize Rules | 打开 FiddlerScript 编辑器,自定义规则 |
View(视图菜单)
| 功能 | 说明 |
|---|---|
| Statistical | 显示请求统计信息 |
| Timeline | 显示请求时间线视图 |
| Composer | 请求构造器,手动构建并发送请求 |
Tools(工具菜单)
| 功能 | 说明 |
|---|---|
| Options | Fiddler 全局设置(HTTPS、Connections、Gateway 等) |
| WinINET Options | 打开系统 Internet 属性设置 |
| TextWizard | 编码/解码工具(URL Encode、Base64 等) |
| ASP.NET Viewer | 查看 ASP.NET 视图状态 |
3.3 工具栏常用按钮
| 按钮 | 功能 | 说明 |
|---|---|---|
| WinConfig | Windows App 代理配置 | 允许 UWP/WinStore 应用流量通过 Fiddler |
| Capture | 抓包开关 | 开启/关闭流量捕获(等同 F12) |
| Any Process | 选择进程 | 拖动靶心图标到目标进程窗口,只抓取该进程的流量 |
| Find | 搜索 | 在所有会话中搜索关键字(Ctrl+F) |
| Decode | 解码响应 | 自动解压 GZIP/DEFLECT 等压缩的响应体 |
| Keep: All sessions | 会话保留策略 | 设置保留会话数量,防止内存溢出 |
| Clear Cache | 清除缓存 | 清除 WinINET 缓存 |
| Stream | 流模式 | 开启/关闭流式传输模式 |
| Buffer | 缓冲模式 | 在缓冲模式下,Fiddler 会等待完整响应再转发 |
3.4 会话列表各列含义
| 列名 | 说明 |
|---|---|
| # | 会话序号 |
| Result | HTTP 状态码(200=成功,404=未找到,500=服务器错误等) |
| Protocol | 协议类型(HTTP、HTTPS) |
| Host | 请求的目标主机名 |
| URL | 请求的完整 URL 路径 |
| Body | 响应体大小(字节) |
| Caching | 缓存控制头信息 |
| Content-Type | 响应内容类型(text/html、application/json 等) |
| Process | 发起请求的本地进程名称和 PID |
| Comments | 注释信息 |
点击列标题可以对该列进行排序,右键列标题可以选择显示/隐藏哪些列。
3.5 右侧面板(Inspectors 详解)
右侧面板分为上下两部分:请求区(上半部分)和响应区(下半部分)。
请求面板(Request Inspectors)
| Tab | 说明 |
|---|---|
| Headers | 以树形结构展示请求头信息(Method、URL、Cookie 等) |
| TextView | 以文本形式展示请求体内容 |
| Raw | 展示原始的请求报文(包含请求行、请求头、请求体) |
| HexView | 以十六进制形式展示请求数据 |
| WebForms | 以表单形式展示 URL 参数和 POST 表单数据 |
| JSON | 以树形结构展示 JSON 格式的请求体 |
| XML | 以树形结构展示 XML 格式的请求体 |
响应面板(Response Inspectors)
| Tab | 说明 |
|---|---|
| Headers | 以树形结构展示响应头信息 |
| TextView | 以文本形式展示响应体内容(可直接阅读) |
| Raw | 展示原始的响应报文 |
| HexView | 以十六进制形式展示响应数据 |
| ImageView | 如果是图片类型,直接显示图片 |
| JSON | 以树形结构展示 JSON 格式的响应体 |
| Auth | 展示认证相关信息 |
| Caching | 展示缓存相关信息 |
| Cookies | 展示请求和响应中的 Cookie 信息 |
四、抓取 HTTPS 请求
4.1 开启 HTTPS 抓包
方法一:通过菜单设置
- 点击菜单
Tools→Options→HTTPS - 勾选
Decrypt HTTPS traffic - 点击
Actions→Trust Root Certificate - 系统弹出安全警告,一路选择 是 / 确定
- 重启 Fiddler 使配置生效
方法二:快速开启
- 点击底部状态栏的
HTTPS文字(如果显示为灰色则未开启) - 点击后变为蓝色即表示 HTTPS 抓包已开启
4.2 安装 Fiddler 根证书
Fiddler 需要安装自己的根证书才能解密 HTTPS 流量。步骤如下:
- 打开 Fiddler,
Tools→Options→HTTPS - 点击
Actions→Export Root Certificate to Desktop - 在桌面找到导出的证书文件,双击打开
- 点击
安装证书→ 选择当前用户→ 下一步 - 选择
将所有的证书放入下列存储→ 浏览 → 选择受信任的根证书颁发机构 - 点击下一步 → 完成

4.3 验证 HTTPS 抓包是否成功
- 打开浏览器访问
https://www.baidu.com - 在 Fiddler 会话列表中查看是否有对应的 HTTPS 请求
- 点击该会话,在右侧 Inspectors 中查看响应内容
4.4 HTTPS 抓包失败排查
| 问题 | 原因 | 解决方案 |
|---|---|---|
| 页面显示 “您的连接不是私密连接” | 根证书未正确安装 | 重新导出并安装根证书 |
| Fiddler 中看不到 HTTPS 请求 | HTTPS 解密未开启 | 确认 Decrypt HTTPS traffic 已勾选 |
| 某些 App 无法抓包 | App 使用了证书固定(SSL Pinning) | 需要对 App 进行处理或使用其他工具 |
| Fiddler 证书被系统拒绝 | Windows 更新后证书失效 | 删除旧证书,重新导出安装 |
4.5 注意事项
- 安全警告:Fiddler 解密 HTTPS 时相当于中间人代理,所有数据以明文形式展示。抓包结束后建议关闭 HTTPS 解密功能。
- 证书冲突:如果同时安装了多个代理工具的证书,可能会产生冲突。建议定期清理不需要的根证书。
- 浏览器缓存:如果开启 HTTPS 抓包后浏览器提示证书错误,尝试清除浏览器缓存或重启浏览器。
五、过滤请求
在实际开发和测试中,请求量往往非常大。Fiddler 提供了强大的过滤功能,帮助我们快速定位目标请求。
5.1 使用 Filters 功能面板
点击右侧上方的 Filters 标签页,进入过滤配置面板。
Host 过滤
| 过滤选项 | 说明 |
|---|---|
| No Zone Filter | 不按区域过滤(默认) |
| Show Only Intranet Hosts | 只显示内网主机的请求 |
| Show Only Internet Hosts | 只显示外网主机的请求 |
| No Host Filter | 不按主机名过滤 |
| Hide the following Hosts | 隐藏指定主机的请求 |
| Show Only the following Hosts | 只显示指定主机的请求 |
| Flag the following Hosts | 标记指定主机的请求(高亮显示) |
常用操作示例:
# 只抓取特定域名的请求
Show Only the following Hosts:
api.example.com
www.example.com
# 隐藏静态资源请求
Hide the following Hosts:
cdn.example.com
static.example.com
Client Process 过滤
| 选项 | 说明 |
|---|---|
| Show only traffic from | 只显示指定进程的请求 |
| Hide traffic from | 隐藏指定进程的请求 |
可以点击
Find Process...按钮,然后拖动靶心到目标窗口来选择进程。
URL 过滤
| 选项 | 说明 |
|---|---|
| Show only if URL contains | 只显示 URL 包含指定字符串的请求 |
| Hide if URL contains | 隐藏 URL 包含指定字符串的请求 |
常用操作示例:
# 只显示 API 接口请求
Show only if URL contains: /api/
# 隐藏图片、CSS、JS 等静态资源
Hide if URL contains: .jpg .png .gif .css .js .ico .svg .woff .ttf
请求头/响应头过滤
| 选项 | 说明 |
|---|---|
| Show only if Header contains | 只显示包含指定请求头的请求 |
| Hide if Header contains | 隐藏包含指定请求头的请求 |
常用操作示例:
# 只显示 JSON 接口请求
Show only if Header contains: Content-Type: application/json
# 隐藏缓存请求
Hide if Header contains: If-None-Match
响应状态码过滤
| 选项 | 说明 |
|---|---|
| Hide success (2xx) | 隐藏成功的响应 |
| Hide redirects (3xx) | 隐藏重定向响应 |
| Hide not modified (304) | 隐藏 304 缓存响应 |
| Hide client errors (4xx) | 隐藏客户端错误响应 |
| Hide server errors (5xx) | 隐藏服务器错误响应 |
响应类型和大小过滤
| 选项 | 说明 |
|---|---|
| Hide smaller than | 隐藏小于指定大小的响应 |
| Hide larger than | 隐藏大于指定大小的响应 |
5.2 使用搜索功能过滤
按 Ctrl+F 或点击工具栏的 Find 按钮打开搜索对话框:
| 搜索选项 | 说明 |
|---|---|
| Search in Requests | 在请求中搜索 |
| Search in Responses | 在响应中搜索 |
| Search in Headers | 在头部信息中搜索 |
| Search in Body | 在请求/响应体中搜索 |
| Search in URLs | 在 URL 中搜索 |
搜索结果中匹配的会话会高亮显示,点击 Find Sessions 会选中所有匹配的会话。
5.3 使用 QuickExec 命令行过滤
在界面底部有一个命令行输入框(QuickExec),可以输入快捷命令:
# 只显示特定域名的请求
select host == api.example.com
# 只显示包含特定 URL 的请求
select uri contains /login
# 只显示状态码为 200 的请求
select result == 200
# 只显示 POST 请求
select method == POST
# 只显示大于 10KB 的响应
select size > 10240
# 隐藏所有图片请求
hide image
# 隐藏所有 CONNECT 请求
hide connect
# 清空会话列表
cls
5.4 快速过滤技巧
| 场景 | 操作方法 |
|---|---|
| 只看某个域名的请求 | 双击会话列表中该域名的任意请求 → 右键 → Hide Unselected |
| 查看特定请求 | 在 QuickExec 中输入 select uri contains /login |
| 排除静态资源 | Filters → URL 过滤中输入 .jpg .png .gif .css .js .ico |
| 只看失败请求 | Filters → 勾选 Hide success (2xx) 和 Hide redirects (3xx) |
| 查看大文件请求 | QuickExec 中输入 select size > 51200(大于 50KB) |
六、删除数据
6.1 清除会话数据
方法一:工具栏按钮
- 点击工具栏的 Remove All 按钮(或按快捷键 Ctrl+X)
方法二:菜单操作
Edit→Remove→ 选择清除范围
方法三:右键菜单
- 在会话列表中右键 →
Remove→ 选择清除范围
清除选项
| 选项 | 说明 |
|---|---|
| All Sessions | 清除所有会话 |
| Selected Sessions | 清除选中的会话 |
| Unselected Sessions | 清除非选中的会话 |
| Duplicate Response Bodies | 清除重复的响应体 |
6.2 清除浏览器缓存
在 Fiddler 中可以直接清除 WinINET(IE/Edge/Chrome 使用的底层网络库)缓存:
- 点击工具栏的 Clear Cache 按钮
这等同于在 IE 的 Internet 选项中清除缓存,会影响所有使用 WinINET 的浏览器。
6.3 清除 Cookie
# 方法一:通过 QuickExec 命令
# 选中所有会话后删除 Cookie
cookie: remove all
# 方法二:通过 FiddlerScript
# 在 CustomRules.js 中添加
static function OnBeforeRequest(oSession: Session) {
oSession.oRequest.headers.Remove("Cookie");
}
6.4 清除 HTTPS 证书
如果需要重新安装 Fiddler 证书:
- 打开
Tools→Options→HTTPS - 点击
Actions→Reset All Certificates - 确认重置后,Fiddler 会重新生成并安装根证书
6.5 导出和清除会话文件
# 导出会话
File → Save → 选择保存路径(.saz 格式)
# 导入会话
File → Load → 选择 .saz 文件
# 删除已保存的会话文件
直接在文件管理器中删除 .saz 文件即可
七、接口基础概述
7.1 什么是 API 接口
API(Application Programming Interface,应用程序编程接口)是前后端交互的桥梁。前端通过发送 HTTP 请求调用后端 API,后端处理后返回数据。
7.2 HTTP 请求方法
| 方法 | 说明 | 典型用途 |
|---|---|---|
| GET | 获取资源 | 查询数据列表、获取详情 |
| POST | 创建资源 | 提交表单、创建新数据 |
| PUT | 更新资源(全量) | 更新完整信息 |
| PATCH | 更新资源(部分) | 修改部分字段 |
| DELETE | 删除资源 | 删除数据 |
7.3 HTTP 状态码
2xx 成功
| 状态码 | 说明 | 含义 |
|---|---|---|
| 200 | OK | 请求成功 |
| 201 | Created | 创建成功 |
| 204 | No Content | 成功但无返回内容 |
| 206 | Partial Content | 部分内容(断点续传) |
3xx 重定向
| 状态码 | 说明 | 含义 |
|---|---|---|
| 301 | Moved Permanently | 永久重定向 |
| 302 | Found | 临时重定向 |
| 304 | Not Modified | 未修改(使用缓存) |
4xx 客户端错误
| 状态码 | 说明 | 含义 |
|---|---|---|
| 400 | Bad Request | 请求参数错误 |
| 401 | Unauthorized | 未认证(需要登录) |
| 403 | Forbidden | 无权限访问 |
| 404 | Not Found | 资源不存在 |
| 405 | Method Not Allowed | 请求方法不被允许 |
| 408 | Request Timeout | 请求超时 |
| 429 | Too Many Requests | 请求过于频繁(限流) |
5xx 服务器错误
| 状态码 | 说明 | 含义 |
|---|---|---|
| 500 | Internal Server Error | 服务器内部错误 |
| 502 | Bad Gateway | 网关错误 |
| 503 | Service Unavailable | 服务不可用 |
| 504 | Gateway Timeout | 网关超时 |
7.4 常见的 Content-Type
| 类型 | 说明 | 示例 |
|---|---|---|
application/json |
JSON 数据 | {"name":"张三"} |
application/x-www-form-urlencoded |
表单提交 | name=%E5%BC%A0%E4%B8%89&age=20 |
multipart/form-data |
文件上传 | 包含文件和表单数据 |
text/html |
HTML 页面 | <html>...</html> |
text/plain |
纯文本 | 简单文本内容 |
application/xml |
XML 数据 | <user><name>张三</name></user> |
application/octet-stream |
二进制流 | 文件下载 |
7.5 接口 URL 的组成
https://api.example.com:443/v1/users?page=1&size=10
|____| |______________| |_| |_____________| |____________|
| | | | |
协议 域名 端口 路径 查询参数
八、请求响应报文
8.1 HTTP 请求报文结构
一个完整的 HTTP 请求由三部分组成:请求行、请求头、请求体。
示例:GET 请求
GET /api/users?page=1 HTTP/1.1
Host: api.example.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) Chrome/120.0.0.0
Accept: application/json
Authorization: Bearer eyJhbGciOiJIUzI1NiJ9.xxx
Cookie: session_id=abc123; user_id=1001
Connection: keep-alive
示例:POST 请求
POST /api/users HTTP/1.1
Host: api.example.com
Content-Type: application/json
Content-Length: 88
Authorization: Bearer eyJhbGciOiJIUzI1NiJ9.xxx
Cookie: session_id=abc123; user_id=1001
{
"name": "张三",
"email": "zhangsan@example.com",
"age": 25,
"phone": "13800138000"
}
请求报文各部分说明
| 部分 | 说明 | 示例 |
|---|---|---|
| 请求行 | 请求方法 + URL路径 + 协议版本 | POST /api/users HTTP/1.1 |
| 请求头 | 附加的元数据信息 | Content-Type: application/json |
| 空行 | 请求头和请求体之间的分隔符 | (一个空行) |
| 请求体 | 实际发送的数据 | {"name":"张三"} |
常用请求头
| 请求头 | 说明 |
|---|---|
Host |
目标服务器域名 |
User-Agent |
客户端标识(浏览器/系统信息) |
Accept |
客户端可接受的响应内容类型 |
Accept-Language |
接受的语言 |
Accept-Encoding |
接受的编码方式(gzip、deflate 等) |
Content-Type |
请求体的数据格式 |
Content-Length |
请求体的长度(字节) |
Authorization |
认证信息(Token、Basic Auth 等) |
Cookie |
Cookie 信息 |
Referer |
来源页面 URL |
Cache-Control |
缓存控制指令 |
If-None-Match |
条件请求,配合 ETag 使用 |
X-Requested-With |
标识是否为 AJAX 请求 |
8.2 HTTP 响应报文结构
一个完整的 HTTP 响应由三部分组成:状态行、响应头、响应体。
示例:成功响应
HTTP/1.1 200 OK
Date: Fri, 11 Jul 2026 08:00:00 GMT
Content-Type: application/json; charset=utf-8
Content-Length: 256
Server: nginx/1.24.0
Cache-Control: no-cache
ETag: "a1b2c3d4e5f6"
{
"code": 200,
"message": "success",
"data": {
"id": 1001,
"name": "张三",
"email": "zhangsan@example.com",
"phone": "138****8000"
},
"timestamp": 1689072000000
}
示例:错误响应
HTTP/1.1 401 Unauthorized
Date: Fri, 11 Jul 2026 08:00:00 GMT
Content-Type: application/json; charset=utf-8
WWW-Authenticate: Bearer
{
"code": 401,
"message": "未登录或登录已过期,请重新登录",
"data": null,
"timestamp": 1689072000000
}
响应报文各部分说明
| 部分 | 说明 | 示例 |
|---|---|---|
| 状态行 | 协议版本 + 状态码 + 状态描述 | HTTP/1.1 200 OK |
| 响应头 | 附加的元数据信息 | Content-Type: application/json |
| 空行 | 响应头和响应体之间的分隔符 | (一个空行) |
| 响应体 | 服务器返回的数据 | {"code":200,...} |
常用响应头
| 响应头 | 说明 |
|---|---|
Content-Type |
响应体的数据格式和编码 |
Content-Length |
响应体的长度(字节) |
Content-Encoding |
响应体的编码方式(gzip、br 等) |
Cache-Control |
缓存控制指令 |
ETag |
资源的唯一标识,用于缓存验证 |
Last-Modified |
资源最后修改时间 |
Set-Cookie |
服务端设置 Cookie |
Location |
重定向的目标 URL(配合 3xx 状态码) |
Server |
服务器标识 |
Access-Control-Allow-Origin |
CORS 跨域允许的来源 |
Authorization |
认证信息 |
8.3 在 Fiddler 中查看报文
- 在会话列表中点击目标请求
- 右侧上方的 Request 面板显示请求报文
- 右侧下方的 Response 面板显示响应报文
- 点击 Raw 标签查看完整的原始报文
- 点击 Headers 标签查看格式化的头部信息
- 点击 TextView 标签查看文本格式的请求/响应体
九、模拟弱网测试
9.1 什么是弱网测试
弱网测试是指在模拟网络条件较差(如 2G、3G、高延迟、高丢包率等)的环境下,验证应用的:
- 加载性能和用户体验
- 请求超时处理
- 数据完整性
- 重试机制
- 错误提示的友好性
9.2 使用 Fiddler 内置弱网模拟
Fiddler 内置了简单的弱网模拟功能:
- 点击菜单
Rules→Performance→Simulate Modem Speeds - 勾选后,所有请求会被模拟为拨号调制解调器的速度(约 33.6 Kbps)
- 再次点击可取消模拟
9.3 使用 FiddlerScript 自定义弱网
点击 Rules → Customize Rules,在打开的脚本编辑器中找到 m_SimulateModem 相关代码:
// 在 Rules 块中添加自定义网络配置
var m_SimulateModem: boolean = true;
// 模拟不同网络环境的延迟配置(单位:毫秒)
var BRACKET_LATENCY = 300; // 基础延迟
// 在 OnBeforeRequest 函数中添加:
static function OnBeforeRequest(oSession: Session) {
// 模拟 3G 网络(上传延迟 500ms,下载延迟 1000ms)
if (m_SimulateModem) {
oSession["request-trickle-delay"] = "500";
oSession["response-trickle-delay"] = "1000";
}
}
9.4 常见网络环境参数参考
| 网络类型 | 下行速度 | 上行速度 | 延迟 | Fiddler 配置参考 |
|---|---|---|---|---|
| 2G (GPRS) | 50 Kbps | 30 Kbps | 500ms | request: 300, response: 800 |
| 2G (EDGE) | 200 Kbps | 100 Kbps | 300ms | request: 150, response: 400 |
| 3G (UMTS) | 384 Kbps | 128 Kbps | 200ms | request: 80, response: 200 |
| 3G (HSPA) | 2 Mbps | 1 Mbps | 100ms | request: 40, response: 100 |
| 4G LTE | 50 Mbps | 25 Mbps | 50ms | request: 10, response: 20 |
| WiFi | 100+ Mbps | 100+ Mbps | 10ms | request: 2, response: 5 |
9.5 高级弱网模拟脚本示例
// 自定义弱网模拟 - 根据条件选择不同的网络配置
static function OnBeforeRequest(oSession: Session) {
if (m_SimulateModem) {
// 方案一:模拟 3G 网络
// 上行延迟 200ms,下行延迟 500ms
oSession["request-trickle-delay"] = "200";
oSession["response-trickle-delay"] = "500";
// 方案二:模拟丢包
// 随机丢弃 10% 的请求
if (Math.random() < 0.1) {
oSession["request-trickle-delay"] = "30000"; // 30秒延迟等同于超时
}
// 方案三:针对特定接口模拟弱网
if (oSession.uriContains("/api/upload")) {
oSession["request-trickle-delay"] = "1000"; // 上传接口延迟 1秒
oSession["response-trickle-delay"] = "2000"; // 下载延迟 2秒
}
}
}
9.6 弱网测试检查清单
- 页面加载是否有 Loading 动画或进度提示
- 请求超时是否有友好的错误提示
- 超时后是否支持重试
- 数据加载过程中是否可以正常操作
- 图片/视频是否有占位符或懒加载
- 长时间加载是否会触发 ANR(Application Not Responding)
- 网络恢复后是否能自动重新加载
- 弱网下数据是否完整传输
十、定位 Bug 前后端问题
10.1 前后端 Bug 分离原则
通过 Fiddler 抓包分析请求和响应,可以快速判断 Bug 是前端问题还是后端问题:
┌─────────────────────────────────────────────────────────────┐
│ Bug 判断流程 │
│ │
│ 1. 在 Fiddler 中找到该请求 │
│ 2. 检查请求报文(Request) │
│ ├─ 请求参数是否正确? │
│ ├─ 请求头是否正确?(Token、Content-Type 等) │
│ ├─ 请求 URL 是否正确? │
│ └─ 请求体是否完整? │
│ 3. 检查响应报文(Response) │
│ ├─ 状态码是否正确? │
│ ├─ 响应体数据是否正确? │
│ └─ 响应格式是否符合约定? │
│ 4. 判断结论 │
│ ├─ 请求不正确 → 前端 Bug │
│ ├─ 请求正确,响应不正确 → 后端 Bug │
│ └─ 请求和响应都正确,但页面显示异常 → 前端渲染 Bug │
└─────────────────────────────────────────────────────────────┘
10.2 具体判断方法
情况一:前端 Bug
特征:请求报文存在问题
| 检查项 | 说明 |
|---|---|
| 请求参数错误 | 参数名拼写错误、参数类型错误、参数值错误 |
| 请求头缺失 | 缺少 Authorization、Content-Type 等必要头部 |
| 请求 URL 错误 | 接口地址拼写错误、路径参数缺失 |
| 请求体不完整 | 必填字段缺失、字段格式不正确 |
| 请求方法错误 | 应该用 POST 却用了 GET |
Fiddler 操作步骤:
- 在 Fiddler 中找到该请求
- 点击 Raw 标签查看原始请求报文
- 对比 API 文档检查请求参数是否正确
- 如果请求不正确,定位到前端代码中发起请求的部分
情况二:后端 Bug
特征:请求报文正确,但响应存在问题
| 检查项 | 说明 |
|---|---|
| 状态码错误 | 返回 500、400 等错误状态码 |
| 响应数据错误 | 数据格式不对、字段缺失、数据不一致 |
| 响应超时 | 响应时间过长(超过合理范围) |
| 接口报错 | 返回错误信息但前端没有异常处理 |
| 数据不一致 | 同一接口多次调用返回不同结果 |
Fiddler 操作步骤:
- 在 Fiddler 中找到该请求
- 确认请求报文正确无误
- 点击 Response 区域的 Raw 标签查看响应
- 分析响应内容,将错误信息反馈给后端
情况三:前端渲染 Bug
特征:请求和响应都正确,但页面显示异常
| 检查项 | 说明 |
|---|---|
| 数据正确但显示错误 | 前端解析或渲染逻辑有问题 |
| 数据格式处理错误 | 日期格式、金额格式、状态码映射等 |
| 列表渲染问题 | 分页、排序、过滤逻辑错误 |
| 表单回显问题 | 数据绑定或赋值逻辑有问题 |
10.3 实战分析示例
场景:用户反馈登录后页面显示空白
分析步骤:
1. 打开 Fiddler,开启抓包
2. 执行登录操作
3. 在 Fiddler 中找到登录接口请求
检查请求:
POST /api/login HTTP/1.1
Content-Type: application/json
{"username":"admin","password":"123456"}
→ 请求参数正确 ✓
检查响应:
HTTP/1.1 200 OK
Content-Type: application/json
{"code":200,"data":{"token":"xxx","userInfo":{}}}
→ 返回 200,但 userInfo 是空对象 ✗
4. 继续查找登录后的首页数据接口:
GET /api/user/info HTTP/1.1
Authorization: Bearer xxx
→ 请求头中 Token 正确 ✓
检查响应:
HTTP/1.1 200 OK
{"code":200,"data":{"nickname":"管理员","avatar":"/img/admin.png"}}
→ 数据正确 ✓
5. 综合判断:登录接口返回的 userInfo 为空,但后续接口数据正常
→ 后端 Bug:登录接口的 userInfo 字段返回不完整
10.4 FiddlerScript 辅助定位
// 在 FiddlerScript 中添加日志记录,辅助分析
static function OnBeforeRequest(oSession: Session) {
// 记录关键请求的详细信息
if (oSession.uriContains("/api/")) {
oSession["ui-backcolor"] = "#FFE4E1"; // 标记 API 请求为浅红色
}
}
static function OnBeforeResponse(oSession: Session) {
// 标记慢响应(超过 2 秒)
if (oSession.TimedOut) {
oSession["ui-backcolor"] = "#FF6347"; // 红色标记
oSession["ui-comments"] = "⚠️ 请求超时";
}
// 标记 5xx 错误
if (oSession.responseCode >= 500) {
oSession["ui-backcolor"] = "#FF0000"; // 深红色标记
oSession["ui-comments"] = "❌ 服务器错误";
}
}
十一、做 Mock 测试
11.1 什么是 Mock 测试
Mock 测试是在测试过程中,用模拟数据替代真实后端返回的数据,实现前后端解耦开发和测试。常见场景:
- 后端接口尚未开发完成
- 需要测试异常场景(如 500 错误、网络超时)
- 需要大量测试数据
- 后端环境不稳定
11.2 使用 Fiddler AutoResponder 做 Mock
AutoResponder 是 Fiddler 内置的请求拦截和模拟响应功能。
操作步骤
- 在会话列表中找到目标请求
- 右键点击 → 选择 Unlock for Editing(如需要)
- 将该请求拖拽到右下角的 AutoResponder 标签页
- 在 AutoResponder 中配置匹配规则和响应内容
配置界面说明
┌─────────────────────────────────────────────────────┐
│ AutoResponder │
│ │
│ ☑ Enable rules │
│ ☑ Unmatched requests passthrough │
│ │
│ 匹配规则 │ 响应内容 │
│ ─────────────────┼───────────────────────────── │
│ EXACT:/api/login │ C:\mock\login_success.json │
│ regex:.*/api/user│ C:\mock\user_info.json │
│ * │ *passthrough* │
└─────────────────────────────────────────────────────┘
匹配规则类型
| 规则类型 | 说明 | 示例 |
|---|---|---|
| EXACT: | 精确匹配 URL | EXACT:/api/users |
| regex: | 正则表达式匹配 | regex:(?insx)/api/user.* |
| prefix: | 前缀匹配 | prefix:/api/v1 |
| glob: | 通配符匹配 | *api/user* |
| default | 默认匹配所有 | * |
响应内容类型
| 响应类型 | 说明 |
|---|---|
| 本地文件 | 选择本地的 JSON/HTML/XML 文件作为响应 |
| 200_OK | 返回 200 状态码和空内容 |
| 404_NotFound | 返回 404 错误 |
| 500ServerError | 返回 500 错误 |
| Delay | 延迟指定毫秒数后响应 |
| Drop Connection | 模拟断开连接 |
| Find a file… | 选择本地文件 |
| Custom Response… | 自定义响应内容 |
11.3 Mock 数据文件示例
登录成功响应 (login_success.json)
{
"code": 200,
"message": "登录成功",
"data": {
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.mock_token",
"userInfo": {
"id": 1001,
"username": "admin",
"nickname": "管理员",
"email": "admin@example.com",
"avatar": "/img/default-avatar.png",
"role": "admin"
},
"permissions": ["read", "write", "delete", "admin"]
}
}
登录失败响应 (login_fail.json)
{
"code": 401,
"message": "用户名或密码错误",
"data": null
}
用户列表响应 (user_list.json)
{
"code": 200,
"message": "success",
"data": {
"total": 100,
"page": 1,
"size": 10,
"list": [
{"id": 1, "name": "张三", "email": "zhangsan@example.com"},
{"id": 2, "name": "李四", "email": "lisi@example.com"},
{"id": 3, "name": "王五", "email": "wangwu@example.com"}
]
}
}
服务器错误响应 (server_error.json)
{
"code": 500,
"message": "服务器内部错误,请稍后重试",
"data": null,
"error": "Database connection timeout"
}
11.4 使用 FiddlerScript 做高级 Mock
// 在 CustomRules.js 中实现动态 Mock
static function OnBeforeResponse(oSession: Session) {
// Mock 登录接口 - 模拟成功
if (oSession.uriContains("/api/login") && oSession.RequestMethod == "POST") {
oSession.oResponse["Content-Type"] = "application/json";
oSession.utilSetResponseBody('{"code":200,"message":"登录成功","data":{"token":"mock_token_12345"}}');
}
// Mock 用户列表 - 返回 10 条数据
if (oSession.uriContains("/api/users") && oSession.RequestMethod == "GET") {
var mockData = '{"code":200,"data":{"total":100,"list":[';
for (var i = 1; i <= 10; i++) {
if (i > 1) mockData += ',';
mockData += '{"id":' + i + ',"name":"用户' + i + '"}';
}
mockData += ']}}';
oSession.oResponse["Content-Type"] = "application/json";
oSession.utilSetResponseBody(mockData);
}
// Mock 服务器错误 - 模拟 500 错误
if (oSession.uriContains("/api/crash")) {
oSession.oResponse["Content-Type"] = "application/json";
oSession.responseCode = 500;
oSession.utilSetResponseBody('{"code":500,"message":"模拟服务器错误"}');
}
// Mock 慢响应 - 延迟 5 秒
if (oSession.uriContains("/api/slow")) {
oSession["request-trickle-delay"] = "5000";
}
}
11.5 Mock 测试场景清单
| 测试场景 | Mock 配置 |
|---|---|
| 正常流程 | 返回 200 + 正确数据 |
| 参数错误 | 返回 400 + 错误提示 |
| 未登录 | 返回 401 + 未认证提示 |
| 无权限 | 返回 403 + 无权限提示 |
| 资源不存在 | 返回 404 + 未找到提示 |
| 服务器错误 | 返回 500 + 错误提示 |
| 网络超时 | 延迟响应(设置较长的 delay) |
| 断网 | Drop Connection |
| 返回空数据 | 返回 200 + 空数组/空对象 |
| 返回大数据 | 返回 200 + 大量数据(测试性能) |
十二、篡改数据
12.1 什么是数据篡改
数据篡改是在请求发送到服务器之前修改请求数据,或在响应返回给客户端之前修改响应数据。这是测试系统健壮性的重要手段。
12.2 设置断点
方法一:菜单设置断点
点击 Rules → Automatic Breakpoints:
| 断点类型 | 说明 |
|---|---|
| Before Requests | 在请求发送前暂停(快捷键 F11) |
| After Responses | 在响应返回前暂停(快捷键 Shift+F11) |
| Disabled | 取消所有断点 |
方法二:QuickExec 命令设置断点
# 对特定 URL 设置请求断点
bpu /api/login
# 对特定 URL 设置响应断点
bpafter /api/users
# 取消所有断点
bpu
bpafter
断点状态标识
在会话列表中:
- 红色 🔴 图标:请求/响应被断点拦截,等待手动编辑
- 绿色 🟢 图标:已放行的断点请求
12.3 篡改请求数据
操作步骤
- 设置请求断点:
Rules→Automatic Breakpoints→Before Requests(或按 F11) - 在浏览器中执行操作(如点击登录按钮)
- Fiddler 会拦截该请求,会话列表中出现红色图标的请求
- 点击该请求,在右侧 Request 面板中修改数据
- 修改完成后,点击 Run to Completion 放行请求
常见篡改场景
| 场景 | 篡改内容 | 目的 |
|---|---|---|
| 修改登录参数 | 更改用户名/密码 | 测试登录验证 |
| 修改表单数据 | 更改必填字段为空 | 测试必填校验 |
| 修改金额数据 | 更改为 0 或负数 | 测试金额校验 |
| 修改用户 ID | 更改为其他用户 | 测试越权访问 |
| 修改 Token | 删除/修改认证 Token | 测试权限控制 |
| 添加恶意字符 | 在参数中注入 SQL/脚本 | 测试安全防护 |
篡改请求示例
原始请求:
POST /api/transfer HTTP/1.1
Content-Type: application/json
Authorization: Bearer user_token
{"fromAccount":"A001","toAccount":"B002","amount":1000}
篡改为:
POST /api/transfer HTTP/1.1
Content-Type: application/json
Authorization: Bearer user_token
{"fromAccount":"A001","toAccount":"B002","amount":-1000}
→ 测试后端是否校验金额为负数
篡改为:
POST /api/transfer HTTP/1.1
Content-Type: application/json
{"fromAccount":"A001","toAccount":"B002","amount":1000}
→ 删除 Authorization 头,测试是否需要登录
12.4 篡改响应数据
操作步骤
- 设置响应断点:
Rules→Automatic Breakpoints→After Responses(或按 Shift+F11) - 在浏览器中执行操作
- Fiddler 会拦截服务器的响应
- 在右侧 Response 面板中修改响应内容
- 修改完成后,点击 Run to Completion 放行响应
篡改响应示例
原始响应:
HTTP/1.1 200 OK
Content-Type: application/json
{"code":200,"data":{"role":"user","balance":5000}}
篡改为:
{"code":200,"data":{"role":"admin","balance":999999}}
→ 测试前端是否会因 role 变化而显示管理员功能
→ 测试前端是否会因 balance 变化而显示错误金额
篡改为:
{"code":200,"data":null}
→ 测试前端对空数据的处理能力
篡改为(超长数据):
{"code":200,"data":{"name":"AAAA...(10000个字符)"}}
→ 测试前端对超长字符串的处理和截断
12.5 使用 FiddlerScript 自动篡改数据
// 自动篡改请求 - 给所有请求添加测试标记
static function OnBeforeRequest(oSession: Session) {
// 给所有 API 请求添加测试环境标记
if (oSession.uriContains("/api/")) {
oSession.oRequest["X-Test-Mode"] = "true";
oSession.oRequest["X-Test-User"] = "fiddler_test";
}
// 自动修改登录请求的密码(测试弱密码)
if (oSession.uriContains("/api/login") && oSession.RequestMethod == "POST") {
oSession.utilSetRequestBody('{"username":"admin","password":"wrong_password"}');
}
}
// 自动篡改响应 - 修改用户角色
static function OnBeforeResponse(oSession: Session) {
if (oSession.uriContains("/api/user/info")) {
var body = oSession.GetResponseBodyAsString();
body = body.Replace('"role":"user"', '"role":"admin"');
oSession.utilSetResponseBody(body);
}
}
12.6 数据篡改安全测试清单
- 越权访问测试(修改用户 ID/Token)
- 参数类型篡改(字符串→数字、数字→字符串)
- 参数边界测试(最大值、最小值、0、负数、空值)
- SQL 注入测试(在参数中添加
' OR 1=1 --) - XSS 测试(在参数中添加
<script>alert(1)</script>) - 超长字符串测试
- 特殊字符测试(Unicode、emoji、换行符等)
- 必填字段删除测试
- 重复提交测试
- 并发请求测试
十三、抓包环境测试
13.1 测试环境分类
| 环境 | 说明 | 域名特征 |
|---|---|---|
| 开发环境 (DEV) | 开发人员本地或开发服务器 | dev.xxx.com、localhost |
| 测试环境 (TEST) | 测试人员使用的环境 | test.xxx.com、qa.xxx.com |
| 预发布环境 (STAGING) | 上线前的验证环境 | staging.xxx.com、pre.xxx.com |
| 生产环境 (PROD) | 正式对外提供服务 | www.xxx.com、api.xxx.com |
13.2 不同环境的抓包配置
开发环境抓包
# 本地开发环境(localhost)
- 启动 Fiddler
- 确保浏览器/应用使用系统代理
- 直接访问 localhost 即可抓包
# 本地开发环境(指定 IP)
- 如果后端运行在本地其他端口
- 访问 http://127.0.0.1:8080 即可
- Fiddler 默认会捕获所有经过代理的请求
测试环境抓包
# 方案一:通过系统代理
- Fiddler 启动后自动设置系统代理
- 浏览器/应用通过系统代理访问测试环境
# 方案二:通过 FiddlerScript 强制转发
# 在 CustomRules.js 中添加:
static function OnBeforeRequest(oSession: Session) {
// 将生产域名转发到测试环境
if (oSession.HostnameIs("www.example.com")) {
oSession.hostname = "test.example.com";
}
}
生产环境抓包(需谨慎)
# 注意事项
1. 生产环境数据敏感,抓包前需获得授权
2. 不要在生产环境篡改数据
3. 抓包结束后立即关闭 HTTPS 解密
4. 不要保存包含敏感信息的会话文件
# 操作步骤
1. Fiddler → Tools → Options → HTTPS
2. 勾选 Decrypt HTTPS traffic
3. 开始抓包(F12)
4. 完成后立即关闭抓包和 HTTPS 解密
13.3 手机端抓包配置
步骤一:配置 Fiddler 允许远程连接
Tools→Options→Connections- 勾选
Allow remote computers to connect - 重启 Fiddler
步骤二:查看电脑 IP 地址
在 Fiddler 右上角可以看到电脑的 IP 地址,如 192.168.1.100
或者在 QuickExec 中输入:
!echo @ip
步骤三:手机配置代理
iOS 设备:
- 打开
设置→Wi-Fi - 点击已连接的 Wi-Fi 网络
- 配置代理 → 手动
- 服务器:电脑 IP(如
192.168.1.100) - 端口:
8888 - 保存
Android 设备:
- 打开
设置→WLAN - 长按已连接的网络 → 修改网络
- 高级选项 → 代理 → 手动
- 代理主机名:电脑 IP
- 代理端口:
8888 - 保存
步骤四:安装 Fiddler 根证书(抓 HTTPS 必须)
iOS:
- 用手机浏览器访问
http://电脑IP:8888 - 点击
FiddlerRoot certificate下载证书 - 安装描述文件
设置→通用→关于本机→证书信任设置→ 启用 Fiddler 证书
Android:
- 用手机浏览器访问
http://电脑IP:8888 - 下载并安装
FiddlerRoot certificate - Android 7.0+ 需要额外操作:将证书安装为系统级信任证书(需 root)
常见手机抓包问题
| 问题 | 解决方案 |
|---|---|
| 手机无法联网 | 确认 Fiddler 已开启远程连接,检查防火墙设置 |
| HTTPS 证书不受信任 | 按照上述步骤安装并信任证书 |
| App 无法抓包 | App 可能使用了 SSL Pinning,需特殊处理 |
| Android 7.0+ 无法抓 HTTPS | 需要 root 后将证书安装到系统证书目录 |
13.4 不同协议的抓包
HTTP 请求
- 默认即可捕获,无需额外配置
HTTPS 请求
- 需要开启 HTTPS 解密
- 需要安装 Fiddler 根证书
WebSocket 请求
- Fiddler 支持捕获 WebSocket 帧数据
- 在会话列表中找到 WebSocket 请求
- 点击后在右侧面板查看 WebSocket 帧内容
FTP 请求
- Fiddler 不直接支持 FTP 抓包
- 需要配合其他工具(如 Wireshark)
13.5 性能分析
使用 Statistics 功能
- 选中一个或多个会话
- 点击右侧的 Statistics 标签页
- 查看详细的性能数据:
| 指标 | 说明 |
|---|---|
| Request Count | 请求总数 |
| Request Bytes | 请求总大小 |
| Response Bytes | 响应总大小 |
| Actual Speed | 实际传输速度 |
| Response Time | 响应时间 |
| DNS Lookup | DNS 解析时间 |
| TCP Handshake | TCP 握手时间 |
| HTTPS Handshake | HTTPS 握手时间 |
使用 Timeline 功能
- 点击菜单
View→Timeline - 底部会显示请求的时间线视图
- 可以直观地看到:
- 各请求的发起时间和完成时间
- 请求之间的依赖关系
- 并发请求的数量
- 哪些请求耗时最长
慢接口分析技巧
# 在 QuickExec 中使用统计命令
# 查看选中会话的详细统计
stats
# 按响应时间排序(点击 Result 列旁边的 Time 列)
# 查找大于指定时间的请求
select elapsed > 3000
13.6 抓包最佳实践
开始抓包前
- 明确本次抓包的目的和范围
- 配置好过滤规则,减少干扰
- 清空当前会话列表(Ctrl+X)
- 确认 HTTPS 解密已正确配置(如需要)
抓包过程中
- 保持 Fiddler 在前台运行
- 及时使用过滤功能缩小范围
- 对重要请求添加注释(右键 → Comment)
- 定期清除不需要的会话,避免内存溢出
抓包结束后
- 保存重要的会话文件(File → Save)
- 关闭 HTTPS 解密功能
- 关闭 Fiddler 的抓包功能(F12)
- 清除浏览器缓存(如果修改了 HTTPS 证书)
常用快捷键
| 快捷键 | 功能 |
|---|---|
| F12 | 开启/关闭抓包 |
| F11 | 设置请求断点 |
| Shift+F11 | 设置响应断点 |
| Ctrl+F | 搜索会话 |
| Ctrl+X | 清空会话列表 |
| Ctrl+A | 全选会话 |
| Delete | 删除选中会话 |
| Ctrl+E | 编码/解码工具 |
| Ctrl+R | 打开 FiddlerScript 编辑器 |
十四、FiddlerScript 快速参考
14.1 常用内置函数
// 获取请求/响应信息
oSession.fullUrl // 完整 URL
oSession.HostnameIs("host.com") // 判断域名
oSession.uriContains("/api") // 判断 URL 包含
oSession.RequestMethod // 请求方法(GET/POST 等)
oSession.responseCode // 响应状态码
// 读取请求/响应体
var requestBody = oSession.GetRequestBodyAsString();
var responseBody = oSession.GetResponseBodyAsString();
// 设置请求/响应体
oSession.utilSetRequestBody("new body");
oSession.utilSetResponseBody("new body");
// 修改请求头
oSession.oRequest["Header-Name"] = "value";
oSession.oRequest.headers.Remove("Header-Name");
// 修改响应头
oSession.oResponse["Header-Name"] = "value";
// 设置断点
oSession["x-breakpoint-request"] = "true";
oSession["x-breakpoint-response"] = "true";
14.2 常用脚本模板
日志输出
FiddlerObject.Log("这是一条日志消息");
弹窗提示
FiddlerObject.Alert("提示信息");
修改响应状态码
oSession.responseCode = 200;
修改响应体
oSession.utilSetResponseBody('{"key":"value"}');
添加响应头
oSession.oResponse["Access-Control-Allow-Origin"] = "*";
十五、常见问题 FAQ
Q1: Fiddler 启动后无法上网
原因:Fiddler 设置了系统代理,退出时未能正确恢复。
解决方案:
- 打开
Internet 选项→连接→局域网设置 - 取消勾选
为 LAN 使用代理服务器 - 或者重新启动 Fiddler,它会自动恢复代理设置
Q2: 无法抓取 HTTPS 请求
解决方案:
- 确认 HTTPS 解密已开启
- 重新安装 Fiddler 根证书
- 清除浏览器缓存
- 检查是否有其他代理工具冲突
Q3: 手机无法通过 Fiddler 抓包
解决方案:
- 确认电脑和手机在同一局域网
- 确认 Fiddler 已开启远程连接
- 检查防火墙是否放行了 8888 端口
- 确认手机代理设置正确
Q4: Fiddler 抓包导致网页加载缓慢
原因:Fiddler 需要解密和记录所有请求,会增加一定延迟。
解决方案:
- 关闭不需要的过滤功能
- 使用 Filters 缩小抓包范围
- 设置合理的会话保留数量
Q5: 如何只抓取某个进程的流量?
解决方案:
- 点击工具栏的 Any Process 按钮(靶心图标)
- 拖动到目标进程的窗口上
- 释放鼠标即可只捕获该进程的流量
- 右键点击会话列表中的进程列也可以过滤
核心技能清单
| 技能 | 重要性 | 难度 |
|---|---|---|
| HTTPS 抓包 | ⭐⭐⭐⭐⭐ | ⭐⭐ |
| 请求/响应分析 | ⭐⭐⭐⭐⭐ | ⭐⭐ |
| 过滤请求 | ⭐⭐⭐⭐ | ⭐⭐ |
| 数据篡改 | ⭐⭐⭐⭐ | ⭐⭐⭐ |
| Mock 测试 | ⭐⭐⭐⭐ | ⭐⭐⭐ |
| 弱网模拟 | ⭐⭐⭐ | ⭐⭐ |
| 手机抓包 | ⭐⭐⭐ | ⭐⭐⭐ |
| FiddlerScript | ⭐⭐ | ⭐⭐⭐⭐ |
更多推荐


所有评论(0)