Fiddler之Replay功能详解

今天就先来看看Fiddler的功能。

Fiddler,最容易看到的就是快捷工具栏中的 Replay 按钮

解释下:

Reissue the selected requests.  重发选中的请求
Hold CTRL to reissue unconditionallly. 选中请求按住 CTRL 键,点击Replay时无条件重发选中的请求(什么是条件请求、无条件请求见文末)
Hold SHIFT to ressue multiple times. 选中请求按住 SHIFT 键,点击Replay时可以设置重发请求的次数

操作示意图:

结果视图:

其次,可以选中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响应,此时就可以用无条件重发。(省略条件请求头来实现无缓存请求)

总结:

感谢每一个认真阅读我文章的人!!!

作为一位过来人也是希望大家少走一些弯路,如果你不想再体验一次学习时找不到资料,没人解答问题,坚持几天便放弃的感受的话,在这里我给大家分享一些自动化测试的学习资源,希望能给你前进的路上带来帮助。

 文档获取方式:

加入我的软件测试交流群:632880530免费获取~(同行大佬一起学术交流,每晚都有大佬直播分享技术知识点)

这份文档,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!

以上均可以分享,只需要你搜索vx公众号:程序员雨果,即可免费领取

【软件测试行业现状】2023年了你还敢学软件测试?未来已寄..测试人该何去何从?【自动化测试、测试开发、性能测试】

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/111176.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python——案例

题一:利用装饰器来计算函数的执行时间 代码: import timedef decorated(fn):def inner():a time.time() # func开始的时间 time.time记录时间fn()b time.time() # func结束的时间print(f"{fn.__name__}程序运行的总数时间:{b - a}秒"…

TP5.1 导出excel文件

在 ThinkPHP 5.1 中引入 PHPExcel(现在已被官方弃用,推荐使用 PhpSpreadsheet)时,可以按照以下步骤进行操作: 在 composer.json 文件中添加 PHPExcel(PhpSpreadsheet)的依赖项。找到 require 部…

Go 函数的健壮性、panic异常处理、defer 机制

Go 函数的健壮性、panic异常处理、defer 机制 文章目录 Go 函数的健壮性、panic异常处理、defer 机制一、函数健壮性的“三不要”原则1.1 原则一:不要相信任何外部输入的参数1.2 原则二:不要忽略任何一个错误1.3 原则三:不要假定异常不会发生…

04 接口隔离原则

官方定义 <<代码整洁之道>>作者罗伯特 C马丁 为 “接口隔离原则” 的定义是&#xff1a;客户端不 应该被迫依赖于它不使用的方法&#xff08;Clients should not be forced to depend on methods they do not use&#xff09;。 该原则还有另外一个定义&#xff1…

项目中 .env.development 与 .env.production 的区别

文章目录 一、项目中使用此两个文件的意义二、使用方式 一、项目中使用此两个文件的意义 我们在开发项目时&#xff0c;经常会有开发环境与生产环境&#xff0c;分别会对应不同的请求地址与各种不同的变量&#xff0c;这个时候我们就可以使用 process.env 去抓取这两个文件写的…

如何在Android项目中制作和使用三方包(jar文件)

文章目录 1 概念介绍2 制作方法2.1 制作步骤2.2 制作结果3 使用方法3.1 具体步骤3.2 示例代码4 内容总结在项目中为了跨部门协作需要把相关的内容打成包文件,基于这个需求,我们将介绍如何把 代码制作成三方包,这里的三方包是指jar文件。同时也会介绍如何在Android项目中使用…

win10_Git基于WSL(Linux子系统)统计代码行数命令

win10_Git基于WSL&#xff08;Linux子系统&#xff09;统计代码行数命令 一、引言 找到的基于git统计代码行数的命令&#xff0c;一般都是基于linux系统的shell命令。在使用mac电脑或者linux系统开发时&#xff0c;执行这些命令比较方便。 但是还有大部分人是使用windows做开…

Lua快速入门教程

文章目录 1、Linux安装Lua2、语法练习2.1、变量2.2、循环2.3、函数2.4、数组2.5、迭代器2.6、Table操作2.7、Lua 模块与包2.8、加载机制2.9、Lua 元表(Metatable) 3、Lua 协同程序(coroutine)4、文件IO操作4.1、简单模式4.2、完全模式 5、错误处理 内容来源菜鸟教程&#xff0c…

【LeetCode-数组】-- 寻找数组的中心索引

