接口测试 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 类型

乱码的解决方法

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

没错,就是 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 重用信息,等等。

自动保存请求的猜想

  • 过滤掉无关的请求,只关注自己想要的请求
  • 利用 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();
}

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

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

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

相信能使你更好的进步!

点击下方小卡片

相关推荐
开发者工具分享3 分钟前
如何应对敏捷转型中的团队阻力
开发语言
行云流水剑9 分钟前
【学习记录】如何使用 Python 提取 PDF 文件中的内容
python·学习·pdf
gregmankiw10 分钟前
C#调用Rust动态链接库DLL的案例
开发语言·rust·c#
roman_日积跬步-终至千里25 分钟前
【Go语言基础【20】】Go的包与工程
开发语言·后端·golang
秦少游在淮海1 小时前
C++ - string 的使用 #auto #范围for #访问及遍历操作 #容量操作 #修改操作 #其他操作 #非成员函数
开发语言·c++·stl·string·范围for·auto·string 的使用
Tender_光1 小时前
iptables实验
运维·服务器
const5441 小时前
cpp自学 day2(—>运算符)
开发语言·c++
心扬1 小时前
python生成器
开发语言·python
mouseliu1 小时前
python之二:docker部署项目
前端·python
阿蒙Amon1 小时前
06. C#入门系列【自定义类型】:从青铜到王者的进阶之路
开发语言·c#