文章目录
- 前言
- 一、简介
- 二、下载安装
- 三、界面简介
- 1. 菜单栏
- 2. 工具栏
- 3. 会话面板
- 4. 辅助标签+工具
- 5. 命令行
- 6. 状态栏
- 四、常用功能
- 1. 抓取指定 IP 地址的包
- 2. 抓取 HTTPS 协议的包
- 3. 手机 APP 抓包
- 4. 发送序列化请求
- 5. 发送上传文件请求
- 五、常见问题
前言
Fiddler
是最常用的 Web
调试工具之一。对于开发来说,前端可以通过 Fiddler
代理来调试 JS、CSS、HTML
样式。后端可以通过 Fiddler
查看请求和相应,定位问题。对于测试来说,可以通过抓包
方式修改前端请求参数和模拟后端返回,快速定位缺陷。总之,不管是开发还是测试,Fiddler
都是一款工作中不可或缺的辅助利器。
一、简介
官网:https://www.telerik.com/fiddler
Fiddler
是一个 HTTP
协议调试代理工具,是由 C#
写出来的,它包含一个简单却功能强大的基于 JScript.NET
事件脚本子系统,灵活性极高,并且能够使用 .net
框架语言进行扩展,可以记录并检查所有客户端和服务器之间的 HTTP
和 HTTPS
请求,允许你监视、设置断点、甚至是修改输入输出数据,也可以进行请求构造、设置网络丢包和延迟进行 APP
弱网测试等。
原理图解:
Fiddler
的原理是以 Web
代理服务器的形式进行工作的,代理(Proxy
)就是在客户端和服务器之间设置一道关卡,对 Web
客户端来说,Fiddler
(代理)扮演的是服务器的角色,接受请求报文,返回相应报文;对于 Web
服务器来说,代理扮演的是客户端的角色,发送 Web
请求报文,接受 Web
相应报文。
二、下载安装
下载:
从官网进去,选择 FIDDLER TOOLS
> Fiddler Classic
进入到以下页面,点击 Try For Free
进入到以下页面,它会问你用 Fiddler
做什么?你选择一下,然后再填写你的邮箱,选上 Country
,勾选上 I agree
以及 I accept
,再点击 Download For Windows
之后就会自动开始下载
这个下载挺慢的,所以我也提供了我的百度网盘该软件的下载链接
------------------------------百度网盘------------------------------------
链接:百度网盘
提取码:dez6
-------------------------------------------------------------------------
下载完成
安装:
双击运行下载文件,点击 I agree
可以自己修改存放路径,然后点击 Install
等待安装完成即可
双击 Fiddler.exe
运行即可
会出现一个弹框
Windows uses an isolation technology called ‘AppContainer’ that may interfere with traffic capture from Immersive Applications and the Edge browser. Use the WinConfig button in Progress Telerik Fiddler’s toolbar to enable teaffic capture.
Would you like to learn more?
To disable this warning. click ‘Cancel’.
直接点击 Cancel
就可以了
三、界面简介
打开 Fiddler
,界面如下,可分为六个部分:
- 菜单栏
- 工具栏
- 会话面板
- 辅助标签+工具
- 命令行
- 状态栏
1. 菜单栏
- File 菜单
- Edit 菜单
- Rules 菜单
- Tools 菜单
- View 菜单
- Help 菜单
- Capture Traffic(或 F12):是个开关,可以控制是否把
Fiddler
注册为系统代理。当把Fiddler
注册为系统代理时,所有依赖于WinINET
代理的应用(如IE
浏览器和其他浏览器)会把Web
请求发送给Fiddler
- New Viewer:是用来打开一个新的
fiddler
窗口 - Load Archive:用于重新加载之前保存的
fildder
文档 - Save:保存
session
会话 - Import Sessions…:导入
session
会话 - Export Sessions:导出
session
会话 - Exit:退出
- Copy:下面的几个子菜单分别支持复制选中
Session
的某些信息 - Remove:下面的子菜单分别支持从
Web Session
列表中删除全部、选择或未选中的Session
- Select All(或 Ctrl + A):命令选择
Sessions
列表的所有内容 - Paste as Session:命令会基于剪贴板上的内容,生成一个或多个模拟的
Web Session
- Find Session…(或 Ctrl + F):命令会打开
Find Session
窗口,搜索捕获到的数据流
- Hide Image Request:触发器控制是否在
Web Session
列表中显示图像类Session
- Hide CONNECTS:触发器控制是否在
Web Session
列表中显示使用CONNECT
请求方法的Session
- Automatic Breakpoints:子菜单控制
Fiddler
是否会自动在Before Requests
或After Responses
处设置断点。Ignore Image
触发器控制这些断点是否作用于图片请求 - Customize Rules…(或 Ctrl + R):菜单命令会使用配置的脚本编辑器打开当前的
FiddlerScript
文件 - Require Proxy Authentication:如果选中
Require Proxy Authentication
菜单项,所有未提交Proxy-Authorization
请求头的请求会返回HTTP/407
响应,要求客户端安装证书,该规则可以用于测试HTTP
客户端,确保这些规则在有证书的客户端服务器上可以正常工作 - Apply GZIP Encoding:如果选中
Apply GZIP Encoding
菜单项,只要请求包含具有gzip
标识的Accept-Encoding
请求头,就会对除了图片以外的所有响应使用GZIP HTTP
进行压缩。该规则用于测试使用GZIP
选项支持的客户端是否真正对内容进行压缩。该选项还支持性能调优,并且计算传输的压缩后的数据流的字节数 - Remove All Encoding:如果选中
Remove All Encoding
,会删除所有请求和响应的HTTP
内容编码和传输编码 - Hide 304s:选项会隐藏包含
HTTP/304 Not Modified
状态的响应的所有Session
- Request Japanese Content:选项会把所有请求的
Accept-Encoding
请求头设置或替换为ja
标识,表示客户端希望响应以日语形式发送 - User-Agents:子菜单支持把所有请求的
User-Agent
请求头设置或替换成指定值 - performance:子菜单提供影响
Web
性能的简单选项
- Options…:打开
Fiddler Options
窗口,针对fiddler
的设置 - WinINET Options…:打开
IE的Internet Options
窗口,windows
的ie
设置 - Clear WinINET Cache(或 Ctrl + Shift + X):选项会清空
IE
和其他应用中所使用的WinINET
缓存中的所有文件 - Clear WinINET Cookies:选项会清空
IE
和其他应用中所发送的WinINET Cookie.Session
的Cookies
还是保持不变 - TextWizard…(或 Ctrl + E):对文本进行编码和解码的工具
- Compare Session(或 Ctrl + W):选项只有当选中
Web Session
列表中的两个Session
时才有效。 - Reset Script:重置脚本
- Sandbox:打开 http://webdbg.com/sandbox/
- View IE Cache:打开
IE
缓存窗口 - Win8 Loopback Exemptions:
windows
使用了一种叫做“AppContainer”
的隔离技术,使得一些流量无法正常捕获,在fiddler
中点击Win8 Loopback Exemptions
按钮可以解除这个诅咒,这个与工具栏中的WinConfig
功能是一致的 - New Session Clipboard…:打开一个
Session
的剪贴板 - HOSTS…:选项会打开
Fiddler
的Host Remapping
工具
- Show Toolbar:控制
Fiddler
工具栏是否可见,默认是勾选的 - Default Layout:默认
layout
,session
在左,请求和响应在右边的上下处(界面布局) - Stacked Layout:
session
在上,请求在下方(界面布局) - Wide Layout:
session
在上,请求和响应在下方的左右处(界面布局) - Tabs:打开标签页面,其中有三个标签可以打开,分别是
- Preferences:
fiddler
偏好属性 - AutoSave:
fiddler
自动保存的设置 - APITest:
api
的测试
- Preferences:
- Statistics(或 F7):查看一个请求的统计数据
- Inspectors(或 F8):嗅探,用来查看会话的内容,上面是请求,下面是响应
- Composer(或 F9):设计构造在
Composer
中进行请求的修改,可以把session
框中的数据先清除,然后点击Composer
中的Excute
按钮来发送请求,请求出现在session
框中 - Minimize to Tray(或 Ctrl + M):可以最小化
Fiddler
到系统托盘中 - Stay On Top:保持置顶
- Squish Session List(或 F6):控制
Web Session
列表是否水平收缩 - AutoScroll Session list:自动滚动会话列表,默认是勾选此项的,勾选此项后,
session
框中的每出现新的session
,session
框中就会不断向下滚动,若不勾选此项,就很方便具体某一个session
的定位,即使出现了新的session
也不会自动向下滚动 - Refresh(或 F5):刷新功能
- Welcome Screen:回到主页面
- Help:进入
fiddler
的帮助的网页中 - Get Fiddler Book…:
fiddler book
的网页 - Discussions:
fiddler
的讨论网页,这个需要魔法上网 - HTTP References:进入
http
参考文献相关网站 - Troubleshoot…:会捕获所有请求,对于哪些被过滤的请求用删除线表示出来并给出原因,使用时候会打开一个网页
- Get Priority Support…:购买最新支持
- Check for Updates…:检查软件更新情况
- Send Feedback…:意见反馈
- About:关于当前
fiddler
的相关信息
2. 工具栏
-
:
windows
使用了一种叫做“AppContainer”
的隔离技术,使得一些流量无法正常捕获,在fiddler
中点击WinConfig
按钮可以解除这个隔离,这个与菜单栏Tools
→Win8 Loopback Exemptions
功能是一致的。—>查看详情 -
:给
session list
中的会话添加备注。选中一条回话,再点击该按钮可直接添加备注内容,添加成功后将会在Comments
栏下查看到该备注。—>查看详情 -
:数据重放(快捷键
R
),当我们需要再一次对某个请求进行发送的时候,Fiddler
提供了回放的功能可以再一次发送请求。—>查看详情 -
:清空监控面板(快捷键
Ctrl + X
);可以清除面板上全部或某些请求。—>查看详情 -
:是调试
debug
按钮,让请求断点继续往下走。结合状态栏使用。在状态栏第三格点(底部状态栏)一下,箭头朝上打叉,表示请求在发送的阶段有一个断点,再按下向下的是请求回来的时候产生一个断点,比如朝上的,用replay
功能重播,但是请求没有发出去,想让断点继续走,按一下go
就可以了,类似调试代码中的debug
功能通过结合状态栏中的按钮,可以调试时请求的状态进行拦截,上图状态栏处的箭头向上,表示拦截该请求发送时候上图找过你该状态栏箭头向下,表示Fiddler
拦截请求回来的时候。放行断点的时候单击上方的GO
的按钮即可—>查看详情 -
:表示用来模式切换,在流模型和缓存模式下进行切换,默认是缓冲模式。—>查看详情
- 流模式:理解成为一种实时通信的模式,有请求就有返回,也就是实时返回
- 缓冲模式:等待所有的请求都到一起在返回,也就是等所有的数据都准备好了以后才返回给客户端
-
:将
http
请求的东西解压出来,方便阅览。—>查看详情 -
:
Fiddler
默认保存All sessions
,需要注意的是Fiddler
保存的会话状态越多,占用的内存越大。如果性能不是特别好,建议不要保存所有会话。—>查看详情 -
:过滤请求(靶心形状按钮是帮我们过滤不想看到的进程发出的请求,只保留我们要看到的进程的请求。比如只想看到谷歌浏览器请求,把靶心拖动到谷歌浏览器放开即可)该功能可以只捕获某个客户端或进程发送的请求,点击
Any Process
拖动鼠标到指定客户端或者进程上。—>查看详情 -
:查找会话,并默认黄色标识该会话。—>查看详情
-
:可以对捕获到的会话进行保存,保存后只需要把保存的
saz
文件打开即可。—>查看详情 -
:保存截图功能,5 秒之后帮我们把截图保存下来
-
:计时器,左键单击一下开始,再单击一下停止,右键清零
-
:快速启动浏览器(也可选择下拉框中别的浏览器:
IE
,火狐,谷歌,edge
等) -
:清除
WinINET
的缓存,按住CTRL
键点击可以清除已经存在的cookies
-
:此工具可以将某一编码过的或者未编码过的字串拿到此处解码和编码,也可以在菜单栏
Tools
>TextWizard…
中打开 -
:此功能用来将右边栏里的请求和响应部分给单独拆成一个新窗口,方便视察
-
:可以进行搜索功能,原版的话平时几乎不会用到该功能
-
:
fiddler
的在线帮助网站 -
:鼠标悬停显示本机的一些
ip
信息 -
:用来关闭工具栏的按钮,在
View
中可以打开工具栏
3. 会话面板
表头字段解析:
- # :
HTTP Request
的顺序,从 1 开始,按照页面加载请求的顺序递增,点击可按降序排列 - Result:
HTTP/HTTPS
响应的状态 - Protocol:请求使用的协议(如
HTTP、HTTPS、FTP
) - Host:请求地址的域名
- URL:请求的服务器路径和文件名,也包括
GET
参数 - Body:请求的大小,以
byte
为单位 - Caching:请求的缓存过期时间或缓存控制
header
等值 - Content-Type:请求响应的类型
Content-Type
- Process:发出此请求的
Windows
进程及进程ID
- Comments:用户通过脚本或者右键菜单给此
session
增加的备注 - Custom:用户可以通过脚本设置的自定义值
列图标解析:
4. 辅助标签+工具
- Get Started
- Statistics
- Inspectors
- AutoResponder
- Composer
- Fiddler Orchestra Beta
- FiddlerScript
- Log
- Filters
- Timeline
初始页,上面显示了一些 Fiddler
相关的新手基础操作的指引与软件推广信息,如果需要关闭的话就将页面左下角的 Show on startup
取消勾选即可
Statistics:—>查看详情
根据在会话列表中选中会话进行统计与分析
-
Request Count:请求数
-
Unique Hosts:当选中的多条请求,且他们的
host
都不一致时,就会展示不相同的个数 -
Bytes sent:发送的请求字节数,包括请求头和请求体
-
Bytes Received:接收到的字节数,包括响应头和响应体
-
ACTUAL PERFORMANCE:实际性能,这部分的数据就是将数据流拆成两个部分,客户端发送到
fiddler
的时间和fidder
返回数据给客户端的时间计算,fiddler
建联和服务器交互的时间
- ClientConnected:表示客户端和
fiddler
之间建立连接的时间 - ClientBeginRequest:客户端把请求发给
fiddler
的时间 - GotRequestHeaders:fiddler接收到客户端发送的请求头时间
- ClientDoneRequest:客户端将请求完全发给
fiddler
的时间 - DetermineGateway:确认网关使用时间
- DNS Lookup:
DNS
解析时间 - TCP/IPConnect:
fiddler
与服务器建联时间 - HTTPSHandshake:
Fiddler
与服务器HTTPS
握手使用使用时间 - ServerConnected:
Fiddler
与服务器建联时间 - FiddlerBegin Request:
fiddler
把请求发给服务器时间 - ServerGotRequest:服务器接收完
fiddler
发送的整个请求的时间 - ServerBeginResponse:
fiddler
接收到服务器发送的首个响应时间 - GotResponseHeaders:
fiddler
接收到服务器返回第一个响应字节时间 - ServerDoneResponse:服务器发送完毕响应时间(发送到
fiddler
) - ClientBeginResponse:
fiddler
开始发送响应给客户端的时间 - ClientDoneResponse:
fiddler
发送完响应给客户端的时间 - Overall Elapsed:总的耗时时间
- ClientConnected:表示客户端和
-
RESPONSE CODES:响应码统计
-
Response Bytes(by content-type):响应字节统计
-
REQUESTS PER HOST:每个主机的请求数
-
ESTIMATED WORLDWIDE PERFORMANCE:全球网站性能评估,这块主要就是用来说明在其他的地区访问这个请求要花多少时间,主要评估的维度就是
RTT
和Elapsed
- RTT:用于说明请求发送到接收到响应要花多少时间
- Elasped:则说明总体的耗时需要多少
点击 Statistics
页面底部的 Show Chart
相关的数据会以饼状图的形状展示出来,大概可以查看出哪一种类型的数据占据最多
Collapse Chart
按钮关闭图标展示,Copy this chart
按钮复制图表。
Inspectors:—>查看详情
该功能用于显示会话列表中选定会话的请求和响应信息,选中该选项卡后,下方区域就会变成 HTTP
请求区域与 HTTP
响应区域,在该选项卡下还存在多个子选项卡,分别代表着各类显示风格与请求和响应内的其他组成内容
请求报文区按钮说明:
- Headers:显示客户端发送到服务器的
HTTP
请求的header
,显示为一个分级视图,包括Cookie
、设备信息 - TextView:显示
POST
请求的body
部分为文本 - SyntaxView:为
Textview
的加强版,查看语法高亮的请求内容。加上了行数标识,鼠标右键的菜单中,相较Textview
多了一些功能,如Json
、XML
格式化,查找替换等 - WebForms:显示请求的
GET
参数 和POST body
内容。特别说明,这里body
应该是application/x-www-form-urlen-coded
格式 - HEX:用十六进制数据显示请求
- Auth:
header
中的Proxy-Authorization
和Authorization
信息 - Cookies:请求发送的
cookies
信息 - Raw:将整个请求显示为纯文本
- JSON:如果请求的
body
是Json
格式,就是用分级的Json
来显示它 - XML:如果请求的
body
是XML
格式,就是用分级的XML
树来显示它
响应报文区按钮说明:
- Transformer:显示响应的编码信息
- Headers:显示响应的
header
- TextView:使用文本显示相应的
body
- SyntaxView:为
Textview
的加强版,查看语法高亮的请求内容。加上了行数标识,鼠标右键的菜单中,相较Textview
多了一些功能,如Json
、XML
格式化,查找替换等 - ImageView:如果请求是图片资源,显示响应的图片。左侧灰色区域会显示图片的大小、宽高、文件格式等信息,在下方还可以选择缩放模式:
Autoshrink
(自动缩放)、Scale to fit
(缩放以适应显示区域大小)、No Scaling
(无缩放) - HexView:用十六进制数据显示响应
- WebForms:响应在
Web
浏览器中的预览效果 - Auth:显示响应
header
中的Proxy-Authorization
和Authorization
信息 - Caching:显示此请求的缓存信息
- Cookies:显示此请求的
cookies
信息,私密P3P Header
信息 - Raw:将整个响应显示为纯文本
- JSON:如果响应的
body
是Json
格式,就是用分级的Json
来显示它 - XML:如果响应的
body
是XML
格式,就是用分级的XML
树来显示它
第一次在 Web
会话列表中双击某个会话或按下 Enter
键,就会激活 Inspectors
选项卡。Fiddler
会根据每个请求和响应的类型,自动选择合适的 Inspectors
视图。例如:如果你选择的会话是一个 image/*
类型,则 Fiddler
会自动选择 Inspectors
中的 ImageView
视图。如下图:
AutoResponder:—>查看详情
除了使用断点方式来拦截请求,也可以使用 AutoResponder
方式来拦截请求
Fiddler
的自动响应选项卡(AutoResponder
)提供了 Fiddler
最强大的一些功能。它支持创建规则,可以在响应请求时自动触发,常见例子是返回之前捕捉的响应,而不需要访问服务器。
Fiddler
自动响应选项卡界面下图:
上图中,在自动响应选项卡区域的上方是一组选项,能够控制自动响应选项卡的行为。如下:
-
Enable rules:复选框用来控制是否激活自动响应选项卡
-
Unmatched requests passthrough:复选框用来控制当会话不匹配任何给定的规则时会发生什么。如果选中该选项,不匹配的请求会正常发送到服务器。如果没有选中该选项,
Fiddler
会为所有和该规则完全不匹配的HTTP
请求生成HTTP/404 Not Found
响应。如果客户端发送的是条件请求,其中包含请求头If-None-Match
或If-Modified-Since
,那么会返回响应HTTP/304 Not Modified
。 -
Enable Latency:选项控制匹配某个规则的请求是立即执行,还是延迟
Latency
字段中所指定的毫秒数。如果没有选中该选项,Latency
字段就不会显示。使用这个选项可以更准确地模拟现实中的服务器响应,取消该选项可以提升性能。 -
Add Rule:点击该按钮添加一个新的
AutoResponder
规则。 -
Group:点击该按钮对多个规则进行分组,这样便于统一开启/禁用规则。
-
Import:点击该按钮支持导入之前捕获的
SAZ
文件,导入文件中的每个会话会被用于规则列表中生成新的规则。你还可以导入FARX
文件,它包含从AutoResponder
选项卡导出的规则。如下图:
Composer:—>查看详情
Fiddle
r 的 Composer
选项卡支持手动构建和发送 HTTP
、HTTPS
和 FTP
请求。此外,还可以从 Web
会话列表中拖拽会话,把它放到 Composer
选项卡中,把该 Session
的请求复制到用户界面。点击 Execute
按钮,把请求发送到服务器端。如下图:
从上图可知,Composer
选项卡是由三个子选项卡组成的:Parsed
、Raw
、Scratchpad
和 Options
选项卡。下面将按序解释每个选项卡,为了便于说明,从右开始
-
请求选项卡(Options ):
Options
选项卡提供的选项如下:- Inspect Session:请求执行后,
Inspectors
选项卡会被激活,可以查看请求的结果 - Fix Content- Length header:该选项控制
Composer
是否会自动添加或修改Content-Length
请求头,表示请求体的大小。在很多情况下,缺少适当的Content-Length
头的请求会HANG
住或导致HTTP
响应出错 - Follow Redirects:该选项控制
Composer
是否会自动使用响应的Location
头,遵循HTTP/3xx
重定向。如果选中该选项,Composer
在失败之前最多会执行 10 次重定向 - Automatically Authenticate:该选项控制
Composer
是否会自动响应服务器的HTTP/401
或HTTP/407
认证需求。如果选中该选项,会使用Fiddler
所运行的账户的Windows
证书自动响应这些问题。要提供不同的证书集,设置Preference fiddler.composer.AutoAuthCreds
。如果服务器需要的证书和提供方的证书不同,请求会失败,通常会返回响应HTTP/403
- Tear off button:该按钮会从主
Fiddler
窗口删除Composer
,并把它作为独立的悬浮窗口打开。如果选中Inspect Session
选项,该选项就非常有用,因为它支持同时查看Composer
和Inspector
选项卡
- Inspect Session:请求执行后,
-
暂存器(Scratchpad):使用
Scratchpad
选项卡存储请求集合。如果要发出请求,请选择其文本并按Execute
按钮进行执行。如下图: -
Raw 请求:
Raw
选项卡提供简单的文本框,可以在该文本框中输入合适的HTTP
请求。如果请求格式不对(比如忘记在请求头后截断CRLF
),点击Execute
按钮不会发起请求 -
Parsed
请求:Parsed
选项卡支持为每个请求组件使用独立的输入框构建请求选项卡的下方是三个输入框: 在最上方的线下是两个大的文本区:最上方的输入框支持编辑请求头。最下方的输入框支持编辑请求体。如果当前选中的
HTTP
方法不支持请求体(如:GET
方法),当在请求体输入框输入文本时,该输入框会显示红色- 第一个输入框支持指定
HTTP
方法(如:POST
) - 第二个输入框支持指定请求的绝对
URL
(必须以http://
、https://
或ftp://
开头) - 第三个输入框支持指定
HTTP
版本号(通常是HTTP/1.1
)
- 第一个输入框支持指定
Fiddler Orchestra Beta:—>查看详情
Fiddler Orchestra Beta
页签是新版 Fiddler
新增功能,用于抓包远程计算机的数据
其中 Fiddler Orchestra
涉及到两个角色,控制器(Controller
)和客户端(Client
),控制器就是我们正在使用的 Fiddler
软件,其功能是用来收集数据和控制任何一个客户端,而客户端则是向任何其运行所在的 Windows
,Linux
,Mac
主机上收集接收过来的流量将其通过加密的方式报告发送给控制器,控制器会在 Fiddler
软件上的会话端显示。
具体内容可参见:抓取手机APP的流量-插件Fiddler Orchestra Beta安装&配置
FiddlerScript:—>查看详情
FiddlerScript
是 Fiddler
提供的 Jscript
脚本,让我们在 Fiddler
的基础上扩展实现一些其他更强大的功能
Fiddler Script Editor
提供了语法高亮,以及智能提示的功能
FiddlerScript
基于 JScript.NET
语言。在 Fiddler
中点击菜单 Rules
> Customize Rules
打开 FiddlerScript Editor
编辑器,在这里可以编写 Fiddler Script
脚本,只要一保存,Fiddler
将会重新编译脚本并自动加载。
Log:—>查看详情
Fiddler
的 Log
选项卡收集日志消息字符串,这些字符串是由扩展、FiddlerScript
或 Fiddler
本身生成的。Fiddler
会记录应用事件(如:当保存或加载 SAZ
文件)以及系统事件(如:系统的网络连接丢失或恢复)的响应通知。
在当前的 Fiddler
版本中,Log
选项卡如下图:
右击 Log
文本框,会显示上下文菜单,提供和日志交互的一些基本命令:
- Copy:把选中的文本复制到剪贴板
- Send to Session List:将事件日志作为会话保存到Web会话列表
- Save to File… :把当前日志保存到磁盘文件中。可以是纯文本格式,也可以是格式化的富文本格式(.rtf)
- Clear:清空Log中的所有文本
Log
选项卡支持简单的宏命令,可以从 QuickExec
文本框中调用这些命令。例如:
-
清空日志
log @Log.Save
-
在 Web 会话列表中生成新的会话,该会话的响应体包含 Log 选项卡的文本
log @Log.Save
-
把 Log 选项卡的文本保存到指定的文件。文件名以 .rtf 结尾,可将文件保存为富文本格式,保存大小和权重,或以文件名以 .txt 结尾保存为纯文本
log "@Log.Erport\"filename\""
Filters:—>查看详情
在 Fiddler
中,Filters
(过滤器)选项卡提供了非常方便地将简单的过滤规则应用到正在捕捉的数据流上的方法。在 Filters
选项卡上面的所有操作 FiddlerScript
可以模拟(通常更准确或强大),但是对于简单的任务,Filters
选项一般就足够满足过滤需求。如下图:
上图中,选中 Filters
选项卡左上方的 Use Filters
复选框后,就可以使用 Filters
给出的过滤器对流量进行过滤了。选中 Use Filters
复选框后,对于选定的会话,可以对该会话进行如下过滤操作:
- 是否隐藏显示
- 是否在
Web
会话列表中添加标识 - 是否设置断点用于人工调试
- 是否阻断发送
- 是否自动修改其数据头
Fiddler
还会为隐藏的会话提供代理功能,即使在 Web
会话列表中没有显示这些会话。
选项卡右上方的 Actions
按钮支持把当前选中的过滤器作为过滤集,加载之前保存的过滤集,并对之前捕捉到的数据流应用当前过滤规则。如下图:
Hosts(主机过滤)
Hosts
框提供根据主机名过滤的功能。如下图:
Hosts
过滤支持:
-
按区域进行过滤(
Zone Filter
),如果选择只显示局域网会话(Show only Interanet Hosts
),Fiddler
将只会列出属于局域网的会话。如果选择只显示互联网的会话(Show only Internet Hosts
),Fiddler
将只会列出属于互联网的会话。如下图: -
按主机进行过滤(
Host Filter
),如果选择隐藏一下主机(Hide the following Hosts
),Fiddler
将隐藏Hosts
输入框输入的主机。如果选择只显示以下主机(Show only the following Hosts
),Fiddler
将仅仅显示Hosts
输入框输入的主机。如果选择标记以下主机(Flag the following Hosts
),Fiddler
将在Web
会话列表中加粗显示Hosts
输入框中输入主机的所有会话
注意:
(1)修改过滤器后,需要执行“Actions”的“Run Filterset now”按钮,使修改后的过滤器配置立即生效。
(2)Hosts 文本框不会自动通过通配符匹配子域名。如果你设置了“Show only the following Hosts”并且在列表中只有hxstrive.com,那么将无法看到 www.hxstrive.com 网站下的数据流。为了查看 hxstrive.com 域名下所有的数据流,需要手动添加通配符 。例如:.hxstrive.com。
在通配符方式下就可以包含如 test.hxstrive.com 和 doc.hxstrive.com 这样的网站。如果你想查看根目录 hxstrive.com下的数据流,可以把通配符改成 *hxstrive.com 的形式 —— 这样就可以包含所有域名以 hxstrive.com 结束的数据流,前面不需要加点。如果有多个 host,可以使用分号分隔。
Client Process(客户端进程)
进程过滤器用于控制 Fiddler
显示哪个进程的数据流。应用程序只有和 Fiddler
运行在相同的主机时,Fiddler
才能判断出是哪个进程发出的哪个请求。如下图:
-
Show only traffic from 选项只显示选中进程下的数据流(注意:下拉列表中包含了系统中当前正在运行的所有进程)。如下图:
-
Show only Internet Explorer 选项只显示进程名称以
IE
开头或请求的User-Agent
头包含compatible
,MSIE
的数据流 -
Hide traffic from Service Host 选项会隐藏来自进程
svchost.exe
的数据流,svchost.exe
进程是个系统进程,会同步 RSS Feeds 以及执行其他后台网络活动
Request Headers(请求头)
可通过下面这些选项,添加或删除 HTTP
请求头,也可以标识包含某些请求头的请求。如下图:
- Show only if url contains:选项框支持基于
URL
隐藏某些请求,仅仅显示我们感兴趣的请求。可使用前缀 EXACT 来限定大小写敏感,如下:
也可以使用正则表达式EXACT:hxstrive.com/q=字符串
REGEX:(?insx).*\.(gif|png|jpg)$ # 只显示图片请求
- Flag requests with header:选项支持指定某个
HTTP
请求头名称,如果在 Web 会话列表中存在该请求头,会加粗显示该会话 - Delete request header:选项支持指定某个
HTTP
请求头名称,如果包含该请求头,会删除该请求头 - Set request header:选项支持创建一个指定了名称和取值的
HTTP
请求头,或将HTTP
请求头更新为指定取值
Timeline:—>查看详情
Fiddler
的时间轴(TimeLine
)选项卡支持使用 瀑布
模型查看 1
到 250
个选中的会话,这对于性能分析和理解请求之间的关联是很有用的。
选项卡的主体内容就是数据流视图。页面的上方是标题,显示时间轴模式(默认情况下是 传输时间轴 Transfer Timeline
)。点击右上方的帮助(Help
)链接,会使用浏览器打开关于该功能的帮助页面。如下图:
在选项卡中任意位置右击,可以看到上下文菜单。如下图:
上图中:
- AutoScale Chart(自动缩放图表):如果选中该选项,会水平调节图形宽度,使得整个图形适配选项卡宽度,不需要水平滚动条
- Copy Chart(复制图表):点击该选项会把图形以位图格式拷贝到剪贴板,以便粘贴到其他文档中
- Mode: Timeline 控制图形如何显示:
- Timeline(时间轴):通过时间轴线条显示每个会话,用彩色条表示时间段,—>查看详情
- Client Pipe Map(客户端管道图):显示每个时间轴的客户端进程和Fiddler之间的连接。多个Session之间重用的连接会以多种彩色条显示,—>查看详情
- Server Pipe Map(服务端管道图):显示每个时间轴的 Fiddler 和上游服务器之间的连接。多个Session之间重用的连接会以多种彩色条显示 ,如下图:—>查看详情
- Timeline(时间轴):通过时间轴线条显示每个会话,用彩色条表示时间段,—>查看详情
注意:
(1)Client Pipe Map 和 Server Pipe Map 模式显示客户端和服务器之间如何复用连接,对判断性能瓶颈非常有帮助。
(2)时间轴选项卡并不显示任何 CONNECT 通道,因为该通道的数据流可能是模糊的,也可能是由一个或多个解密的 HTTPS Web 会话项跟踪。
5. 命令行
Fiddler
的 We
b 会话列表下的 QuickExec
对话框中提供了常见操作的快捷方式。当 Fiddler
处于活动状态时,使用 Alt+Q
快捷键可以把光标快速定位到 QuickExec
输入框。如果 Fiddler
没有处于活动状态,则需要先使用 CTRL+ALT+F
键激活 Fiddler
窗口,再使用 Alt+Q
键将光标定位到 QuickExce
输入框。
当光标定位在 QuickExec
输入框,按下 CTRL+I
键会把选中的第一个会话的 URL
插入到 Web
会话列表中。你还可以从 Web
会话列表中拖动/释放一个或多个会话,把 URL
插入到 QuickExec
对话框;你也可以从文件系统中将一个或多个文件拖入到文件路径中。
你可以在 QuickExce
框中输入 help
回车,使用浏览器打开 QuickExce
在线命令帮助文档,如下图:
常用快捷命令:
- 文本查找
- 响应大小过滤
- 状态/方法过滤
- 匹配主机
- 根据字符匹配创建响应断点
- 根据状态码创建响应断点
- 根据请求方法创建请求断点
- 根据字符串匹配创建请求断点
- 恢复所有断点会话
- 清理会话列表
- 会话备份
- 最小化到托盘
- 替换URL
- 开始抓包(start)
- 停止抓包(stop)
- 关闭 Fiddler
- 过滤响应 Content-Type
- 其他过滤方式
- 条件隐藏
- 执行 DNS 查找
在 QuickExec
中输入 ?searchtext
字符串,Fiddler
将高亮显示 Web
会话列表包含 searchtext
文本的 Web
会话。如下:
在 QuickExec
中输入 >size
字符串,Fiddler
将高亮显示 Web
会话列表中响应大小大于 size
字节的 Web
会话。如下:
如果我们在 QuickExec
中输入 <size
字符串,Fiddler
将高亮显示 Web
会话列表中响应小于 size
字节的 Web
会话。如下:
在 QuickExec
中输入 =状态
或者 =方法
字符串,Fiddler
将高亮显示 Web
会话列表中等于指定状态,或者等于指定状态的 Web
会话。如下:
上图中,高亮选中状态为 404
的 Web
会话。如果输入 =POST
将高亮显示 POST
类型的 Web
会话。
在 QuickExec
中输入 @host
字符串,Fiddler
将高亮显示 Web
会话的请求主机包含 host
的会话。如下:
上图中,将高亮请求主机包含 sougo.com
的 Web
请求。
在 QuickExec
中输入 bold sometext
字符串,Fiddler
将后续抓到的,且包含 sometext
字符串的会话加粗显示。如下:
上图中,我们输入 bold /moban5718
字符串,Fiddler
后续将在后续收到的,且包含 /moban5718
字符串的会话加粗。如果我们继续输入 bold
,将取消加粗效果。
在 QuickExec
中输入 bpafter sometext
字符串,Fiddler
将在收到的、包含 sometext
字符串的会话上添加响应断点。如果输入无参的 bpafter
字符串,则将取消添加响应断点操作(注意:这只对执行该操作后收到的会话)。如下图:
在 QuickExec
中输入 bps status
字符串,Fiddler
将在收到的、状态等于 status
的会话上添加响应断点。如果输入无参的 bps
字符串,则取消为状态添加响应断点的操作(注意:这只对执行该操作后收到的会话)。如下图:
在 QuickExec
中输入 bpv method
字符串,Fiddler
将在收到的、HTTP
方法为 method
的会话添加请求断点。如果输入无参的 bpv
字符串,则取消根据 HTTP
方法添加请求断点的操作。如下图:
注意,也可以使用 bpm method
添加请求断点,使用 bmp
(无参)禁用请求断点。
在 QuickExec
中输入 bpu sometext
字符串,Fiddler
将在收到的、包含 sometext
字符串的 URI
会话创建请求断点。如果输入无参的 bpu
字符串,将禁用创建请求断点。如下图:
在 QuickExec
中输入 g
或者 go
字符串,Fiddler
将恢复所有断点会话。如下图:
在 QuickExec
中输入 cls
或者 clear
字符串,Fiddler
将清理所有的会话列表。如下图:
在 QuickExec
中输入 dump
字符串,Fiddler
将所有会话转储到 C:\
中的 zip
存档。如下图:
在 QuickExec
中输入 hide
字符串,Fiddler
主界面将隐藏到任务栏。
在 QuickExec
中输入 urlreplace str1 str2
字符串,Fiddler
将收到会话的 URL
中的 str1
字符串替换成 str2
。如果输入不带参数的 urlreplace
字符串,则取消 URL
替换功能。如下图:
在 QuickExec
中输入 start
字符串,可以开启 Fiddler
抓包。
在 QuickExec
中输入 stop
字符串,可以停止 Fiddler
抓包。如下图:
在 QuickExec
中输入 quit
字符串,去关闭 Fiddler
。
在 QuickExec
中输入 select someText
字符串,Fiddler
将会选择响应 Content-Type
头包含指定的 someText
字符串的任何会话。如下图:
前面介绍了根据 Content-Type
过滤响应,Fiddler
还支持其他更多的过滤方式。Fiddler
提供了两个内置变量 @Request
和 @Response
对象,使用这两个对象可以过滤其他头字段。例如:根据请求 User-Agent
头字段过滤会话,如下图:
上图中,我们使用 @Request.User-Agent Mozilla
选择所有用户 User-Agent
包含 Mozilia
字符串的会话。
在 QuickExec
中输入 allbut image
或者 keeponly image
字符串,Fiddler
将隐藏响应会话的 Content-Type
中未包含 image
字符串的所有会话。如下图:
对目标主机执行 DNS
查找并在 LOG
选项卡上显示结果。如下图:
我们可以用 Fiddler
来监听其他端口,语法格式:
!listen *PORT [CERTHOSTNAME]*
例如:
!listen 8889
!listen 4443 localhost
!listen 444 secure.example.com
6. 状态栏
- Capturing
- All Processes
- Breakpoint
- Session Counter
- Status Information
在 Fiddler
的右下角,有一个小图标(Capturing
)。我们可以通过点击改图标去启用或禁用 Fiddler
抓包功能(即 Fiddler
是否被配置为系统代理)。如下图:
上图中,我们可以看见有一个 Capturing
图标。如果我们能够看见该图标,则表示 Fiddler
当前处于抓包中。如果此处没有该图标,则表示 Fiddler
没有抓包。
在 Fiddler
中,我们可以通过左下角查看当前 Fiddler
正在抓取哪些进程的 HTTP
数据报文。如下图:
上图中,表示 Fiddler
正在抓取所有进程的 HTTP
数据报文。其中还支持如下选项:
- All Processes:抓取所有进程的报文
- Web Browsers:仅仅抓取浏览器进程的报文
- Non-Browser:仅仅抓取非浏览器进程的报文,国内的一些非主流浏览器可能不会被当做浏览器进程
- Hide-All:过滤掉所有进程的
HTTP
报文,和禁用抓包效果一致,即在Web
会话列表不显示任何会话
断点,调试器的功能之一,可以让程序中断在需要的地方,从而方便其分析。Fiddler
也支持断点功能,下面将介绍 Fiddler
提供的全局断点。全局断点分为:
- 全局请求断点:指在将请求发送给服务器之前,打一个断点,此时我们可以对请求进行修改。
- 全局响应断点:指在将服务器的响应发送到客户端之前,打一个断点,此时我们可以对响应进行修改。
Fiddler
开启断点功能非常简单,只需要点击状态栏从左到右第三个框接口开启断点功能。如下图:
上图中,断点开启按钮默认是一个空白,表示没有开启断点。如果我们点击一次,则将开启全局请求断点,如下图:
如果我们继续点击一次,则将开启全局响应断点,如下图:
如果我们再次点击一次,则取消全局断点功能。
示例:
演示全局请求和全局响应断点,如下图:
上图中,某些部分请求和响应均处于断点中。那么,我们该如何取消这些断点呢?
方式一:逐个释放断点,选中被打断点的请求,点击 Run to Completion
按钮释放断点。如下图:
方式二:释放全部断点,点击工具栏的 Go
按钮,如下图:
显示当前抓取的总会话数,以及选中的会话数,如下图:
默认情况下,显示选中的第一个会话的 URL
。该面板还可以显示操作结果的概要信息,比如何时加载或保存 SAZ
文件。如下图:
四、常用功能
1. 抓取指定 IP 地址的包
这里需要使用到过滤器,点击 Filters 按钮
勾选 Use Filters
(使用过滤器)
Host Filter
选择 Show only the following Hosts
,在文本框中输入 IP
地址,用 ;
隔开,然后再点击 Changes not yet saved.
保存即可
如果想要去掉 URL
中包含 css
、js
、image
等包,可将 Hide if URL contains
也勾选上
之后抓取的包就只有跟你所设置 IP
相关的包了
2. 抓取 HTTPS 协议的包
默认情况下 Fiddler
是不支持抓取 https
协议的包的,比如我访问百度 https://www.baidu.com/
,会话列表是不会有会话的
这个时候需要在 Tools
> Options...
打开 Options
界面选中 HTTPS
分别勾选 Capture HTTPS CONNECTs
和 Decrypt HTTPS traffic
复选框
Capture HTTPS CONNECTs
:表示我们能够抓取到HTTPS
连接(Fiddler
默认情况下将HTTPS
连接隐藏了的,查看菜单Rules
->Hide CONNECTs
是否被勾选)Decrypt HTTPs traffic
:表示会对收到的HTTPS
流量尝试使用Fiddler
的证书进行解码
如果勾选了 Decrypt HTTPS traffic
该复选框,且以前没有安装 Fiddler
证书。此时,Fiddler
将弹出提示安装证书,如下图:
直接点击 Yes
即可,Window
系统将弹出安全警告,如下图:
点击 是
,安装 Fiddler Root
证书到 Windows
中。接下来,提示是否将 Fiddler Root
证书添加到本机 Root
证书列表。如下图:
直接点击 是
,系统提示证书添加成功。如下图:
如果你还是不放心证书是否真的安装成功了。可以在 HTTPS
选项卡中点击 Actions
,选择 Open Windows Certificate Manger
去打开 Windows
证书管理器。如下图:
在打开的证书管理器中,点击 操作
菜单,选择 查找证书
,在 包含
输入框中输入Finddler
查找 Fiddler
相关的证书,如果能够正常看见 Fiddler
证书,说明证书安装成功。如下图:
通过前面一些列的操作,已经完成 Fiddler
抓取 HTTPS
的配置。此时,我们尝试访问一些 HTTPS
网站,查看 Fiddler
是否能够抓取到 HTTPS
请求,如下图:
如果你依然不能抓取到 HTTPS
浏览,需要检查一下你使用的浏览器是否为 Firefox
,Firefox
抓取 HTTPS
流量稍微复杂些,可以参见 Fiddler Firefox HTTPS 抓包 ,或者切换成 IE
或者 Chrome
浏览器
如果还是不行,那么可以点击HTTPS
选项卡中的 Actions
,点击 Reset All Certificates
去重置所有的 Fiddler Root
证书,重新安装证书,或者重启 Fiddler
。
3. 手机 APP 抓包
首先得保证手机和电脑在同一个局域网(连接着同一个 WIFI
),先查看 Fiddler
所在电脑得 IP
地址,可以直接把鼠标悬停在工具栏中的 Online
查看
或者 Win + R
调出 windows 运行窗口
输入 cmd
再输入 ipconfig
查看 IP
地址
设置 Fiddler
允许远程连接,点击 Tools
选择 Options...
,再选中 Connections
勾选 Allow remote computers to connect
允许远程计算机连接到 Fiddler
注意:Fiddler Classic listens on port
后面是 Fiddler
的默认端口 8888
,一般不做修改
接着就是为手机配置代理,打卡手机的 设置
,找到 WLAN 配置
选择当前正连接的 WIFI
,,点击查看 WIFI
的详细信息。如下图:
点击 WIFI
的代理,选择 手动
,然后设置代理的 IP
和端口。其中,IP
地址为 Fiddler
所在机器的 IP
地址,端口在 Fiddler
中配置的 8888
,如下图:
最后为手机下载安全证书,使用收集浏览器访问 Fiddler
服务,根据上图可知,Fiddler
的端口为 8888
(访问地址为 Fiddler
所属主机的 IP
地址加 Fiddler
端口),例如:192.168.1.3:8888
。访问之后如下图:
如果这个页面访问不上,可以重启下 Fiddler
点击 FiddlerRoot certificate
链接按钮,下载 Fiddler
的根证书。如下图:
打开浏览器的下载管理器,点击刚刚下载的 Fiddler
证书,安装证书。将该证书命名为 Fiddler
。如下图:
证书安装完成后,可以在 系统设置
中搜索 凭据
(或者 CA 证书
,不同手机会有点差别),打开 信任的凭据
,找到刚刚安装的 Fiddler
证书。Fiddler
证书信息如下图:
以上就是开启手机 APP
抓包的全部设置了,可以打开一个 APP
进行验证。
注意:并不是所有的 APP
的包都能抓到,有些 APP
做了一些防抓包的处理也是很正常的
4. 发送序列化请求
在某些场景中,可以发送多个请求,这些请求除了某个有序的数字外,其他完全相同。如下图:
上图中,是一些图片,这些图片名称基本一致,只是名称的序号不一样。我们可以利用 Fiddler
发送序列化请求,逐一访问 png-001.png
到 png-0007.png
图片。做法如下:
(1)在 Fiddler
的 Composer
组合器中,输入 URL
地址,URL
地址中序号部分使用 #
号代替,如下图:
上图中,URL
输入为 http://localhost/image/png-#.png
,其中序列号部分使用 #
号代替
(2)点击 Execute
按钮执行请求,此时 Fiddler
要求输入序号开始值,如下图:
注意,我了保证产生的序列号是 4 位,在 1 前面添加了 3 个 0
(3)当我们输入完序列的开始序号后,点击 OK
按钮,Fiddler
将弹出输入序号结束值的弹框。如下图:
Fiddler
一共发了 7 个请求,从 png-0001.png
到 png-0007.png
注意:
(1)序列请求功能只有在使用 Parsed 选项卡时才可用;如果请求是以 Raw 选项卡编写,# 会作为纯文本处理。
(2)有些服务器不会返回响应,除非包含期望的 Referer 头。在请求的 Referer 头前面包含 #,表示 Fiddler 要用当前的请求号替换该字符。
5. 发送上传文件请求
在 Fiddler
组合器的 Parsed
选项卡上,可以通过点击选项卡右上方的上传文件(Upload File
)链接创建文件上传,会弹出 Select File for Upload
文件选择窗口。如果请求方法是 PUT
,只能选择一个文件;如果请求方法是 POST
,可以选择多个文件。如下图:
选中上传的文件后,Composer
可以创建包含适当格式的请求;当请求执行时,请求体中的所有 @INCLUDE
引用会替换成指定文件的内容。
在 HTTP
中,文件上传是使用 PUT
或 POST
方法执行的。当使用 PUT
方法执行文件上传时,请求体通常包含文件的原始内容,如下图:
使用 POST
方法上传通常会使用 Content-Type: multipart/form-data
对请求体进行格式化,如下图:
注意:使用 POST
上传方式,需要编辑 Name
属性,确保它和服务器的表单字段名称匹配。
五、常见问题
一旦 Fiddler
抓不到游览器的包,首先应该排查游览器代理是否设置正确,因为 Fiddler
之所以能抓到包,本质上是游览器设置了代理为 Fiddler
,一般情况下,只要启用了 Fiddler
后,系统代理设置就会自动开启,地址更新为:http=127.0.0.1:8888;https=127.0.0.1:8888
但是如果你之前在游览器上使用了什么插件,使得 Fiddler
代理失效也是有可能的,以下我提供几种游览器设置代理的方式
Chrome 浏览器:
默认情况下启动 Fiddler
后代理就会自动开启,如若没有开启,可先点击右上角的 自定义及控制
> 设置
再点击 系统
> 打开您计算机的代理设置
将代理打开即可
IE 游览器:
默认情况下启动 Fiddler
后代理就会自动开启,如若没有开启,与 Chrome
游览器设置的方式大同小异,先点击右上角的 设置及其他
(或者 Alt + F
)> 设置
进入到设置页面,再点击 系统和性能
> 打开计算机的代理设置
之后的操作与 Chrome
游览器一样
Firefox 浏览器:
若使用 Firefox
浏览器进行测试时,启用 Fiddler
前,需要配置代理服务器。可选择使用系统代理设置,启用 Fiddler
后,系统代理自动开启;也可选择手动代理配置。
路径:打开菜单->选项->常规->网络设置->设置
1) 使用系统代理设置,如图所示:
2) 使用手动代理配置
首先确定是否开启 Fiddler
,其次是检查手机和电脑是否连接在同一个局域网,再检查 IP
或者端口是否有误,如果都正常的话就重启下 Fiddler
试试。
未完待续…
参考博客:
Fiddler 教程:https://www.hxstrive.com/subject/fiddler/1643.htm
Fiddler教程,比较经典全面 :https://www.cnblogs.com/conquerorren/p/8472285.html
Fiddler 工作原理及界面简介:https://blog.csdn.net/u012235980/article/details/116847593
使用Fiddler对手机App抓包:https://blog.csdn.net/weixin_62332711/article/details/128161612
FIddler之Fiddler移动端抓包:https://blog.csdn.net/lzz718719/article/details/130928183
fiddler界面功能整理:https://blog.csdn.net/weixin_44765959/article/details/130518332
玩转App防抓包!:https://www.sohu.com/a/628965711_121124365
Fiddler安装与使用教程:https://blog.csdn.net/weixin_38306507/article/details/132559736
Fiddler Inspectors详解:https://blog.csdn.net/weixin_42382016/article/details/123630039