做过接口测试或者 Web 开发的人,基本上都用过 Fiddler。这个工具出来很多年了,到现在还是很多测试工程师和开发的日常必备。它的核心功能就一件事:把你电脑和网络之间的 HTTP/HTTPS 请求拦下来,让你看到数据里面有什么,还可以改。

这篇文章把 Fiddler 的常见用法整理了一遍,从安装到实际操作,适合没用过的人跟着走一遍,也适合用过但没系统看过的人补一下知识点。


Fiddler 是什么,工作原理是什么

Fiddler 是一个 HTTP 调试代理工具,运行在客户端和服务器之间,相当于一个中间人。打开 Fiddler 之后,它会自动把系统代理设置成自己,所有从浏览器或应用发出的 HTTP 请求都会先经过它,再转发到目标服务器;服务器的响应也是先回到 Fiddler,再转给客户端。这个过程 Fiddler 全程记录,想看哪条请求的内容,双击打开就行。

关掉 Fiddler 的时候,代理会自动还原,不需要手动改回来。

它默认监听的端口是 8888,可以在 Tools → Options → Connections 里改。

能做什么:

  • 查看浏览器和手机 App 发出的 HTTP/HTTPS 请求内容
  • 修改请求参数或响应数据,用于接口测试和造数据
  • 设置断点,拦截请求后手动修改再放行
  • 用 AutoResponder 功能把某个接口的请求重定向到本地文件
  • 模拟弱网环境,测试 App 在低速网络下的表现
  • 过滤请求,只显示某个域名下的流量
  • 重放请求,用 Composer 手动构造并发送请求

免费使用,Windows 平台原生支持,安装包体积小,不依赖其他运行环境。


在这里插入图片描述

安装方法

👉 下载地址: Fiddler 安装包下载

下载后是一个 exe 文件,双击运行,按安装向导点"下一步"就能完成,安装路径可以改到非系统盘。

安装完第一次打开,会弹出一个提示,问是否允许 Fiddler 解密 HTTPS 流量,这里建议点"Yes",不然只能抓 HTTP 包,HTTPS 的内容看不到。


界面说明

打开 Fiddler,界面分左右两栏:

  • 左侧会话列表:记录每一条抓到的请求,显示请求编号、协议、主机、URL、状态码、耗时等信息。不同类型的请求颜色不同,红色是有错误的(如 404、500),绿色是 HTTP,灰色是 HTTPS 等。
  • 右侧详情面板:选中左侧某条请求后,右侧显示它的详细内容,分上下两部分:上面是请求头和请求体,下面是响应头和响应体。切换到 Inspectors 标签页可以按不同格式查看数据(Raw、JSON、Headers 等)。

底部有一个命令行输入框,可以输入快捷命令控制断点和过滤。


在这里插入图片描述

几种核心使用方法

用法一:抓 PC 端网页的 HTTP/HTTPS 请求

这是最基础的用法。打开 Fiddler,然后打开浏览器访问任意网页,左侧会话列表就开始滚动,每一条都是一个 HTTP 请求。

点击左侧任意一条,右侧切换到 Inspectors 标签页:

  • 上半部分是"请求":包括请求方法(GET/POST)、URL、请求头、请求体
  • 下半部分是"响应":状态码、响应头、响应体(页面 HTML、JSON 数据等)

如果想只看某个域名的请求,不想被其他无关流量干扰,可以用过滤功能:

切换到右侧的 Filters 标签页,勾选"Use Filters",在"Show only the following Hosts"里填入目标域名,比如 api.example.com,然后点 Actions → Run Filterset Now,列表里就只剩这个域名的请求了。

HTTPS 解密配置(如果没有开启):

去 Tools → Options → HTTPS,勾选"Capture HTTPS CONNECTs"和"Decrypt HTTPS traffic",点 OK,会提示安装证书,点"Yes"信任,重启 Fiddler,之后 HTTPS 请求就能正常看到内容了。


