1、Fiddler简介
Fiddler是位于客户端和服务器端的HTTP代理
功能非常强大,是web调试的利器
- 监控浏览器所有的HTTP/HTTPS流量
- 查看分析请求内容细节
- 伪造客户端请求和服务器响应
- 测试网站性能
- 解密HTTPS的web会话
- 全局、局部断点功能
- 第三方插件
使用场景 - 接口调试、接口测试、线上环境调试、web性能分析
- 判断前后端bug、开发环境hosts配置、mock、弱网/断网测试
2、Fiddler工作原理
浏览器默认读的就是系统代理(火狐浏览器需要设置代理);而fiddler一打开就会作为系统代理。
3、安装
下载网址:https://www.telerik.com/fiddler
4、Fiddler设置请求代理:
4.1Http代理请求
- 启动代理:点击窗口左下角,显示“Capuring”则说明当前处于代理状态
- 通过浏览器访问相关网页或执行页面操作(如,登录、搜索)
- 通过Fiddeler查看代理的HTTP请求进行分析
4.2 HTTPS代理请求
- 打开菜单栏:Tools->Fiddles Options打开fiddler配置
- 打开https配置项,勾选“Capture Https Connects”和“Decrypt HTTPS traffic”,然后点击OK
- 勾选后会有对话框提示,要求进行windos配置,点击YES/OK即可——安全认证证书的
如果设置后仍然不能抓取HTTPS,则进行以下操作:
- 点击Actions——Reset All Certificates(重置证书)——重置证书后,它会自动再次安装证书,您只需要根据提示确认即可。
- 重置证书后你可以通过Actions——Open windows Certificates Manager,——操作——查找证书——输入fiddler查找,如果有,则代表证书已正确安装
- 如果已有证书,你可以进一步点击Actions——Trust Root Certificate
- 完成以上步骤后,重启浏览器及fiddler
说明:
fiddler可以通过重复双方标记安全认证的方式跟踪和解释HTTPS协议的会话过程,
Capture HTTPS CONNECTs : 抓取HTTPS连接
Decrypt HTTPS traffic: 获取相应的数据连接
4.3 Firefox的Https代理设置
Firefox默认情况是不适用代理,因此需要手动设置,
点击左边的设置——选项——常规设置——网络设置——选择使用系统代理设置或手动代理配置
向Firefox导入Fiddler证书
在fiddler中Tools->Fiddles Options——Https——Actions——Export Root Certificate to Desktop
在火狐浏览器上点击左边的设置——选项——隐私与安全——证书——查看证书——导入——选择刚刚导出到桌面上的fiddler证书——导入后重启浏览器
4.4 fiddler系统代理设置
Tools——options——Connections
fiddler listens on port: 监听端口号,默认是8888,——可以修改端口号(1024-65536)
Act as system proxy on startup: 当启动时作为系统代理
Monitor all connections: 监听所有连接
你可以查看浏览器设置——找到代理设置——可以看到代理服务器被勾选,——进一步查看详细信息,代理地址为127.0.0.1,端口号为8888。当关闭Fiddler后,再次查看浏览器的代理设置,发现代理服务没有被勾选
补充:基本设置中相关参数说明
基本配置中选项解释:
第一项:程序启动时通知相应更新
第二项:支持测试版本的升级(你是否同意有测试版本发布时进行升级)
第三项:支持IPV6(必须系统支持)
第四项:参加Fiddler改进计划;
第五项:是否启用高分辨率的计时器
第六项:自动追踪音频和视频流
第七项:如果检测到违反了协议:什么都不做,当严重错误时发出警告,所有错误都警告
第八项:系统快捷键
5、Fiddler界面
5.1 快捷键
删除会话:
- 选中需要删除的会话,点击Delete键,
- 如果多会话删除,选中要保留的会话,按shift+Delete
- 删除所有会话:ctrl+X
去缓存刷新: shift+F5,在浏览器内操作
5.2 菜单栏
1、File
- Capture:开始/停止抓包
- NewViewer:开启一个新的视图;
- Load Achive: 导入保存好的Fiddler文档(配置文档)
- Save:保存会话
- Import Session: 导入会话
- Export Session: 导出会话
2、Edit
- Copy:复制
- Remove:移除
- Select All
- Undelete:撤销删除
- Paste as Session:粘贴会话
3、Rules
- Hide Image Requests 隐藏图片请求
- Hide Connects 隐藏建立通道的连接
- Automatic Breakpoint: 自动设置断点
- Customize Rules:用户自定义规则,通过脚本设置,
- Require Proxy Authentication
- Apply GZIP Encoding
- Remove All Encodings
- Hide 304s: 隐藏304状态
- Request Japanese Content
- Automatically Authenticate
- User-Agents
- Performance :性能
4、Tools
Options:Fiddler设置
WinINET Options:IE设置
Clear WinInet Cache:清除IE缓存
Clear WinINET Cookies:清除IE的Cookies
TextWizard:解码工具
Compare Sessions:对比会话
Reset Script: 重置脚本
Sandbox
Wiew Ie Cache
Win8 Loopback Exemptions
New Session Clipboard
Hosts:
5.3 工具条
- winConfig:windows配置设置
- 添加备注——便于别人查看和理解
- Replay:重新发送请求,选中一个请求,点击此键即可再次发送(快捷键"R"),多次重复shift+R,然后输入重复的次数(多次重复是串行的,不像Jmeter并发)
- 删除:Completely &Unmarked是移除完成的且没有标记的,Duplicate response bodies删除多次重复的响应体
- GO: 在断点出继续执行
- Stream: 流模式(服务器返回内容立即返回客户端),Fiddler默认是缓冲模式(当服务器将所有的数据返回后,Fiddler接收完成后,一次性转给客户端)一般使用默认缓存模式
- Decode: 解码,对所有请求返回的代码进行解码,图片显示位置是对某一个具体请求响应的解码
- Keep All session:保持所有会话的数量,
- Any Process :需要要监听的程序,操作方式:点击前面图标并拖动到响应的程序,再次点击消失
- Find: 查找 Ctrl+F
- Save: 保存所有的请求会话,
- 截图
- 一个简单的计时器,发送请求点击此工具,开始计时,请求完成后点击完成计时
- Browse,快速打开浏览器
- Clear Cache:清除缓存,
- TextWizard:文本的编码解码工具
- Tearoff: 分离面板
- MSDN Search:微软开发者搜索功能
- Online: 本机的一些网路信息
5.4 会话列表
-
Fiddler 抓取到每条的http请求(每一条成为一个session)
-
主要包括请求的ID标号,状态码,协议,主机名,URL内容类型,body大小,进程信息,自定义备注等信息
-可以添加用户自定义的列。方法:在会话列表头上右击——选择Customize Columns
-
排序:点击表头可以排序
5.5 在会话列表中添加IP地址列显示
在测试过程中,我们经常需要通过host在不同环境之间切换,如果知道自己的环境是否切换成功,那么通过IP地址就很容判断
设置方法打开Fiddler 菜单栏:Rules——Customize Rules…
通过快捷键Ctrl+F,搜索static function Main()函数,在函数中添加一行代码,
FiddlerObject.UI.lvSessions.AddBoundColumn("ServerIp",120,"X-HostIP")
其中“ServerIP”是提示语
120是所占宽度;
“X-HostIP”是你要连接的主机名称
5.6 QuickExec命令行及状态栏
- 命令行
常见的命令有:
- help打开官方的使用页面介绍,所有的命令都会列出来
- cls清屏(ctrl+x也可以清屏)
- select选择会话的命令
- ?.png 用来选择png后缀的图片
- bpu 截获request
状态栏
- Capturing:正在抓包,如果没有,则表明停止抓包
- All Process,webBrowsers、Non-Browser、Hide All——快速这是监控的进程
- 空白处:设置全局断点,点击1下设置Request前断点,点击2下设置Response后断点,点击三下取消断点
- xx/xx: 当前选中多少会话,总共有多少会话
- 最后一项是:当选择一个会话框后,展示会话的附加信息,如设置断点后会显示断点
6、辅助标签和工具
6.1 Statistics(统计视图)——web性能或调试用
Http请求的性能和其它数据分析,如DNS解析时间,建立TCP/IP连接时间消耗等信息
可以在左边选择多个会话框。显示你选择会话框中所有请求的响应
6.2 Inspectors(检查器)
双击一个请求就会跳转到此界面——检查一个请求,
可以多种方式查看请求的请求报文和响应报文的相关信息,上面部分是请求报文,下面部分是响应报文
请求报文
- Headers:只包含header内容
- TextView:展示文本内容
- SyntaxView,语法格式,JavaScript
- WebForms:表单提交的方式
- HexView:16进制
- Auth:权限相关
- Cookies
- Raw:原生格式
- Json
- XML
响应报文
- Transformer:
- Headers:
- TextView:展示文本内容
- SyntaxView,语法格式,JavaScript
- ImageView: 图片
- HexView
- WebView:网页
- Auth
- Caching :缓存
- Cookies
- Raw
- Json
- XML
6.3 自动相应器(AutoResponder)
可用于拦截某一请求,可以进行如下操作:
- 重定向到本地的资源
- 是用Fiddler的内置响应
- 自定义响应
例如正式环境下出现了一个问题,你无法在正式环境下进行调试(否则会影响到用户的使用),则可以使用自动相应器将请求拦截下来,重定向到本地或指定响应
Enable rules:启用规
Unmatched requests passthrogh: 通过没有匹配的请求
Add Rule:添加规则
Import:导入规则
Group:分组规则
Rule Editor:规则编辑器: - 第一项:是需要拦截的请求
- 第二项:对拦截请求做出的响应,Fiddler中有一些内置的响应(如,200,404等)。 除了内置响应还可以通过find a file(找到一个文件作为响应)或Create new response
- 除了上面的编辑方法外,也可以直接选中需要拦截的请求,拖动到AutoResponder中,然后编辑相应的响应内容
- 如果研发人员还没开发完相应的接口,我们也可以通过Fiddler模拟接口相应,例如登录的接口还没开发完成,在点击登录后的相应我们可以编辑相应的响应,设置第一项的请求内容,右击请求,选择Edit Response
6.4 Composer(设计器——请求报文)
- 是一个简单的接口测试工具或者说是发包工具,像Auto Response一样可以直接编辑请求,也可以直接将请求拖放到Composer中。拖放后自动生成请求方式,请求URL,请求头和请求体
- 也可以进行请求重放
选择响应的请求(一条或多条都可以)拖放到Scratchpad中,对后一个报文连击3下后会高亮显示,然后点击Execute执行
7、fiddler过滤会话
如果不设置过滤效果,那么凡是经过浏览器的请求都会被拦截并记录,给使用和分析造成比较多的不方便。因此一般都会使用过程中,设置数据过滤效果。默认情况下过滤功能是关闭的
7.1 过滤功能开启
7.2 设置Action
- Run Filterset now 是否立即运行
- Load Filterset 加载,之前的设置内容
- Save Filterset 保存过滤设置
7.3 Hosts过滤
zone:指定显示内网(Intranet)或互联网(Interneet)的内容
host:
- No Host Filter 无Host过滤
- Hide the following Hosts: 隐藏下面的主机,
- Show only the following Hosts:只显示如下Hosts
- Flag the Following Hosts:加粗显示如下Host
注意:
输入多个HOST,多个之前用半角逗号或者回车分隔;
支持通配符:%,*,等
也可以右击请求——copy——This Column——粘贴到主机区域
7.4 Client Process过滤规则:
- Show only traffic from :可以指定捕获哪个Windows进程中的请求;
- Show only Internet Explorer Traffic: 只显示IE发出的请求
- Hide Windows RSS platform traffic: 隐藏Windows Rss平台发出的额请求
7.5 Request Header过滤规则
- Show only if URL contains: 只显示URL中包含特定内容的,例如:只显示带有登录的
- Flag Requests with headers: 标记带有特定header的请求
- Delete requests headers:删除请求header
- Set request header: 设置请求的header
7.6 断点设置(Breakpoints)
设置断点后,在符合条件时,就会停止运行,不再发送响应请求
- Break request on HTTP POST: 给所有POST请求设置断点;
- Break request on HTTP GET with QueryString: 给所有带参数的GET请求设置断点;
- Break on XML HTTPRequest :给ajax请求设置断点
- Break response on Content-Type: 给特定的Content-type(响应类型)设定断点。
运行到断点后需要继续运行,选中断点,并点击工具栏中的“Go”即可
7.7 响应状态码过滤规则(Response Status Code)
- Hide success(2xx) 隐藏成功的session;
- Hide non-2xx: 隐藏非2开头的状态码;
- Hide Authentication demands:隐藏未经授权被拒的session
- Hide redirects: 隐藏重定向
- Hide Not Modified(304) 隐藏无变更的session
7.8 响应类型和大小的过滤规则:
- Show all Content-Type:显示所有响应类型;
- Hide smaller than ?KB:隐藏小于指定大小的session;
- Hide larger than ? Kb: 隐藏大于指定大小的session;
- Time HeatMap:获得即使数据;
- Block script files:阻止脚本文件,显示为404
- Block imagefiles:阻止图片文件;
- Block SWF files:阻止SWF文件;
- Block CSSfiles:阻止CSS文件;
7.9 响应头过滤(Response Headers)
- Flag response that set cookies : 标记会设置cookie的响应;
- Flag response with headers: 标记带有特定header的响应;
- delete response headers:删除响应header;
- Set response header: 设置响应的header;
8、设置断点修改Reques
8.1 断点介绍
- Fiddler最强大的功能莫过于设置断点,可以修改HTTPRequest的任何信息,包括:host,cookie或者表单中的数据
- 断点有根据作用域范围分全局断点和局部断点
- 断点根据断点的时间点分:请求前断点(Before Request)和After Response(响应后断点)
8.2 请求前断点
方法1:打开Fiddler 点击Rules——Automatic Break——Before Requests/After Response(这种命令发给发会中断所有的会话)
方法2:点击状态栏如下图所示位置,点击第1下是Before Request断点,点击第2下是After Response断点,点击第三下是取消断点
方法3:再命令行中输入命令:bpu www.baidu.com(这种方法只会中断wwwbaidu.com),如果只输入bpu 则是取消断点(bpu 后面可以是全路径,也可以断点请求中包含的特定字符,例如:bpu baidu),注意命令后要有空格
方法1和方法2设置的是全局断点,方法3是局部断点
8.3 修改Request
设置断点后,选中断点,选择右边Inspectors,然后选择webForms(也可以双击断点),找到对应的值进行修改。修改完成后点击“Go”继续执行,也可以点击Run to completion继续执行
8.4 响应后断点
- 设置断点方法:
方法1:打开Fiddler 点击Rules——Automatic Break——After Response(这种命令发给发会中断所有的会话)
方法2:点击状态栏如下图所示位置,点击第1下是Before Request断点,点击第2下是After Response断点,点击第三下是取消断点
方法3:再命令行中输入命令:bpafter www.baidu.com(这种方法只会中断wwwbaidu.com),如果仅输入bpafter则是取消断点
方法
方法1和方法2设置的是全局断点,方法3是局部断点
8.5 修改Response
设置断点后,选中断点,选择右边Inspectors,然后选择webForms(也可以双击断点),找到对应的值进行修改。修改完成后点击“Go”继续执行,也可以点击Run to completion继续执行
After Response 实际也是网络中断的模拟
10 、弱网测试
Rules——performance——Simulate Modem Speeds(模仿调制解调器速度)
10.2 精准设置网速
Rules——customize——ctrl+f——搜索m_SimulateModem
设置完脚本后,保存脚本并重新启动Fiddler,并确认Simulate Modem Speeds已经勾选
11、Fiddler手机抓包(Android)
11.1 Fiddler设置
- Tools——Fiddler options——connections
- 勾选Allow Remote Computers to connect
-
- 同时确保Tools——Fiddler options——HTTPS中Capture HTTPS CONNECTS和Decrypt HTTPS traffic被勾选
- 同时确保Tools——Fiddler options——HTTPS中Capture HTTPS CONNECTS和Decrypt HTTPS traffic被勾选
- 重启Fiddler
- 确保防火墙允许Fiddler进程可以远程连接(关闭防火墙)
-设备连接wifi——与PC同一个wifi下 - 确保ISO设备可以访问http://fiddlerMachineIP:8888该地址返回Fiddler Echo Service页面
11.2 手机端设置
- 设置——WLAN——连接上的WLAN设置
- 点击代理——手动,设置主机名为Fiddler所在的主机IP,端口为Fiddler监听端口
- 打开Android设备浏览器,输入http://Fiddler所在主机IP:Fiddler监听端口/
- 点击页面底部FiddlerRoot certificate下载证书
- 打开设置——更多设置——系统安全——加密与凭据——从储存设备安装
- 选择下载好的FiddlerRoot.cer进行安装
- 浏览器打开https://www.baidu.com已经可以抓包HTTPS包了
- 注意:测试完毕,记得关闭代理,否则手机无法上网
在Fiddler的Online标签下可以查看Fiddler网路信息,包括IP地址及端口号
手机端安装Fiddler证书:打开手机浏览器,输入Fiddler的网路信息(IP地址及端口号)
报错处理
12、Fiddler手机抓包(ISO)
12.1 Fiddler设置
- Tools——Fiddler options——connections
- 勾选Allow Remote Computers to connect
- 同时确保Tools——Fiddler options——HTTPS中Capture HTTPS CONNECTS和Decrypt HTTPS traffic被勾选
- 重启Fiddler
- 确保防火墙允许Fiddler进程远程连接
-设备连接wifi——与PC同一个wifi下 - 确保ISO设备可以访问http://fiddlerMachineIP:8888该地址返回Fiddler Echo Service页面
12.2 手机端设置
- 设置——无线局域网设置——点击已经连接上的wifi
- HTTP代理——手动,设置主机名为Fiddler所在的主机IP,端口为Fiddler监听端口
- 打开Android设备浏览器,输入http://Fiddler所在主机IP:Fiddler监听端口/——储存
- 点击页面底部FiddlerRoot certificate下载证书
- 下载完成后,会自动提示您安装,按照提示安装
- 安装成功后进入设置——通用——关于手机——证书信任设置中,信任刚安装的Fiddler证书
- 浏览器打开https://www.baidu.com已经可以抓包HTTPS包了
- 注意:测试完毕,记得关闭代理,否则手机无法上网
在Fiddler的Online标签下可以查看Fiddler网路信息,包括IP地址及端口号
手机端安装Fiddler证书:打开手机浏览器,输入Fiddler的网路信息(IP地址及端口号)
13、Fiddler插件安装
13.1 Willow
Fiddler插件中心网址:https://www.telerik.com/fiddler/add-ons
willow主要是通过工程管理的思想,实现多环境创建及切换。通过创建工程,在工程中设置不同的规则。
13.2Fiddler中会话比较功能
选中2个会话,右击然后选择Compare,就可以用Windiff来比较两个会话的不同了(需要实现安装winDiff),响应数值越大,响应越慢,反之,响应数值越小对网路速度影响越小
14 Fiddler小的操作技巧
保存请求:
其他参考文献:
Fiddler抓包使用教程https://blog.csdn.net/yue549433330/article/details/82745760