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
,界面如下,可分为六个部分:
Fiddler
注册为系统代理。当把 Fiddler
注册为系统代理时,所有依赖于 WinINET
代理的应用(如 IE
浏览器和其他浏览器)会把 Web
请求发送给 Fiddler
fiddler
窗口fildder
文档session
会话session
会话session
会话Session
的某些信息Web Session
列表中删除全部、选择或未选中的 Session
Sessions
列表的所有内容Web Session
Find Session
窗口,搜索捕获到的数据流Web Session
列表中显示图像类 Session
Web Session
列表中显示使用 CONNECT
请求方法的 Session
Fiddler
是否会自动在 Before Requests
或 After Responses
处设置断点。Ignore Image
触发器控制这些断点是否作用于图片请求FiddlerScript
文件Require Proxy Authentication
菜单项,所有未提交 Proxy-Authorization
请求头的请求会返回 HTTP/407
响应,要求客户端安装证书,该规则可以用于测试 HTTP
客户端,确保这些规则在有证书的客户端服务器上可以正常工作Apply GZIP Encoding
菜单项,只要请求包含具有 gzip
标识的 Accept-Encoding
请求头,就会对除了图片以外的所有响应使用 GZIP HTTP
进行压缩。该规则用于测试使用 GZIP
选项支持的客户端是否真正对内容进行压缩。该选项还支持性能调优,并且计算传输的压缩后的数据流的字节数Remove All Encoding
,会删除所有请求和响应的 HTTP
内容编码和传输编码HTTP/304 Not Modified
状态的响应的所有 Session
Accept-Encoding
请求头设置或替换为 ja
标识,表示客户端希望响应以日语形式发送User-Agent
请求头设置或替换成指定值Web
性能的简单选项Fiddler Options
窗口,针对 fiddler
的设置IE的Internet Options
窗口,windows
的 ie
设置IE
和其他应用中所使用的 WinINET
缓存中的所有文件IE
和其他应用中所发送的 WinINET Cookie.Session
的 Cookies
还是保持不变Web Session
列表中的两个 Session
时才有效。IE
缓存窗口windows
使用了一种叫做 “AppContainer”
的隔离技术,使得一些流量无法正常捕获,在 fiddler
中点击 Win8 Loopback Exemptions
按钮可以解除这个诅咒,这个与工具栏中的 WinConfig
功能是一致的Session
的剪贴板Fiddler
的 Host Remapping
工具Fiddler
工具栏是否可见,默认是勾选的layout
,session
在左,请求和响应在右边的上下处(界面布局)session
在上,请求在下方(界面布局)session
在上,请求和响应在下方的左右处(界面布局)fiddler
偏好属性fiddler
自动保存的设置api
的测试Composer
中进行请求的修改,可以把 session
框中的数据先清除,然后点击 Composer
中的 Excute
按钮来发送请求,请求出现在 session
框中Fiddler
到系统托盘中Web Session
列表是否水平收缩session
框中的每出现新的 session
,session
框中就会不断向下滚动,若不勾选此项,就很方便具体某一个 session
的定位,即使出现了新的 session
也不会自动向下滚动fiddler
的帮助的网页中fiddler book
的网页fiddler
的讨论网页,这个需要魔法上网http
参考文献相关网站fiddler
的相关信息
:
windows
使用了一种叫做 “AppContainer”
的隔离技术,使得一些流量无法正常捕获,在 fiddler
中点击 WinConfig
按钮可以解除这个隔离,这个与菜单栏 Tools
→ Win8 Loopback Exemptions
功能是一致的。—>查看详情
:给
session list
中的会话添加备注。选中一条回话,再点击该按钮可直接添加备注内容,添加成功后将会在 Comments
栏下查看到该备注。—>查看详情
:数据重放(快捷键
R
),当我们需要再一次对某个请求进行发送的时候,Fiddler
提供了回放的功能可以再一次发送请求。—>查看详情
:是调试
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
中可以打开工具栏
表头字段解析:
HTTP Request
的顺序,从 1 开始,按照页面加载请求的顺序递增,点击可按降序排列HTTP/HTTPS
响应的状态HTTP、HTTPS、FTP
)GET
参数byte
为单位header
等值Content-Type
Windows
进程及进程 ID
session
增加的备注列图标解析:
Get Started:
初始页,上面显示了一些 Fiddler
相关的新手基础操作的指引与软件推广信息,如果需要关闭的话就将页面左下角的 Show on startup
取消勾选即可
根据在会话列表中选中会话进行统计与分析
Request Count:请求数
Unique Hosts:当选中的多条请求,且他们的 host
都不一致时,就会展示不相同的个数
Bytes sent:发送的请求字节数,包括请求头和请求体
Bytes Received:接收到的字节数,包括响应头和响应体
ACTUAL PERFORMANCE:实际性能,这部分的数据就是将数据流拆成两个部分,客户端发送到 fiddler
的时间和 fidder
返回数据给客户端的时间计算,fiddler
建联和服务器交互的时间
fiddler
之间建立连接的时间fiddler
的时间fiddler
的时间DNS
解析时间fiddler
与服务器建联时间Fiddler
与服务器 HTTPS
握手使用使用时间Fiddler
与服务器建联时间fiddler
把请求发给服务器时间fiddler
发送的整个请求的时间fiddler
接收到服务器发送的首个响应时间fiddler
接收到服务器返回第一个响应字节时间fiddler
)fiddler
开始发送响应给客户端的时间fiddler
发送完响应给客户端的时间ESTIMATED WORLDWIDE PERFORMANCE:全球网站性能评估,这块主要就是用来说明在其他的地区访问这个请求要花多少时间,主要评估的维度就是 RTT
和 Elapsed
点击 Statistics
页面底部的 Show Chart
相关的数据会以饼状图的形状展示出来,大概可以查看出哪一种类型的数据占据最多
Collapse Chart
按钮关闭图标展示,Copy this chart
按钮复制图表。
Inspectors:—>查看详情
该功能用于显示会话列表中选定会话的请求和响应信息,选中该选项卡后,下方区域就会变成 HTTP
请求区域与 HTTP
响应区域,在该选项卡下还存在多个子选项卡,分别代表着各类显示风格与请求和响应内的其他组成内容
请求报文区按钮说明:
HTTP
请求的 header
,显示为一个分级视图,包括 Cookie
、设备信息POST
请求的 body
部分为文本Textview
的加强版,查看语法高亮的请求内容。加上了行数标识,鼠标右键的菜单中,相较Textview
多了一些功能,如 Json
、XML
格式化,查找替换等GET
参数 和 POST body
内容。特别说明,这里 body
应该是 application/x-www-form-urlen-coded
格式header
中的 Proxy-Authorization
和 Authorization
信息cookies
信息body
是 Json
格式,就是用分级的 Json
来显示它body
是 XML
格式,就是用分级的 XML
树来显示它响应报文区按钮说明:
header
body
Textview
的加强版,查看语法高亮的请求内容。加上了行数标识,鼠标右键的菜单中,相较Textview
多了一些功能,如 Json
、XML
格式化,查找替换等Autoshrink
(自动缩放)、Scale to fit
(缩放以适应显示区域大小)、No Scaling
(无缩放)Web
浏览器中的预览效果header
中的 Proxy-Authorization
和 Authorization
信息cookies
信息,私密 P3P Header
信息body
是 Json
格式,就是用分级的 Json
来显示它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
选项卡提供的选项如下:
Inspectors
选项卡会被激活,可以查看请求的结果Composer
是否会自动添加或修改 Content-Length
请求头,表示请求体的大小。在很多情况下,缺少适当的 Content-Length
头的请求会 HANG
住或导致 HTTP
响应出错Composer
是否会自动使用响应的 Location
头,遵循 HTTP/3xx
重定向。如果选中该选项,Composer
在失败之前最多会执行 10 次重定向Composer
是否会自动响应服务器的 HTTP/401
或 HTTP/407
认证需求。如果选中该选项,会使用 Fiddler
所运行的账户的 Windows
证书自动响应这些问题。要提供不同的证书集,设置 Preference fiddler.composer.AutoAuthCreds
。如果服务器需要的证书和提供方的证书不同,请求会失败,通常会返回响应 HTTP/403
Fiddler
窗口删除 Composer
,并把它作为独立的悬浮窗口打开。如果选中 Inspect Session
选项,该选项就非常有用,因为它支持同时查看 Composer
和 Inspector
选项卡暂存器(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
文本框,会显示上下文菜单,提供和日志交互的一些基本命令:
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
请求头,也可以标识包含某些请求头的请求。如下图:
URL
隐藏某些请求,仅仅显示我们感兴趣的请求。可使用前缀 EXACT 来限定大小写敏感,如下:EXACT:hxstrive.com/q=字符串
也可以使用正则表达式REGEX:(?insx).*\.(gif|png|jpg)$ # 只显示图片请求
HTTP
请求头名称,如果在 Web 会话列表中存在该请求头,会加粗显示该会话HTTP
请求头名称,如果包含该请求头,会删除该请求头HTTP
请求头,或将 HTTP
请求头更新为指定取值
Timeline:—>查看详情
Fiddler
的时间轴(TimeLine
)选项卡支持使用 瀑布
模型查看 1
到 250
个选中的会话,这对于性能分析和理解请求之间的关联是很有用的。
选项卡的主体内容就是数据流视图。页面的上方是标题,显示时间轴模式(默认情况下是 传输时间轴 Transfer Timeline
)。点击右上方的帮助(Help
)链接,会使用浏览器打开关于该功能的帮助页面。如下图:
在选项卡中任意位置右击,可以看到上下文菜单。如下图:
注意:
(1)Client Pipe Map 和 Server Pipe Map 模式显示客户端和服务器之间如何复用连接,对判断性能瓶颈非常有帮助。
(2)时间轴选项卡并不显示任何 CONNECT 通道,因为该通道的数据流可能是模糊的,也可能是由一个或多个解密的 HTTPS Web 会话项跟踪。
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
在线命令帮助文档,如下图:
常用快捷命令:
文本查找:
在 QuickExec
中输入 ?searchtext
字符串,Fiddler
将高亮显示 Web
会话列表包含 searchtext
文本的 Web
会话。如下:
响应大小过滤:
在 QuickExec
中输入 >size
字符串,Fiddler
将高亮显示 Web
会话列表中响应大小大于 size
字节的 Web
会话。如下:
如果我们在 QuickExec
中输入 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
主界面将隐藏到任务栏。
替换URL:
在 QuickExec
中输入 urlreplace str1 str2
字符串,Fiddler
将收到会话的 URL
中的 str1
字符串替换成 str2
。如果输入不带参数的 urlreplace
字符串,则取消 URL
替换功能。如下图:
开始抓包(start):
在 QuickExec
中输入 start
字符串,可以开启 Fiddler
抓包。
停止抓包(stop):
在 QuickExec
中输入 stop
字符串,可以停止 Fiddler
抓包。如下图:
关闭 Fiddler:
在 QuickExec
中输入 quit
字符串,去关闭 Fiddler
。
过滤响应 Content-Type:
在 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 查找:
对目标主机执行 DNS
查找并在 LOG
选项卡上显示结果。如下图:
监听额外端口:
我们可以用 Fiddler
来监听其他端口,语法格式:
!listen *PORT [CERTHOSTNAME]*
例如:
!listen 8889
!listen 4443 localhost
!listen 444 secure.example.com
Capturing:
在 Fiddler
的右下角,有一个小图标(Capturing
)。我们可以通过点击改图标去启用或禁用 Fiddler
抓包功能(即 Fiddler
是否被配置为系统代理)。如下图:
上图中,我们可以看见有一个 Capturing
图标。如果我们能够看见该图标,则表示 Fiddler
当前处于抓包中。如果此处没有该图标,则表示 Fiddler
没有抓包。
All Processes:
在 Fiddler
中,我们可以通过左下角查看当前 Fiddler
正在抓取哪些进程的 HTTP
数据报文。如下图:
上图中,表示 Fiddler
正在抓取所有进程的 HTTP
数据报文。其中还支持如下选项:
HTTP
报文,和禁用抓包效果一致,即在 Web
会话列表不显示任何会话
Breakpoint:
断点,调试器的功能之一,可以让程序中断在需要的地方,从而方便其分析。Fiddler
也支持断点功能,下面将介绍 Fiddler
提供的全局断点。全局断点分为:
Fiddler
开启断点功能非常简单,只需要点击状态栏从左到右第三个框接口开启断点功能。如下图:
上图中,断点开启按钮默认是一个空白,表示没有开启断点。如果我们点击一次,则将开启全局请求断点,如下图:
如果我们继续点击一次,则将开启全局响应断点,如下图:
如果我们再次点击一次,则取消全局断点功能。
示例:
演示全局请求和全局响应断点,如下图:
上图中,某些部分请求和响应均处于断点中。那么,我们该如何取消这些断点呢?
方式一:逐个释放断点,选中被打断点的请求,点击 Run to Completion
按钮释放断点。如下图:
方式二:释放全部断点,点击工具栏的 Go
按钮,如下图:
Session Counter:
显示当前抓取的总会话数,以及选中的会话数,如下图:
Status Information:
默认情况下,显示选中的第一个会话的 URL
。该面板还可以显示操作结果的概要信息,比如何时加载或保存 SAZ
文件。如下图:
这里需要使用到过滤器,点击 Filters 按钮
勾选 Use Filters
(使用过滤器)
Host Filter
选择 Show only the following Hosts
,在文本框中输入 IP
地址,用 ;
隔开,然后再点击 Changes not yet saved.
保存即可
如果想要去掉 URL
中包含 css
、js
、image
等包,可将 Hide if URL contains
也勾选上
之后抓取的包就只有跟你所设置 IP
相关的包了
默认情况下 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
。
首先得保证手机和电脑在同一个局域网(连接着同一个 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
做了一些防抓包的处理也是很正常的
在某些场景中,可以发送多个请求,这些请求除了某个有序的数字外,其他完全相同。如下图:
上图中,是一些图片,这些图片名称基本一致,只是名称的序号不一样。我们可以利用 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 要用当前的请求号替换该字符。
在 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
,一般情况下,只要启用了 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) 使用手动代理配置
问题一:APP 访问 Fiddler 时访问不到页面
首先确定是否开启 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