在这里插入图片描述

用法二:抓手机 App 的数据包

这个用法需要手机和电脑在同一个 WiFi 网络下。操作分三步:

第一步:Fiddler 开启远程连接

Tools → Options → Connections,勾选"Allow remote computers to connect",端口保持 8888,点 OK。这时 Fiddler 会弹一个提示,确认允许就行。

第二步:手机设置代理

查一下电脑的 IP 地址(Win+R 输入 cmd,运行 ipconfig,找 IPv4 地址,比如是 192.168.1.5)。

然后手机连上同一个 WiFi,进入 WiFi 设置,找到当前连接的网络,点进去修改网络配置,把代理设为"手动",服务器填电脑 IP(192.168.1.5),端口填 8888,保存。

第三步:安装 Fiddler 证书(抓 HTTPS 必须)

手机设好代理后,用手机浏览器访问:http://192.168.1.5:8888

页面会显示 Fiddler 的欢迎页,拉到底部找到"FiddlerRoot certificate"链接,点击下载证书文件。

  • Android 手机:进入设置 → 安全 → 安装证书,找到刚下载的 cer 文件,给它起个名字安装。部分 Android 系统还需要进"信任的凭据"里确认。
  • iPhone:证书下载后进入设置 → 通用 → VPN 与设备管理,找到 FiddlerRoot 证书,点安装。安装完之后还需要一步:设置 → 通用 → 关于本机 → 证书信任设置,把 FiddlerRoot 的开关打开,手动设置为信任,少了这一步 HTTPS 还是抓不到。

设置好后,用手机打开任意 App 操作,回到电脑上的 Fiddler,就能看到手机发出的请求了。

注意: 抓包结束后记得把手机的代理关掉,不然手机断网后会上不了网。另外,部分 App 有反抓包机制(SSL Pinning),这类 App 用普通方式抓不到,需要借助其他工具绕过,这里不展开。


用法三:设置断点修改请求或响应

这是测试人员用得最多的功能之一。场景是:想看后端如果收到不同参数会怎么处理,但又不想改前端代码,就可以用断点把请求拦下来,在 Fiddler 里改完参数再放行。

方式一:全局断点(拦截所有请求)

菜单 Rules → Automatic Breakpoints → Before Requests(在请求发出前拦截)或 After Responses(在响应返回后拦截)。

设置后,之后所有请求都会被暂停在 Fiddler 里,左侧会话列表里停住的请求图标会变成红色叹号。点击这条请求,在右侧可以直接修改请求参数或响应内容,改完点上方的"Go"或者"Run to Completion"按钮放行。

用完记得在 Rules → Automatic Breakpoints → Disabled 里关掉,不然所有请求都卡住。

方式二:只对指定 URL 设断点

在底部命令行输入:

bpu api.example.com/login

这样只有 URL 包含 /login 的请求才会被拦住,其他请求正常通过。取消断点输入 bpu(不带参数)即可。


在这里插入图片描述

用法四:AutoResponder 替换响应数据

这个功能可以让 Fiddler 对某个 URL 的请求自动返回本地的数据,不需要真正请求服务器。适合前端在后端接口还没开发完时,用本地数据先联调。

操作步骤:

  1. 把想替换的接口的响应内容复制出来,粘贴到一个本地 json 文件里(比如 D:\mock\data.json),修改你想改的字段,保存。

  2. 在 Fiddler 右侧切换到 AutoResponder 标签页。

  3. 勾选"Enable rules"和"Unmatched requests passthrough"(后者让没有匹配规则的请求正常通过)。

  4. 点"Add Rule",上方输入要拦截的 URL(支持正则,URL 前加 regex: 即可),下方点箭头选"Find a file…",选择刚才保存的 json 文件。

  5. 点 Save 保存规则。

之后每次访问这个 URL,Fiddler 都会直接返回本地文件的内容,不去请求真实服务器。想恢复正常就取消勾选"Enable rules"。


