Fiddler抓包
一.Fiddler下载
fiddler是一个http协议调试代理工具,能够记录并检查所有电脑和互联网之间的通讯。可以截取网站的请求信息;观察请求与返回的信息,定位bug是前端还是后端;可以拦截请求数据,对请求数据进行修改,经过前端界面的限制;模拟接口进行数据请求
下载地址https://www.telerik.com/download/fiddler,下载成功后,可以在电脑的开始栏打开fiddler,界面:
二.设置fiddler抓取https请求
1.下载的fiddler默认是抓取http请求,需要配置相关信息,Tools--->options--->HTTPS
2.第一次下载使用,选中选项会自动跳出证书提示,同意即可
3.选中这三个选项,然后点击Actions中的Export Root Certificate Desktop,
5.会出现下面提示,电脑桌面上会出现证书图样
6.需要在浏览器上导入这个证书,谷歌操作:设置-->隐私和安全--->安全--->管理证书,在受信任的根证书颁发机构中导入刚刚下载到桌面的证书,重启fiddler,就可以抓取HTTPS请求了
三.抓取HTTP/HTTPS协议:
以QQ音乐为例,抓取到该请求后,fiddler左侧会显示
在选项卡的Inspectors,可以查看HTTP请求和响应的报文格式,上面显示的内容是http请求的详细格式,下面内容是http相应的详细格式,Raw查看headers的详细信息
fiddler抓取https请求的原理:
当fidler作为一个代理服务器时,会向客户端颁发一个证书(就是我们在设置抓取https请求时的证书),客户端安装这个证书以后,所有的https通信都会通过fiddler,并且由fiddler进行解密,一旦https数据包被解密,fiddler就会像处理http请求一样处理它们,允许用户查看和修改请求和响应内容。
打开fiddler后网络选项展示:控制面板--->Internet选项--->连接--->局域网设置--->高级
四.抓包工具原理
Fiddler相当于是一个代理,代理服务器,代理的地址是127.0.0.1,端口号是8888
fiddler启动后,会把Internet选项中的代理地址改为127.0.0.1,端口改为8888。
是客户端和服务器之间的中介,可以用来捕获浏览器与服务器之间的所有网络通信,包括请求和响应,并且提供了修改这些数据的能力,当fiddler作为代理服务器时,会自动设置本机的8888端口,意味着所有通过该端口发出的网络请求都会经过fiddler
五.fiddler设置断点
在测试过程中,为了测试覆盖率,往往需要执行很多场景的用例来验证某一功能在各种场景下的业务处理能力,包括正常、异常的场景;而仅仅通过页面端来发起校验,往往是不能够模拟所有场景的。另外,如果系统调用的有外部接口,根据外部接口的不同返回结果进行不同的逻辑处理,那么就需要外部接口的提供方配合我们进行测试,而在实际操作中这是很难做到的,这个时候我们就可以使用fiddler来篡改接口返回的数据,构造我们需要的测试场景,可以提高测试效率。
1.设置断点篡改请求参数
fiddler一打开就是默认抓取所有的浏览器数据,需要先设置过滤,抓取特定网页的数据,Filters--->use Filters
然后点击Actions--->Run Filterset now
设置断点,在Rules--->Automatic Breakpoints--->Before requests(在发送到服务器之前拦截)
例如登录接口,先打开网页输入登录账号和密码(不点击登录),然后在fiddler设置断点模式,再在页面上点击登录按钮,这样就可以把这个请求拦截下来
然后我们可以修改请求参数,修改密码为错误的密码,点击发送请求,响应结果:
此时页面上的显示也提示账号或密码错误
2.设置断点篡改响应数据
Rules--->Automatic Breakpoints--->After response(服务器返回数据后拦截)
例如登录接口,输入正确的账号和密码后,发送请求返回的是项目的主页面,修改页面的元素内容
页面输入账号密码,fiddler设置After response断点,点击页面登录按钮,拦截到该请求,fiddler点击Run to completion,修改页面上的html的title标签,再次run
页面上的标题也会发生变化
六.fiddler抓取APP数据
前提:手机和电脑在同一个局域网内
1.配置fiddler:Tools--->options--->connections--->allow remote computers to connect,允许别的机器把HTTP/HTTPS请求发送到Fiddler上来,配置完成后重启fiddler
2.配置手机,获取电脑的IP地址(或者直接看fiddler右上角online显示),打开手机的网络服务,在连接到的WiFi右键修改网络,代理改为--->手动,服务器主机名为fiddler获取的IP地址,端口号为8888,保存后安装证书,手机浏览器访问fiddlerIP地址:8888,找到“FiddlerRoot certificate”下载安装,fiddler即可抓取手机数据
七.fiddler过滤功能Filters
Filters可以过滤掉与测试项目无关的请求
filters界面:
Actions(指定行为):
- Run Filterset now,使用当前的过滤规则
- Load filterset ,加载过滤规则(以前保存过的)
- save filterset,保存当前的过滤规则(实际使用时可以针对每个应用测试设置一套过滤规则)
1.Hosts主机过滤
- No Host Filter:默认选项,不设置过滤主机IP条件
- Hide the following Hosts:隐藏输入到下面文本框中的Hosts
- Show only the following Hosts:仅显示输入到下面文本框中的Hosts
- Flag the following Hosts:标识下边输入的主机名的会话
2.Client Process客户端进程过滤
- Show only traffic from:你可以指定只显示哪个Windows进程中的请求,右侧会列出当前所有的 Windows 进程
- Show only Internet Explorer traffic:只显示IE发出的请求
3.Request Headers根据请求头过滤
- Show only if URL contains:仅显示URL中包含指定字符串的请求
- Flag requests with headers:标记带有特定header的请求,例如想标记headers中有token的数据,勾选填写token
其他过滤设置:
八.fiddler的弱网测试Rules
网络设置:Rules——>performances——>Simulate Modern speeds,再次访问网站时速度就慢了
也可以自己设置网络环境:Rules——>Customize Rules,打开Fiddler ScriptEditor框,查找m_SimulateModem标志位,默认为300ms,可以适当修改(例100ms),更改后,再选择Rules——>performances——>Simulate speeds进行弱网测试
九.fiddler的mock测试mock
当遇到一些不容易构造或者不容易获取的对象,用一个虚拟的对象来创建进行测试。AutoResponder—————>勾选enable rules,创建需要发送的数据,勾选add rules,将会话中的某个请求拉取过来,我们可以自己设置一个文件,填写想要的返回结果,导入,再次发送请求