接口测试 Fiddler 保存会话 (请求)

目录

前言:

为什么要保存请求?

保存单个请求

打开保存的请求文件

乱码的解决方法

保存所有请求

自动保存请求的猜想

自动保存已实现


前言:

在进行接口测试时,Fiddler是一个非常有用的工具,它可以帮助您捕获和分析网络请求和响应。

为什么要保存请求?

做这件事最重要的目的之一就是,最近我需要实现一个简单的验证服务器接口正确性的这么一个测试工具(脚本),顺便把这 (保存会话) 记录下来分享给大家。

有时间我会把我初步的想法整理好分享出来,大家一起来探讨它的可行性,它不一定适用你们的业务,但是非常适合我项目的业务。虽然它也可能难产,但是我想尽力去做、去完成,也算巩固一下自己的知识,应用到项目中去。

保存单个请求

选中某个请求,右键就能看到菜单中的 Save

单个请求

  • Selected Sessions

    • in ArchiveZIP 保存为 saz 文件,其实就是一个 zip 格式文件
    • as Text 以 txt 文件形式保存整个会话包括 Headers/Request/Response
    • as Text (Headers only) 仅保存头部
  • Request 保存请求信息

  • Response 保存响应体,即服务器返回的数据

  • and Open as Local File 保存 Response 信息,并打开文件

打开保存的请求文件

  • POST 类型

  • GET 类型

GET

乱码的解决方法

相信细心的你也注意到了,前面POST类型的请求,Response body是乱码,这并不是我们希望看到的。那样怎么做呢?下面贴张图,你就秒懂了。

Decode

没错,就是 Response body Fiddler 默认采用了 GZIP 压缩,只要我们勾选None,再导出就不是乱码了

保存所有请求

菜单 File >> Save >> All Sessions,文件将以 saz 的形式保存下来(实际就是一个 ZIP 文件,也可以加密保存)

SAZ 是一种以.SAZ 为后缀的文件格式。SAZ 是 Session Archive Zip 的缩写。 SAZ 文件用于保存 HTTP 请求的信息。 在Fiddler软件使用 SAZ 格式用来保存和读取 HTTP 请求信息。

 

_index.htm : 一个可选文件,便于用户直接阅读。这个文件在 SAZ 文件被加载时不会被处理,仅仅用于手工检查。

 

raw 文件夹:包含所有的记录了网络 Sesison 信息的文件。

 

在 raw 文件夹内,对于每一个网络 Sesison,会有三个文件:

 

sessid#_c.txt:包含客户端请求

 

sessid#_s.txt : 包含服务器端请求

 

sessid#_m.txt:包含一些元数据,比如:Session 标志位,socket 重用信息,等等。

Save All Sessions

自动保存请求的猜想

  • 过滤掉无关的请求,只关注自己想要的请求
  • 利用 Fiddler 的 Customize Rules 实现过滤(也可利用Filters功能实现过滤 >> 简便、快捷),自动保存
  • js 实现过滤时,如果已经保存过的请求,可以考虑不再保存(可选)

自动保存已实现

2016.07.21 14:20 更新

经过一上午的踩坑,终于把自动保存功能实现了,下面分享给大家。

先来看一张自动保存的请求片段

重点来了,下面是实现的 js 代码

操作步骤

  • Fiddler 菜单 >> Rules >> Customize Rules
  • 如果提示没有下载 Fiddler ScriptEditor 则按提示下载后进入下一步操作
  • 安装好 Fiddler ScriptEditor 后,就能打开 Customize Rules.js 文件
  • 编辑 Customize Rules.js 文件,并保存
  • 重启 fiddler

保存 Request

把下面代码贴在OnBeforeRequest()方法末尾

//过滤无关请求,只关注特定请求
if (oSession.fullUrl.Contains("szhome.com"))
{var fso;var file;fso = new ActiveXObject("Scripting.FileSystemObject");//文件保存路径,可自定义file = fso.OpenTextFile("D:\\Fiddler Sessions\\Sessions.txt",8 ,true, true);file.writeLine("Request url: " + oSession.url);file.writeLine("Request header:" + "\n" + oSession.oRequest.headers);file.writeLine("Request body: " + oSession.GetRequestBodyAsString());file.writeLine("\n");file.close();
}

保存 Response

把下面代码贴在OnBeforeResponse()方法末尾

//过滤无关请求,只关注特定请求
if (oSession.fullUrl.Contains("szhome.com"))
{oSession.utilDecodeResponse();//消除保存的请求可能存在乱码的情况var fso;var file;fso = new ActiveXObject("Scripting.FileSystemObject");//文件保存路径,可自定义file = fso.OpenTextFile("D:\\Fiddler Sessions\\Sessions.txt",8 ,true, true);file.writeLine("Response code: " + oSession.responseCode);file.writeLine("Response body: " + oSession.GetResponseBodyAsString());file.writeLine("\n");file.close();
}

  作为一位过来人也是希望大家少走一些弯路