用法五:模拟弱网

测试 App 在 2G/3G 慢速网络下的表现,可以用 Fiddler 的模拟限速功能:

Rules → Performances → Simulate Modem Speeds,勾选后网络会明显变慢。

如果需要自定义速度,在 Rules → Customize Rules 打开脚本文件,找到 if (m_SimulateModem) 这一段,里面有 oSession["response-trickle-delay"](控制下载延迟)和 oSession["request-trickle-delay"](控制上传延迟),单位是毫秒,可以改成你想要的数值,保存后立即生效。


Composer:手动构造和重发请求

右侧切换到 Composer 标签页,可以手动填写请求方法、URL、请求头、请求体,点 Execute 发送。

更常见的用法是:左侧选中一条已有的请求,直接拖到 Composer 里,它会自动填好所有内容,然后修改你想改的参数,点 Execute 重新发送。这在重放请求、测试接口时很常用,省去了手动填参数的麻烦。


与同类工具对比

对比项FiddlerCharlesWiresharktcpdumpmitmproxy
价格免费收费(约 $50)免费开源免费开源免费开源
操作系统Windows 为主Win/Mac/LinuxWin/Mac/LinuxLinux/MacWin/Mac/Linux
操作界面图形界面图形界面图形界面命令行命令行/Web UI
抓包协议HTTP/HTTPSHTTP/HTTPS全协议全协议HTTP/HTTPS
HTTPS 解密支持(安装证书)支持(安装证书)支持(需配置密钥)需额外处理支持
手机抓包支持,设代理支持,支持较好需额外配置不适合支持
断点修改数据支持支持不支持不支持支持
AutoResponder支持支持(Map Local)不支持不支持支持
脚本扩展JScript .NET无Lua无Python
学习难度低低中高高中
适合人群测试/开发 通用Mac 用户网络工程师运维/后端安全研究者

从日常使用角度:Fiddler 在 Windows 上是门槛最低、上手最快的 HTTP 抓包工具,功能覆盖了绝大多数测试场景;Charles 在 Mac 上更受欢迎,界面和操作逻辑和 Fiddler 类似,但要收费;Wireshark 适合需要深入分析 TCP 层或者非 HTTP 协议的场景;tcpdump 在无图形界面的 Linux 服务器上用;mitmproxy 更偏向安全测试方向。


常见问题处理

打开 Fiddler 后浏览器上不了网

原因是 Fiddler 改了系统代理,关掉 Fiddler 代理自动还原。如果关掉还是不行,手动去系统设置里把代理关掉:设置 → 网络和 Internet → 代理,确认"使用代理服务器"是关闭状态。

HTTPS 请求显示 CONNECT tunnel 但看不到内容

HTTPS 解密没开启。去 Tools → Options → HTTPS,确认勾选了"Decrypt HTTPS traffic",并且已经安装并信任了 Fiddler 根证书(Actions → Trust Root Certificate)。

手机设了代理但 Fiddler 抓不到包

检查几个地方:电脑防火墙有没有阻止 8888 端口(临时关掉防火墙试一下);手机和电脑是否真的在同一个网段(同一个 WiFi 路由器下);手机代理里填的 IP 是否是电脑的局域网 IP(不是 127.0.0.1)。

左侧请求太多,找不到目标请求

用 Filters 过滤只显示特定域名;或者在底部命令行输入 cls 清空当前会话列表,再操作 App,只看新产生的请求;也可以在菜单 Edit → Find Sessions(Ctrl+F)搜索 URL 关键词。


Fiddler 这个工具免费、轻量,安装完基本不需要配置就能用于最常见的 Web 抓包场景。对于做接口测试、前后端联调、或者想知道某个 App 在后台发了什么请求的人来说,值得装一个放在电脑上备用。手机抓包那块配置稍微麻烦一点,但按步骤来一般不会出问题,遇到证书问题多半是 iOS 的"证书信任设置"那一步没做。

更多推荐