接口测试 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();
}

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

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

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

相信能使你更好的进步!

点击下方小卡片

相关推荐
Swift社区1 小时前
在 Swift 中实现字符串分割问题:以字典中的单词构造句子
开发语言·ios·swift
没头脑的ht1 小时前
Swift内存访问冲突
开发语言·ios·swift
没头脑的ht1 小时前
Swift闭包的本质
开发语言·ios·swift
wjs20241 小时前
Swift 数组
开发语言
stm 学习ing2 小时前
FPGA 第十讲 避免latch的产生
c语言·开发语言·单片机·嵌入式硬件·fpga开发·fpga
湫ccc3 小时前
《Python基础》之字符串格式化输出
开发语言·python
sun0077003 小时前
ubuntu dpkg 删除安装包
运维·服务器·ubuntu
oi773 小时前
使用itextpdf进行pdf模版填充中文文本时部分字不显示问题
java·服务器