
Fiddler 工具
bilibili视频教程链接:https://www.bilibili.com/video/BV1c4411c7zH
Fiddler
Fiddler是位于客户端和服务器端的HTTP代理
web调试的利器
监控浏览器所有的HTTP/HTTPS流量
查看、分析请求内容细节
伪造客户端请求和服务器响应
测试网站的性能
解密HTTPS的web会话
全局、局部断点功能
第三方插件
场景使用
接口调试、接口测试、线上环境调试、web性能分析
判断前后端bug、开发环境hosts配置、moc、弱网断网测试
Fiddler 作用
简单接口测试
发包
重放(重发)请求
抓包原理
B/S架构:客户端/服务器
通过 Intenet属性-局域网LAN 修改开启 系统代理 服务器进行监听抓取
修改端口:Tools -> Connections -> Fiddler listens on port
修改系统代理:修改开启系统代理:Tools -> Connections -> 勾选 Act as system proxy on startup
菜单栏

Rules 规则
| 名称 | 描述 |
|---|---|
| Hide CONNECTs | 是否隐藏建立通道的连接(建议开) |
| Hide 304s | (建议开) |
| Automatic Breakpoints | 自动断点 |
| Performance | 弱网测试 |
Customize Rules...:脚本的设置,自定义规则(可添加列)
IP列:添加至 static function Main 中
FiddlerObject.UI.lvSessions.AddBoundColumn("Server IP", 120, "X-HostIP");服务器web环境:添加至 static function Main 中
FiddlerObject.UI.lvSessions.AddBoundColumn("Server Env", 50, "@response.server");响应时间:添加至 class Handlers 中
//左侧信息会显示时间
public static BindUIColumn("TimeTaken/ms", 120)
function TimeTaken(oS: Session):String{
var sResult = "0";
//获得时间戳的ms值
var t1_ms = oS.Timers.ClientBeginResponse.ToUniversalTime().Millisecond;
//获得时间戳的minute值
var t1_m = oS.Timers.ClientBeginResponse.ToUniversalTime().Minute;
//获得时间戳的second值
var t1_s = oS.Timers.ClientBeginResponse.ToUniversalTime().Second;
var t1 = t1_m*60*1000 + t1_s*1000 + t1_ms ;
var t2_ms = oS.Timers.ClientDoneRequest.ToUniversalTime().Millisecond;
var t2_m = oS.Timers.ClientDoneRequest.ToUniversalTime().Minute;
var t2_s = oS.Timers.ClientDoneRequest.ToUniversalTime().Second;
var t2 = t2_m*60*1000 + t2_s*1000 + t2_ms ;
if(t1 >= t2){
var t3 = t1 - t2;
sResult = t3.toString();
}
return sResult;
}
Tools 工具
| 名称 | 描述 | 快捷键 |
|---|---|---|
| Config... | 选项 | |
| Clear WinINET Cache | 清除IE缓存 | Ctrl + Shift + X |
| Clear WinINET Cookies | 清除IE cookie | |
| TextWizard... | 编码解码 | Ctrl + E |
| Reset Script | 重置脚本配置 | |
| HOSTS | 快捷系统设置 |
工具条

