今天就先来看看Fiddler的功能。
Fiddler,最容易看到的就是快捷工具栏中的 Replay 按钮
解释下:
Reissue the selected requests. 重发选中的请求
Hold CTRL to reissue unconditionallly. 选中请求按住 CTRL 键,点击Replay时无条件重发选中的请求(什么是条件请求、无条件请求见文末)
Hold SHIFT to ressue multiple times. 选中请求按住 SHIFT 键,点击Replay时可以设置重发请求的次数
如果你想学习Fiddler抓包工具,我这边给你推荐一套视频,这个视频可以说是B站播放全网第一的Fiddler抓包工具教程,同时在线人数到达1000人,并且还有笔记可以领取及各路大神技术交流:点击文章最下方卡片‘
零基础玩转Fiddler抓包在测试领域应用实战!_哔哩哔哩_bilibili【Python接口自动化测试笔记及视频源码 +微信:mashang-nn 备注(b站555)即可通过 收藏等于白嫖,点赞三连才是真情!】, 视频播放量 1349、弹幕量 2、点赞数 4、投硬币枚数 2、收藏人数 20、转发人数 0, 视频作者 自动化测试码尚科技, 作者简介 领取笔记加微信:mashang-nn 备注:B站555,相关视频:2023年B站最新Jmeter接口测试实战教程,精通接口自动化测试只需要这一套视频,从0玩转fiddler抓包在测试领域的四大应用实战!,15天学会性能测试,通俗易懂详细教学,Jmeter性能测试实战(集群压测,全链路压测,性能调优,瓶颈分析)极速掌握,干就完事!,B站福利!Web自动化测试从0-到项目实战教程,免费学!!!,webdriver-helper自动化测试实战,用Postman轻松玩转接口自动化测试,2023B站最全RobotFramework自动化测试框架零基础入门到实战!(更新版),Fiddler抓包工具和charles抓包工具实战教学,App自动化测试Appium+UiAutomator2技巧,JMeter + Ant接口自动化测试并输出HTML报告https://www.bilibili.com/video/BV14g4y1H7vv/?spm_id_from=333.999.0.0
操作示意图:
结果视图:
其次,可以选中URL后,通过鼠标右键菜单进行请求重发
逐一说明:
① Reissue Requests:重发选中的请求(快捷键:R)
② Reissue Unconditinally:无条件重发选中的请求(快捷键:U)
③ Reissue and eidt:重发并编辑,会打开一个加了断点的请求,可以进行请求和响应数据的修改(快捷键:E)
此时会打上行断点和下行断点。即在响应前、响应后加上断点,方便对请求数据和响应数据的修改。
点击 Break on Response 后:
PS:如果要针对某一请求打请求断点,可以通过在Fiddler左下角命令输入框中执行 bpu 要打断点的URL 实现,如果要打响应断点,可以通过执行 bpafter 要打断点的URL 实现。如: bpu http://www.51ste.com
④ Reissue and verify:重发并验证,重新发送请求,并验证其请求结果,会自动加标识(背景颜色)(快捷键:V)
⑤ Reissue Sequentially:重发序列,打开一个数量设置界面,设置需要重发多少次请求(快捷键:S)
即与 Hold SHIFT to ressue multiple times 一样(真的一样吗?待细心的朋友发现其中的差异)。
⑥ Reissue from Composer:重发并打开composer界面,可以编辑或发送
⑦ Revisit in IE:在IE上发起这个请求
给大家两个思考题(下来你可以动手尝试下,答案小酋将附在下篇Fiddler文章末尾)
1、支持选中多个请求重发吗?
2、Fiddler如何通过Reply,结合断点对指定请求做并发性测试?
知识扩展:什么是条件请求和无条件请求?
如果客户端发送的是一个条件验证(Conditional Validation)请求,则web服务器可能会返回HTTP/304响应,这就表明了客户端中所请求资源的缓存仍然是有效的,也就是说该资源从上次缓存到现在并没有被修改过。
条件请求 可以在确保客户端的资源是最新的同时避免因每次都请求完整资源给服务器带来的性能问题。
无条件请求 则保证每次请求返回的都是完整的资源。
如何辨别条件请求?通过下面来加深理解条件请求与无条件请求。
当客户端缓存了目标资源但不确定该缓存资源是否是最新版本的时候,就会发送一个条件请求。
在Fiddler中,你可以在 Inspector > Headers 查找相关请求头,这样就可以辨别出一个请求是否是条件请求。
在进行条件请求时,客户端会提供给服务器一个If-Modified-Since请求头,其值为服务器上次返回的Last-Modified响应头中的日期值,还会提供一个If-None-Match请求头,值为服务器上次返回的ETag响应头的值:
服务器会读取到请求头中这两个的值,判断出客户端缓存的资源是否是最新的:
1)如果是的话,服务器就会返回HTTP/304 Not Modified响应,但没有响应体。客户端收到304响应后,就会从缓存中读取对应的资源。
2)如果服务器认为客户端缓存的资源已经过期了,那么服务器就会返回HTTP/200 OK响应,响应体就是该资源当前最新的内容。客户端收到200响应后,就会用新的响应体覆盖掉旧的缓存资源。
注意:
只有在客户端缓存了对应资源且该资源的响应头中包含了Last-Modified或ETag的情况下,才可能发送条件请求。
如果不改变网站内容,让Fiddler不返回304而返回一个包含响应体的HTTP/200响应,此时就可以用无条件重发。(省略条件请求头来实现无缓存请求)