寻找数组的中心索引 class Solution {public int pivotIndex(int[] nums) {int n nums.length,sum 0;for(int i 0;i<n;i){ //计算所有元素之和sumnums[i];}int sum_l 0; //统计左边元素之和for(int i 0;i<n;i){sum - nums[i];if(sum_l sum){return i;}sum_l nums…

并发编程之互斥锁

互斥锁 锁在IT界都是非常重要的&#xff0c;不但在Python中出现&#xff0c;尤其是数据库中得锁更多&#xff0c; 比如&#xff1a;表锁、行锁、悲观锁、乐观锁、进程锁、互斥锁、递归锁、可重入锁、死锁等。 互斥锁是什么&#xff1f; 将并发变成串行 虽然牺牲了程序的执行效率…

RT thread 信号量操作

信号量控制 在RT-Thread 中&#xff0c;信号量控制块是操作系统用于管理信号量的一个数据结构。 struct rt_semaphore { struct rt_ipc_object parent; /**<inherit from ipc_object*/ rt_uint16_t value; /**<value of semaphore.*/ }定义静态信号量:struct rt_semaph…

五、K8S之Service

Kubernetes Service 一、概念 Deployment对象部署完应用还需要向外界暴露入口才能通过HTTP访问到K8S集群里的应用Pod。Service就是做这件事情的&#xff0c;为什么还需要一个这样的API对象&#xff0c;一个方面是因为Pod的IP不是固定的&#xff0c;另外一个方面是因为一组Pod…

Linux文件管理与用户管理

一、查看文件内容 1、回顾之前的命令 cat命令、tac命令、head命令、tail命令、扩展&#xff1a;tail -f动态查看一个文件的内容 2、more分屏显示文件内容&#xff08;了解&#xff09; 基本语法&#xff1a; # more 文件名称 特别注意&#xff1a;more命令在加载文件时并不…

【三:Mock服务的使用】

目录 1、工具包2、mock的demo1、get请求2、post请求3、带cookies的请求4、带请求头的请求5、请求重定向 1、工具包 1、&#xff1a;服务包的下载 moco-runner-0.11.0-standalone.jar 下载 2、&#xff1a;运行命令java -jar ./moco-runner-0.11.0-standalone.jar http -p 888…

2023-10-17 mysql-innodb-解析write_row的record的一行数据-分析

摘要: 2023-10-17 mysql-innodb-解析write_row的record的一行数据-分析. record是一行数据的序列化后的一整个字节流, 在innodb中需要解读出字段. 本文分析如何解析record, 以便学习这种技巧. row_mysql_store_col_in_innobase_format 调用堆栈: #0 row_mysql_store_col_in…

边写代码边学习之mlflow

1. 简介 MLflow 是一个多功能、可扩展的开源平台&#xff0c;用于管理整个机器学习生命周期的工作流程和工件。 它与许多流行的 ML 库内置集成&#xff0c;但可以与任何库、算法或部署工具一起使用。 它被设计为可扩展的&#xff0c;因此您可以编写插件来支持新的工作流程、库和…

【算法学习】归并算法Merge Sort总结

归并排序思路简单&#xff0c;速度仅次于快速排序&#xff0c;为稳定排序算法&#xff0c;一般用于对总体无序&#xff0c;但是各子项相对有序的数列。 1. 基本思想 归并排序使用分治思想&#xff0c;分治模式下每一层递归有三个步骤&#xff1a; 分解&#xff08;divide)&a…

Git命令在线练习网址--非常友好的提示及动画展示

Git命令在线练习 https://learngitbranching.js.org/ 举个栗子: 在练习时会给你相应提示,你可以按照相应步骤进行操作,并且每一步都有动画演示

直播带货前途渺茫了

我是卢松松&#xff0c;点点上面的头像&#xff0c;欢迎关注我哦&#xff01; 种种迹象表明电商行业和直播带货将受到冲击。直播带货前途渺茫了&#xff0c;相信很快就有政策出来了&#xff0c;针对电商这块的&#xff0c;支持实体、支持取消直播带货。 (1)目前&#xff0c;…

display有哪些值?说明他们的作用?

display解析: display 属性用于控制元素的外部盒模型&#xff08;外观&#xff09;以及元素在文档中的布局。它有多个不同的值&#xff0c;每个值都会影响元素的呈现方式和行为。以下是一些常见的 display 属性值以及它们的作用&#xff1a; block&#xff08;块级元素&#x…