作者简介:博主是一位测试管理者,同时也是一名对外企业兼职讲师。
主页地址:【Austin_zhai】
目的与景愿:旨在于能帮助更多的测试行业人员提升软硬技能,分享行业相关最新信息。
声明:博主日常工作较为繁忙,文章会不定期更新,各类行业或职场问题欢迎大家私信,有空必回。
说到网络调试工具,相信在软件测试行业中的小伙伴几乎都听过Fiddler的名字,没错,它与Wireshark,Charles,Tcpdump都是市面上主流的网络调试工具。而作为一个合格的软件测试工程师,网络相关的基础技能与知识又是不可或缺的一部分,那么今天就由博主带着大家来一起来看看Fiddler的基础安装与使用吧。
说到Fiddler,其实它作为一个产品系列,其下有5类产品分支,我们先来看下分别介绍一下。
Fiddler Classic (Fiddler 4) :这是大家日常最常用的产品,也是最早推出的版本。它是一款用于捕获、分析和修改网络流量的工具。Fiddler Classic提供了丰富的功能,可以用于调试Web应用程序、检查API请求和响应、分析性能问题等。优点在于界面相对友好,可以随时查看请求和响应的详细信息,以及进行一些高级的调试和修改。
Fiddler Everywhere:这个是跨平台版本的Fiddler,支持在Windows、macOS和Linux系统上运行。它与Fiddler Classic的功能类似,可以捕获和分析网络流量。鉴于跨平台的特性且界面在不同操作系统上都有良好的适应性,使用户可以在多个平台上使用相似的功能。
FiddlerCap:简化版Fiddler,轻量级的专用版本,用于快速捕获和共享网络流量。通常用于临时的网络问题排查,用户可以捕获一段时间的网络流量,然后将捕获的数据保存为文件,方便与团队成员或客户进行分享或分析。
Fiddler Jam:Jam版本其实是一个协作工具,用于团队之间的交流和问题解决。Fiddler Jam允许团队成员在浏览器中捕获和共享网络流量,可以添加注释、标记问题,并与其他成员进行实时交流,从而更好地协作解决问题。
FiddlerCore:这是一个可进行嵌入的.net库,允许开发人员将Fiddler的功能嵌入到自己的应用程序中。FiddlerCore可以在应用程序内部捕获和分析网络流量,这对于在定制的应用程序中集成网络调试功能非常有用。
官网中对于每个版本的Fiddler也有非常明确的定义和应用场景,大家可以根据自己的日常测试场景与任务需求来有针对的下载与使用。
这里就以最常用的Fiddler Classic为例进行介绍,我们在搜索引擎中搜索fiddler
并访问Fiddler官网。
在官网中点击Try For Free
下拉框,并选择Fiddler Classic产品。
接下来会跳转至以下界面,这里我们把必填的信息填写一下,第一栏中填写你使用这个软件的目的,任意选择一个即可,邮箱没有限制,163,QQ等等都可以用。国家与地区进行选择后勾选下面的同意用户许可协议,两者之间的那个不要勾选,不然你的邮箱会一直收到Fiddler的产品推广与更新信息邮件。最后我们点击Download For Windows
按钮进行下载即可。
完成后会跳转至这个界面,接下来就可以等待下载完成了。
安装完毕后会自动跳转到网页,提示安装成功,此时我们只需要关闭掉安装程序与该网页即可。
我们首先打开Fiddler,第一次进入软件后我们会收到一个关于AppContainer
相关的提示,因为windows操作系统上存在一种名为AppContainer的隔离技术,它会干扰沉浸式应用程序和Edge浏览器的流量捕获,所以Fiddler会建议开启winConfig工具来进行流量捕获,提示界面中点击yes则会跳转至网页获取更多相关的信息,点击no则关闭提示框,而选择cancel的话,下次再次进入软件则不会再跳出该提示。这里可以选择no,我们的winConfig工具可以在Fiddler中进行开启。
我们在软件的菜单栏选择Tools
➡ Options
选项,进入到如下的选项界面,然后勾选Decypt HTTPS traffic
,这一步是让Fiddler可以解析HTTPS协议的流量。
勾选该选项后会弹出一个提示对话框,这里是告知到用户如果需要截获HTTPS协议的流量,Fiddler会生成一个唯一的根证书,需要将windows配置为信任该证书以防止后续出现安全警告,这里我们选择yes,将证书添加至可信CA列表,在之后弹出的windows安全警告窗口中选择“是”。
提示:
如果不是第一次操作或者勾选Decypt HTTPS traffic
后没有弹出证书信任提示框,我们可以在HTTPS选项卡中的Actions
按钮中选择Trust Root Certificate
进行根证书的信任操作。
完成上面的信任证书操作后,我们将下方的Ignore server certificate errors (unsafe)
也一起勾选上。
接下来,我们选择Connections
选项卡,这里需要注意一下,我们的Fiddler服务端口号,这里你的本地环境如果有其他服务已经占用了8888的端口号的话记得要按需改一下,避免端口占用导致Fiddler的代理服务失效。另外如果需要对移动端进行抓包与网络调试的话就需要勾选下面的Allow remote computers to connect
的选项。当然,这个选项的功能不单单是只针对移动端,因为我们的本机Fiddler开启后会提供对应的网络调试服务,而开启这一选项就等于是允许其他设备通过网络连接到正在运行 Fiddler 的本机,这样就能在本机上通过Fiddler查看连接过来的远程设备的流量、响应与请求数据,在测试场景中往往有一些需要团队合作与远程协助的情况,而这一功能也非常适合上述所说的场景。当然,远程连接存在一定的安全风险,我们可以在需要长时间运行Fiddler的情况下对信任的设备进行安全证书或通道加密等措施,确保所有连接进来的设备都是可信的。
设置完以上的这些基础配置项之后,我们来到Fiddler的主界面,从界面上来大致区分的话可以分为工具栏、会话列表、命令行、HTTP请求区、HTTP响应区这几个区域,这些都是我们日常会经常涉及到的一些功能模块。
工具栏上的功能图标不算少,如果是第一次用的话大家可能会比较晕,我们就从左到右依次介绍一下每个功能图标所代表的功能。
WinConfig图标:这个就是我们之前第一次进入Fiddler提示框中所说的那个隔离技术,当我们的一些应用与edge浏览器遇见Fiddler无法捕获流量的时候就可以使用这个按钮来解除AppContainer隔离技术所带来的影响,在AppContainer Loopback Exemption Utility中选中我们所需要解除的应用程序然后选择Exempt即可;
对话泡的图标:该按钮可以为所选定的session添加注释,一般来说我们在Fiddler中需要为某些session添加一些特别的备注的时候就可以使用这个按钮,在注释输入框添加注释之后可以在session列表(会话列表)中的comments列看到你添加的注释,看不到可以适当的把软件最大化或调整会话列表的宽度;
Replay图标:这个是把当前选中的请求重新发送一遍,按住CTRL为无条件重发,按SHIFT是多次重新发;
叉形图标:删除会话列表中的特定session,类型可以在下拉子菜单中选择,按CTRL+X可以立即清除列表;
GO图标:恢复当前在断点处暂停的所有session,按住SHIFT只恢复选中的session;
Stream图标:这个是流模式的开关,正常情况下我们的Fiddler是出于缓冲模式的,简单来说在缓冲模式下我们可控制服务器的响应,修改响应中的各类参数;而一旦切换成流模式以后,就更加接近真实服务器的交互体验,服务器响应什么我们就只能拿到什么数据且无法修改;一般我们在测试音视频流的场景中,使用流模式的会比较多,日常的其他测试使用默认的缓冲模式即可;
Decode图标: 这个表示对所选择的响应进行解码操作,对于一些已经编码了的内容我们就可以使用decode操作来对其进行解码,比如一些用了编码的内容会在Fiddler的HTTP响应区域上方显示Response body is encoded. Click to decode
这样的提示,此时我们再使用decode按钮对其解码即可;
Keep图标:这个是让我们可以在会话列表中保留session个数的功能,如果在长时间的网络流量捕获的情况下,会话列表会存有大量的session记录,那么列表就会越来越长,非常的不利于查到所需要的记录,此时我们就可以使用keep这个功能,根据按钮下的子菜单中要保留的会话个数来控制列表的长度;
Any Process图标:Fiddler默认是捕获连接服务的设备上的所有请求与响应的,所以这个功能就是提供了对于特定进程与程序的请求与响应的捕获的功能,我们使用的时候只需要将其用鼠标拖拽至你想要捕获数据流量的应用程序上,Fiddler就会只捕获该应用程序的流量数据。选中某一个应用程序后,原来的Any Process处就会变成对应的程序名与其进程ID,如果需要取消选择的话可以直接在该按钮处右键;
Find图标:就如图标与名字所示,在Fiddler中同样也有搜索功能,除了直接搜索session的一些特定信息外,可以制定各种维度的搜索条件,session类型、字符匹配、正则、二进制、解码压缩等等;
Save图标:和搜索一样,我们在日常的工作中经常需要将一些已经捕获到的session保存下来,这个按钮就是这样的功能,保存下来的文件格式为SAZ,还可以指定特定的内容与类型进行保存,以便下一次继续分析与使用;
相机图标:这个是截图按钮,可以对目前的软件状态进行截图,但Fiddler的截图与一般的软件截图有点不太一样,首先它的截图存在一个5秒的倒计时,如果想直接截图并跳过倒计时可以按住SHIFT再截图,第二就是截下来的图并不是直接保存在某一个路径的,触发截图后,会发起一个图片请求,我们在会话列表中选中它就可以在Inspectors中查看报文,图片是采用base64进行编码的;
秒表图标:这是一个简易的计时器功能,点击后会自动进行计时,左键停止,再次左键再激活,右键清零,这个一般在测试接口或服务的响应时会用到,算是一个小工具吧;
Browse图标:这个可以将指定的session用指定浏览器进行打开,点击图标右侧的小箭头就可以选择本机上存在的各类浏览器进行session的访问;
Clear Cache图标:就如字面的意思,清除缓存,这里清除的是WinINET的缓存,当然也可以使用CTRL+该按钮来清除一些永久性的Cookies;
TextWizard图标:这是一个数据文本编码的小工具,一般我们在分析各类协议数据的时候会用到,但对软测来说使用的场景就比较少了,一般在做数据的编解码以及字符串的各种哈希值计算的时候这个工具真的是非常的趁手;
Tearoff图标:这个按钮是将右侧的HTTP请求区域与HTTP响应区域与Fiddler进行一个分离,两大区域会单独形成一个窗口继续显示,也是方便某些场景下的数据观察与分析使用;
最后两个的MSDN搜索与在线帮助手册就不展开篇幅进行介绍了,大家有需要可以自行体验。
在HTTP请求区域的上方,我们同样可以看到有一排功能栏,这个则是我们日常进行查看与分析数据是所经常需要用到的功能模块。
Get Started:初始页,上面显示了一些Fiddler相关的新手基础操作的指引与软件推广信息,如果需要关闭的话就将页面左下角的Show on startup取消勾选即可;
Statistics:选中一条session后我们就可以在该选项卡中看见session的一些基本信息,点击下方的Show Chart还可以显示对应的数据饼图,自上而下包含的信息大致有:选中session的个数、HTTP请求头和请求体中向外发送的字节总数、HTTP请求头和请求体中接收到的所有字节数、请求实际执行情况、所有选中会话解析DNS所花费的时间的总和、所有选中会话解析DNS所花费的时间的总和、所有选中会话在HTTPS握手上所花费的时间总和、已用总时间、响应字节数、选中的流量在不同语种(locale)地区和连接方式;
Inspectors:该功能用于显示会话列表中选定会话的请求和响应信息,选中该选项卡后,下方区域就会变成HTTP请求区域与HTTP响应区域,在该选项卡下还存在多个子选项卡,分别代表着各类显示风格与请求和响应内的其他组成内容,这个会在后续的文章内详细说明;
AutoResponder:这个功能也是软测中用的较多的功能之一,它支持创建规则,可以在响应请求时自动触发,比如返回之前捕捉的响应,却不需要访问服务器。打开该选项卡后,可以看见一些勾选框与输入框,我们来依次的说明一下:
Enable rules
- 勾选后用来控制是否启用自动响应功能;
Unmatched requests passthrough
- 钩选框用来控制当会话不匹配任何指定的规则时会发生什么。如果启用该选项,不匹配的请求会正常发送到服务器。如果没有启用该选项,Fiddler则会为所有和该规则完全不匹配的HTTP请求生成404的响应。如果客户端发送的是条件请求,其中包含请求头If-None-Match或If-Modified-Since,那么会返回304的响应;
Enable Latency
- 选项控制匹配某个规则的请求是立即执行,还是延迟Latency字段中所指定的毫秒数。如果没有启用该选项,Latency字段就不会显示。使用这个选项可以更准确地模拟现实中的服务器响应,取消该选项可以提升性能;
Add Rule
- 添加一条新的自动响应规则;
Group
- 点击该按钮对多个规则进行分组,便于统一开启/禁用规则;
Import
- 该按钮可以导入之前捕获的SAZ文件,导入文件中的每个会话会被用于规则列表中生成新的规则。除此之外还可以导入FARX文件,它包含从 AutoResponder 选项卡导出的规则;
Composer:该功能支持手动构建和发送HTTP、HTTPS 和 FTP请求。此外,还可以从会话列表中拖拽会话,把它放到此功能中,把该Session的请求复制到用户界面。点击Execute按钮后,Fiddler就会把请求发送到服务器端;同样的在子选项卡的Options中有着一些其他选项,分别为:
Inspect Session
- 请求执行后,Inspectors选项卡会被激活,这样就可以查看请求的执行结果,方便进行分析;
Fix Content- Length header
- 这个可以控制Composer是否会自动添加或修改Content-Length请求头,表示请求体的大小,如果在创建请求的时候不清楚大小,建议打开;
Follow Redirects
- 这个是控制Composer是否自动使用响应的Location头,如果选中该选项,Composer在失败之前最多会执行 10 次重定向;
Automatically Authenticate
- 指定Composer是否会自动响应服务器的401或407的认证需求。如果开启,会使用 Fiddler所运行当前Windows用户的证书自动响应这些请求;
Tear off
- 与之前工具栏的Tear off功能相同,它会将Composer作为独立的悬浮窗口并打开;
Fiddler Orchestra Beta:这个是Fiddler的新插件,使用之前需要在该功能页面下下载对应OS版本的客户端,该插件可以将远程设备端利用Orchestra服务并将相同的数据内容复制并传回给Fiddler的工具,其实这个功能平时的使用场景不是太多,一般用来解决移动端或远程设备无法直接利用Fiddler捕获数据的情况,具体的使用会在后续的文章中详细介绍;
FiddlerScript:这个选项卡一般是前端开发用来进行调试使用,对于开发过程中一些业务或复杂逻辑的功能调试,都会使用这个选项卡。就软测角度来说,仅作扩展,可以不了解;
Log:该选项卡收集日志消息字符串,这些字符串是由扩展、FiddlerScript或Fiddler本身生成的。Fiddler 会记录各类的应用事件;
Filters:可以根据指定的各类条件,对数据流量进行筛选,我们自上而下来进行下介绍:
Use Filters
- 勾选后根据对应的条件启用过滤功能;
Hosts
- 按区域进行过滤(Zone Filter),如果选择只显示局域网session(Show only Interanet Hosts),Fiddler 将只会列出属于局域网的session。如果选择只显示互联网的session(Show only Internet Hosts),Fiddler 将只会列出属于互联网的session;
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
- 根据请求头来进行条件筛选;以下是一些子选项的含义:
【Show only if url contains】 - 选项框支持基于 URL 隐藏某些请求,仅仅显示我们感兴趣的请求。可使用前缀 EXACT 来限定大小写敏感;
【Flag requests with header】 - 选项支持指定某个HTTP请求头名称,如果在 Web 会话列表中存在该请求头,会加粗显示该会话;
【Delete request header】 - 选项支持指定某个 HTTP 请求头名称,如果包含该请求头,会删除该请求头;
【Set request header】 - 选项支持创建一个指定了名称和取值的 HTTP 请求头,或将 HTTP 请求头更新为指定取值;
Breakpoints
- 根据断点的指定条件来进行筛选;以下是一些子选项的含义:
【Break request on POST 】 - 选项会为所有POST请求设置断点;
【Break request on GET with query string】 - 选项会为所有方法为 GET 且 URL 中包含了查询串的请求设置断点;
【Break on XMLHttpRequest】 - 选项会对所有能够确定是通过 XMLHttpRequest 对象发送的请求设置断点;
【Break response on Content-Type】 - 选项会为所有响应头 Content-Type 中包含了指定文本的响应设置响应断点;
Response Status Code
- 同样的道理,根据指定的响应状态码来进行筛选;子选项的说明如下:
【Hide success(2xx)】 - 选项会隐藏状态码在 200 到 299 之间的响应;
【Hide non-2xx】 - 隐藏状态码不在 200 到 299 之间的响应;
【Hide Authentication demands(401,407) 】 - 选项会隐藏状态码为 401 和 407 的响应,隐藏身份验证请求;
【Hide redirects(300,301,302,303,307)】 - 选项会隐藏对请求进行重定向的响应;
【Hide Not Modified(304)】 - 选项会隐藏条件状态请求中状态码为 304 的响应;
Response Type and Size
- 通过响应的类型与大小来指定条件进行筛选;子选项的说明如下:
【Show all Content-Types】- 显示所有的响应,不进行任何过滤;
【Show only IMAGE/*】 - 只显示图片类型的响应;
【Show only HTML】 - 只显示HTML文档响应;
【Show only TEXT/CSS】 - 只显示CSS层叠样式表响应;
【Show only SCRIPTS】 - 只显示脚本类型响应;
【Show only XML】 - 只显示XML类型响应;
【Show only JSON】 - 只显示JSON类型的响应;
【Hide IMAGE/】- 隐藏图片类型的响应;
【Hide smaller than】 - 指定隐藏响应体小于指定的字节数的响应;
【Hide larger than】 - 指定隐藏响应体大于指定字节数的响应;
【Time HeatMap】 - 这个比较特别一点,Fiddler会根据服务器返回的定响应所需要的时间为每个session设置背景颜色,不超过 50 毫秒的响应会以绿色显示;50 毫秒到 300 毫秒之间的响应不着色;300 毫秒到 500 毫秒之间的响应以黄色显示;超出 500 毫秒的响应以红色显示;
【Block scriptfile】 - 启用的话,当返回的响应头指定的Content-Type为脚本时,则返回404;
【Block imagefile】 - 同理,当为图像时,返回404;
【Block SWF file】 - 同理,当为flash时,返回404;
【Block CSS file】 - 同理,当为CSS时,返回404;
Response Headers
- 根据响应头的各类条件来进行筛选;子选项的说明如下:
【Flag responses that set cookies】 - 勾选之后,所有响应头包含Set-Cookie的响应都会以粗体显示;
【Flag responses with header】 - 指定HTTP响应头名称,如果响应中该HTTP头存在,该会话在会话列表中会以粗体显示;
【Delete response header】 - 同理,如果该HTTP头存在,则从响应头中删除;
【Set response header】 - 可以在此输入框中创建或更新响应头;
以上就是Fiddler的下载安装与界面的基础功能说明,总体来说Fiddler对于软测的日常测试活动的辅助作用还是相当大的,无论是被测对象的网络请求和响应分析、性能分析和优化、性能分析和优化、会话分析其都有着比较优秀的表现,可以说适用场景是非常的广泛了。后续博主将继续为大家带来关于Fiddler的一些实用的日常实用技巧与进阶场景的实操讲解。