Fiddler使用(一)
(一)下载,安装与配置
1.下载安装fiddler
fiddler下载链接:Download Fiddler Web Debugging Tool for Free by Telerik
我们选择一个用途后,选择邮箱,然后就可以下载了
我们选择一个目录下载后,会有一个.exe文件,那我们双击这个文件就可以打开fiddler了
2.下载/删除证书
我记得第一次下载后会给我们跳出一个下载证书,我们需要进行一个下载(因为如果不进行下载,我们fiddler是只能抓http包的,不可以抓https的包,那下载证书之后,我们就可以抓到https的包),如果我们这里没有跳出下载证书,我们也可以在工具栏的Tools中点击options
会给我们跳出这样一个框
点击https然后全部勾选上,再点击Actions下载证书就可以了(我们只需要一直点击yes即可)
这里我们再来看一下Decrypt HTTPS traffic中的选项说明:
from all processes (抓取所有的https程序,包括电脑程序(web和pc应用)和app)那这个app如何被fiddler抓包我们一会再说
from remote clients only(只抓取手机app的https请求)
from browsers only (只抓取web的https请求)
from non-browsers only(只抓取除web之外所有https请求)
注:如果HTTPS请求出问题,比如:您的链接不是私密链接,我们可以检查是否是证书没有正确安装,我们可以重新勾选,并且重新安装即可
删除证书:我们需要点击刚刚actions中的reset all certificates,然后一直确定,此时fiddler就会删除证书,并且重新创建新的根证书
此外我们还要做一些其他操作,我在网上看我们还需要删除系统的证书,使用win+r,输入certmgr.msc打开系统证书管理,查找颁发者是DO_NOT_TRYST_FiddlerRoot开头的证书,删除即可
然后我们还需要删除浏览器证书,找到隐私设置和安全
同样的删除有FiddlerRoot字样的证书并删除
但是一般情况下我们也用不到删除证书
3.Connections配置(连接管理)
同样是打开options,然后我们发现有一个Connections点击
那我们可以在这里设置fiddler的端口(默认8888)
然后我们一般需要勾选Allow remote computers to connect 那这个看名字也很明显,是一个允许我们远程电脑连接的(这里说的远程电脑,一般我们指app)
然后点击ok即可
(二)fiddler的使用概述
1.抓包
我们都知道fiddler的最主要使用就是抓包,当我们打开fiddler之后,就会自动开始抓包
那我们怎么停止抓包呢,我们可以点击左下角
caputuring,那他旁边的这个all processes是什么?
我们打开看一下
all processes:表示抓取所有包
web browsers:表示只抓取web包
non browser:表示抓取除了web的包
hide all:表示都不抓取
我们点开一个包切换到raw
上半部分是我们的请求,下半部分是我们的响应,因为fiddler只能抓http和https的包,所以一定是这两个协议的包,那包的具体格式,我在http这篇博客有过讲解,可以回去看一下
应用层协议----HTTP-CSDN博客
注:fiddler和f12抓包的对比
我们学习了fiddler抓包,我们看f12是怎么抓包的
其实也是自动抓包 我们打开f12,点击这个网络,我们再点击fetch/xhr 然后就可以看到我们的一个请求了
这里就设计到一个两者的区别和相似点
相似点:都可以对http和https请求进行抓包
区别:f12无法抓取app端请求,但是fiddler工具可以完成
f12无法修改请求的数据,但是fiddler可以(因为fiddler是一个代理,具体我们一会再说)
f12可以查看前端数据信息,fiddler不可以看具体代码信息
2.接口测试
在进入fiddler之后,我们可以点击composer进入接口测试的一个界面
在这里我们可以选择我们请求的一个方法,比如post,get等,然后输入对应的url,同时可以设置对应协议和header中的数据,在request body可以设置对应的请求数据,然后点击excute发送请求。
再看右边的log request,如果我们想保存这些测试url,就可以勾选上,这样下次我们再次测试,就可以知识从中获取,或者我们把url和header,body的数据放到scratchpad中保存
问:fiddler,postman,jmeter都可以进行接口测试,介绍一下他们三者的测试特点?
首先就是fiddler,他主要作用还是抓包,我们在使用fiddler进行接口测试时,也可以方便的查看接口的请求和响应细节,支持手动发送自定义请求,适合对接口进行临时的调试和测试
postman是我比较喜欢的接口测试工具,因为他的界面是比较简洁易用的,支持各种http请求方法,可以方便地构造请求参数,请求头和请求体(主要是请求体),适合单个接口的测试和简单接口测试用例的编写
jmeter本身是用来进行一个性能测试的,可以模仿大量用户并发对接口的访问,所以也可以测试接口,那他的着重点在于能够对接口的性能指标进行详细的统计和分析,比如响应时间,吞吐量等,适合接口性能测试的一个场景
3.定位前后端bug
定位前后端bug也是依赖我们的抓包功能,我们抓到请求包后,可以对比文档,看看对应的url,方法,参数,请求头是否正确,那如果对不上文档,可能是前端的问题,否则可能是后端问题
我们同时可以查看响应信息,查看对应的响应状态码,就比如404,表示我们资源(#`O′未找到,可能是客户问题,那500就是服务器的一个问题,然后结合一下返回体,可以判断是否是服务器,也就是后端问题
4.构建模拟测试场景
我们可以通过拦截,然后修改请求或者响应参数(可以模拟前端发送不同参数情景也可以模拟后端返回不同数据的场景)那具体操作,我们一会再说
5.弱网测试
可以通过ctrl+r打开脚本编辑窗口,然后通过ctrl+f进行查找,我们默认可以查找300,这是默认的一个速度,如果你改了,还忘记改的数据了,我们可以搜索m_SimulateModem,然后修改上行速率和下行速率
我这里是进行了一点更改 这个500就表示,我们上传1kb的数据要延迟500ms,下载1kb数据需要延迟400ms,切记要使用ctrl+s进行保存,然后最最重要一点,我们更改完之后,需要手动去勾选
只有勾选了,才开启了弱网
然后取消勾选即可恢复正常网络环境
6.前端性能分析及优化
我们可以观察timeline选项卡,了解前端页面资源的加载顺序,查看是否存在阻塞渲染的资源,还可以观察content-length字段,了解资源的大小,过大资源会导致加载时间长,影响性能
(三)fiddler的工作原理
fiddler本质是一个代理服务,在我们启动fiddler后,会在本地建立一个代理服务器,默认监听8888端口,当客户端访问网络时,这个代理服务器会进行请求拦截,响应拦截
1.请求拦截
fiddler截取客户端发送的请求数据包,然后解析并且展示给我们客户端,也就是我们抓包的上半部分,然后fiddler再把请求发送给服务器
2.响应拦截
fiddler收到请求并返回响应时,fiddler会截取获得该响应数据包,同样进行解析,然后在fiddler中展示给用户,让用户查看服务器返回的具体信息,然后把响应返回给客户端
我们用一张图来展示一下
如果没有fiddler,我们是客户端发送请求到服务器,然后服务器返回响应给客户端,有了fiddler之后,就相当于有一个中转站,通过中转站进行转接