Winconfig:系统配置
配置windows应用程序,是否要抓取对应应用程序包
添加备注
给请求条目添加备注信息,测试中可对接口出现的问题添加至对应条目中,方便清楚的描述对应接口
Replay:重放请求
通过Fiddler 重新发送请求
快捷键:
R键:可以重放一次请求
Shift:输入框输入重放次数可以多次重放请求(重放攻击,也可做压力测试)
delete:删除请求
shift + delete:选择要保留的请求,删除其他所有请求
清除
Remove all:清除所有
Images:清除图片
CONNECTs:清除请求的中间连接
Non-200s:清除 状态码非200 的请求
Non-Browser:清除非浏览器请求
Duplicate response bodies:清除重复响应
ctrl + x:清除所有请求
GO
用于断点,继续下一步
状态栏: 
点击一次:请求前断点
Stream:
流模式,流数据
Decode
解码
Keep:All sessions
保持 会话 数量(会话是占用内存的)
Any Process
选择要监听的应用程序,对其进行抓包请求
Find
查找:Ctrl + F
Save
保存导出会话为 .saz 文件
截图
计时
Browse
快捷打开浏览器
Clear Cache
清除 IE 缓存
TextWizard
文本 编码\解码 工具 快捷键:ctrl + E
Tearoff
分离面板
MSDN Search
微软开发者网站的搜索
Online
本机的在线信息(包含本机IP地址)
面板
| 名称 | 界面 | 介绍 |
|---|---|---|
| Session面板 |
| Fiddler 抓取的每条HTTP请求(每一条称为一个session)主要包含请求的ID编号、Result(状态码)、Protocol(协议)、Host(主机名)、URL(统一资源定位符路径)、Body(请求发送内容大小)、Caching(是否有缓存)、Content-Type(内容类型)、Process(进程信息)、Comments(自定义备注等信息)、Custom(自定义添加列) |
| 命令行 状态栏 |
| Capturing:正在处于代理功能(可快捷设置系统代理) All Processes:只显示...进程 状态栏: 点击一次:请求前断点 点两次:响应后断点(响应停留在Fiddler,下一步后才返回响应到客户端) |
辅助标签 工具 |
| Statistics(统计)Inspectors:检查器 |
辅助标签、工具
Statistics(统计)
HTTP 请求的性能和其他数据分析,如DNS解析的时间,简历TCP/IP连接的时间消耗等信息
Inspectors(检查器)
检查请求
1. 请求报文

2. 响应报文

AutoResponder(重要)
可用于拦截某一请求,进行如下操作
重定向到本地的资源
使用Fiddler的内置响应
自定义响应

应用场景:模拟请求、修改响应内容做极端测试
Composer(设计请求)
可发包、做接口测试

FidderScript
增加Session面板列的调整和增加
Filters(过滤器)
多维度过滤器,过滤请求,勾选 Use Filters 开启过滤器