在这里我给大家分享一些自动化测试前进之路的必须品,希望能对你带来帮助。

(软件测试相关资料,自动化测试相关资料,技术问题答疑等等)

相信能使你更好的进步!

点击下方小卡片

 

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

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

相关文章

微服务sleuth+zipkin——链路追踪

一、链路追踪🍉 1.什么是链路追踪?🥝 在大型系统的微服务化构建中,一个系统被拆分成了许多模块。这些模块负责不同的功能,组合成系统,最终可以提供丰富的功能。在这种架构中,一次请求往往需要…

flutter开发实战-svga播放svgaplayer_flutter直播礼物特效等效果使用

flutter开发实战-svga播放svgaplayer_flutter直播礼物特效等效果使用 最近开发过程中用到了SVGA进行播放动画,这里记录一下svgaplayer_flutter使用过程。svga可以做一些非常精美的动画,包括直播的刷礼物(火箭、跑车特效动画)等等。 效果图如下 一、SVG…

基于51单片机和proteus的电流采集系统

此系统是基于51单片机和proteus的仿真设计,功能如下: 1. LCD1602实时显示获取到电流值及设定值。 2. 按键可调整电流设定值。 3. 电流值过高则蜂鸣器报警。 4. 指示灯指示电流及系统状态。 5. 系统信息可通过串口实时更新。 功能框图如下&#xff1…

【Linux】内存使用相关

free 命令 查看内存大小 free -g :G单位 free -h : 可读性较高较理解 free -m : MB单位 total: 总内存used: 正在运行的进程使用的内存(used total – free – buff/cache)free: 未使用的内存 (free total – used – buff/cache)shared: 多个进程共享的内存buffers: 内存保留…

C语言--程序环境和预处理

翻译环境 C语言的代码是文本信息,对于计算机来说无法直接理解,需要通过翻译环境进行翻译成二进制信息; 我们在写代码的时候,一般都会写在一个源文件中,这时候我们就使用我们的编译器(VS)将其转换为机器代码&#xff0…

数据库应用:MySQL高级语句(一)

目录 一、理论 1.常用查询 2.函数 3.进阶查询 二、实验 1.普通查询 2.函数 3.进阶查询 三、问题 1.MySQL || 运算符不生效 四、总结 一、理论 1.常用查询 常用查询包括:增、删、改、查; 对 MySQL 数据库的查询,除了基本的查询外…

【OC总结- Block】

文章目录 前言2. Block2.1 Block的使用规范2.2 __block修饰符2.3 Block的类型2.4 Block的循环引用及解决循环引用的场景引入解决循环引用Block循环引用场景 2.5 Block的实现及其本质2.5.1 初始化部分2.5.2 调用部分2.5.3 捕获变量 Block本质2.6 Block捕获变量 和 对象2.7 Block…

访问Liunx文件系统

访问Liunx文件系统 识别文件系统和设备 存储管理概念 Linux服务器上文件按文件系统层次结构访问。该文件系统层次结构测试由系统可用的存储设备所提供的文件系统组装而来。每个文件系统都是一个已格式化的存储设备,可用于存储文件。 文件系统和挂载点 要让文件系…

perl输出中文乱码【win10】

perl输出中文乱码 运行的时候输出的内容变成了中文乱码,原因首先来查找一下自己的perl的模块里面是否有Encode-CN。请运行打开你的cmd并输入perldoc -l Encode::CN 如果出现了地址 则就是有,如果没有需要进行该模块的安装。 安装方式有很多种&#xff0…

Unity---Spine动画

目录 1.介绍 2.优点 3.spine导出的unity资源 4.导入 5.导入报错的解决方案 6.使用 7.代码示例 1.加载Spine骨骼动画: 2.控制Spine动画的播放: 3.暂停和恢复动画播放: 4.监听动画事件: 5.切换皮肤(换装&…

C++ vector容器注意事项

容量(capacity)和大小(size)的区别 vector 容器的容量(用 capacity 表示),指的是在不分配更多内存的情况下,容器可以保存的最多元素个数;而 vector 容器的大小&#xff…

智能ai绘画软件帮你用科技点亮创意火花

李明:嘿,你听说过ai绘画软件吗?我最近对数字艺术产生了浓厚的兴趣 王磊:当然!ai绘画软件真是太神奇了!它可以将抽象的文字描述转换成惊人的艺术作品。 李明:是吗?它们绘制的效果怎…