Hosts
Show only Intranet Hosts:只展示局域网的请求
Show only Internet Hosts:展示广域网的请求
Hide the following Hosts:隐藏指定主机
Show only the following Hosts:只展示指定主机
Flag the following Hosts:标记指定的主机
Client process
Show only traffic from:只抓取某个进程的包
Show only Internet Explorer traffic:只抓取IE浏览器的包
Hide traffic from Service Host:隐藏来自某个服务主机的包
Request Headers
Show only if URLcontains:只展示URL包含了的 指定的内容
Hide if URl contains:隐藏URL包含了的 指定内容
Flag requests with headers:标记请求头包含了的 指定内容
Delete request headers:删除请求中指定的请求头内容
Set request header:设置每个请求自动添加指定的请求头内容
Breakpoints(设置断点)
Break request on POST:中断 POST 的请求
Break request on GET with query string:中断 查询GET 的请求
Break on XMLHttpRequest:中断 异步ajax 的请求
Break response on Content-Type:中断 内容类型为指定的内容类型 的请求
Response status Code
Hide success (2xx):隐藏 200
Hide non-2xx:隐藏非 200
Hide Authentication demands(401,407):隐藏 401、407
Hide redirects(300,301,303,307):隐藏重定向 300,301、303、307
Hide Not Modefied(304):隐藏缓存 304
Response Type and Size
Show all Content-Types:展示所有内容类型
Show only HTML:只展示响应内容类型为 HTML
Show only IMAGE/*:只展示响应内容类型为 IMAGE
Show only TEXT/CSS:只展示响应内容类型为 TEXT/CSS
Show only SCRIPTS:只展示响应内容类型为 SCRIPTS
Show only XML:只展示响应内容类型为 XML
Show only JSON:只展示响应内容类型为 JSON
Hide IMAGE/*:隐藏内容类型为 IMAGE
Time HeatMap:根据时间的不同设置session背景色
Block scriptfiles:隐藏 响应类型为 scriptfiles
Block image files:隐藏 响应类型为 image文件
Block SWF files:隐藏响应类型为 SWF文件
Block CSS files:隐藏响应类型 CSS文件
Hide smaller than:响应内容小于 多少时隐藏
Hide larger than:响应大于 多少时隐藏
Response Headers
Flag responses that setcookies:标记设置了cookie的响应
Flag responses with headers:标记响应包含某个header
Delete responseheaders:删除响应头(发给客户端之前删掉)
Set response header:设置每个请求自动添加响应头
断点
全局断点快捷设置
| Rules --> Automatic Breakpoints | 描述 |
|---|---|
| Before Requests | 请求前断点(F11) |
| After Responses | 响应后断点(Alt + F11) |
| Disabled | 断点失效(Shift + F11) |
| 点击一次:请求前断点 点击两次:响应后断点 点击三次:失效 |
请求前断点:从客户端发送请求到Fidder后被中断还未发送到服务器
响应后断点(模拟网络中断):从服务器返回响应到Fidder后被中断还未发送到客户端
局部断点
| 命令行 | 描述 | 命令 |
|---|---|---|
| bpu(匹配内容字符串或URL) | bpu请求前断点 | bpu login |
| bpu login 后 再次输入 bpu | 取消请求前断点 | bpu loginbpu |
| bpafter | 响应后断点 | bpafter login |
| bpafter 后 再次输入 bpafter | 取消响应后断点 | bpafter loginbpafter |
弱网测试
Rules --> Performance --> Simulate Modem Speeds:模拟网络限速
修改了 Customize Rules... 脚本配置
m_SimulateModem = True; // 修改为True
if (m_SimulateModem) {
// Delay sends by 300ms per KB uploaded.
oSession["request-trickle-delay"] = "300"; // 请求前 延迟 300毫秒1KB
// Delay receives by 150ms per KB downloaded.
oSession["response-trickle-delay"] = "150"; // 响应后 延迟 150毫秒1KB
}Tools --> Reset Script:重置脚本配置
HTTPS抓包
Tools > Fiddler Options > HTTPS:勾选 Decrypt HTTPS Traffic | Ignore server certificate errors(unsafe)
Google、IE 抓HTTPS包
配置安装证书,一路点击 确定、是、ok、yes

管理计算机证书:Open Windows Certificate Manager
查找搜索关键字 Fiddler 是否安装 DO_NOT_T...
Firefox HTTPS 抓包
菜单 > 选项 > 高级 > 网络 > 设置
选择使用系统代理
手动设置代理(注意需配置正确)
Firefox 需单独安装证书
Tools > Options > HTTPS > Actions > Export Root Certificate to Desktop 导出证书
菜单 > 选项 > 高级 > 证书 > 查看证书 > 导入 上一步导出的 Fiddler 证书 > 信任证书(勾选三项)> OK
APP 抓包
对 IOS APP 抓包
HTTP 抓包
主机:电脑IP地址
端口:默认8888
Tools > Options > Connections > 勾选 Allow remote computers to connect:允许远程主机连接
重启 Fiddler
确保防火墙运行 Fiddler 进程可以远程连接
IOS 设备连接WIFI 与 电脑 IP 是在同一网段下
确保iso设备可以访问 电脑IP:8888
设置 > 本机和手机需在同一网络 > WIFI > 打开手机连接的 WIFI 网络详情 > 设置代理
HTTPS 抓包
继HTTP 抓包步骤后
打开手机浏览器 > 地址栏输入 电脑IP地址:8888 > 点击 FiddlerRoot certificate 下载证书(安装证书也不一定能抓到所有包,原因系统或者APP防抓包)
手机打开安装证书(不知道在哪设置上百度搜索:你的手机怎么安装证书) > 选择安装下载 的 Fiddler 根证书
手机设置 > 证书信任设置 > 信任安装的证书
对 Android APP 抓包
设置 > 本机和手机需在同一网络 > WIFI > 打开手机连接的 WIFI 网络详情 > 设置代理
主机:电脑IP地址
端口:默认8888
Tools > Options > Connections > 勾选 Allow remote computers to connect:允许远程主机连接
无法抓包可能证书有问题
打开手机浏览器 > 地址栏输入 电脑IP地址:8888 > 点击 FiddlerRoot certificate 下载证书(安装证书也不一定能抓到所有包,原因系统或者APP防抓包)
手机打开安装证书(不知道在哪设置上百度搜索:你的手机怎么安装证书) > 选择安装下载 的 Fiddler 根证书
安装 Fiddler 插件
Fiddler 插件下载中心:https://www.telerik.com/fiddler/add-ons








