上个月自定义了一个Fiddler的插件,可以根据请求生成接口自动化测试的RF和Python代码,这样测试人员只需要手动操作页面用Fiddler抓取报文,就可以直接生成RF、Python代码,然后只需要改一下改下变量部分就可以了。至于生成RF、Python代码主要还是字符串的拼接,虽然麻烦,但也不难,今天主要记录下自定义Fiddler插件。

一、Fiddler抓包工具

既然是Fiddler插件,肯定是基于Fiddler,这里我是基于Fiddler的5.0.20173.49666版本,这个版本号也是比较重要的,因为它会要求.Net的版本.用时它也公开的好几类接口.

1.全局类:IFiddlerExtension,IAutoTamper,IAutoTamper2,IAutoTamper3
      接口是面向一个全局的插件,插件出现的位置和Log,TimeLine同级,插件编译成dll只能放到 Scripts文件夹下
2.单个请求:Inspector2,IResponseInspector2,IRequestInspector2
      接口是面向于单独一个连接,插件会出现Inspector这个菜单下 和 Headers,TextView 同级,插件编译成dll只能放到 Inspectors 文件夹下
3.命令行:IHandleExecAction
            接口可以让你的控件接收到命令行传来的命令
4.导入导出:ISessionExporter,ISessionImporter
            批量对请求经行导入导出操作,位置出现在右键菜单Save-Selectd Session-中 和File-ImportSession 弹出的菜单中,dll需要放到ImportExport中

二、实现

由于这里使用的是Fiddler5.0.20173.49666版本,它是基于4.6.1的,如果选低的.net版本会报下面的警告.所以选的是.net4.6.1.

1.新建类库引入Fiddler

这里新建了一个名为CustomInspectors的类库,引用->右键->添加引用->浏览,找到Fiddler的安装目录下的Fiddler.exe.

2.AssemblyInfo.cs配置Fiddler

在AssemblyInfo.cs引入Fiddler.

[assembly: Fiddler.RequiredVersion("5.0.20173.49666")]

3.创建用户控件

选中类库,右键-添加-新建项-用户控件,这里为了演示,并没有实现生成RF、python代码功能,只是把请求的body显示出来,所以只用了一个富文本框。并把文本框属性设置为public.

4.新建类实现Inspector2, IRequestInspector2

这里创建了一个CatchInspectors实现Inspector2, IRequestInspector2,同时引入上面创建的用户控件,这样可以给用户控件的富文本框赋值,将Fiddler抓包的内容显示出来。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Fiddler; namespace CustomInspectors
{
public class CatchInspectors : Inspector2, IRequestInspector2
{
private HTTPResponseHeaders _responseHeaders;
public CusUserControl cusUserControl { get; set; } private byte[] _requestBody;
private bool _bDirty;
public bool _bReadOnly;
private HTTPRequestHeaders _requestHeaders; public HTTPResponseHeaders headers
{
get =>_responseHeaders; set => _responseHeaders =value;
}
public byte[]body
{
get=> _requestBody;
set {
_requestBody = value;
cusUserControl.RTxtBoxBody.Text = System.Text.Encoding.Default.GetString(value);
}
} public bool bDirty => true; public bool bReadOnly { get => true; set => _bReadOnly = value; }
HTTPRequestHeaders IRequestInspector2.headers
{
get => _requestHeaders; set => _requestHeaders = value;
} public override void AddToTab(System.Windows.Forms.TabPage o)
{
o.Text = "自定义插件";
cusUserControl = new CusUserControl();
cusUserControl.Dock = System.Windows.Forms.DockStyle.Fill;
o.Controls.Add(cusUserControl); } public void Clear()
{
cusUserControl.RTxtBoxBody.Text = string.Empty;
return;
} public override int GetOrder()
{
return ;
}
}
}

5.编译放入Fiddle中

将编译生成的dll文件放入Fiddler安装包的Inspectors文件夹下,再次打开Fiddler.选中一个请求,就会显示出自定义的插件内容了。这里自定义的插件与TextView有点像,都是显示请求的body内容。

自定义Fiddler插件一的更多相关文章

  1. 自定义Fiddler插件二

    在之前博客自定义Fiddler插件一中主要是实现了IRequestInspector2接口,这个接口主要是针对单个请求的,在写接口测试案例的时候也是对一个接口进行处理,如果想批量进行操作,那就可以使用 ...

  2. Fiddler插件---将Mapi请求自动转为HTTPRunner测试用例(YAML格式)

    背景 继之前鼓捣出了Mapi解密插件之后,在团队内已经使用了三年之久,一跃成为团队最爱欢迎的测试工具之一(加个之一,低调谦虚一点). 随着团队推行HttpRunner搞接口自动化:编写和维护Case带 ...

  3. 炫酷JQUERY自定义对话框插件JDIALOG_JDIALOG弹出对话框和确认对话框插件

    多种类型自定义对话框插件jDialog是一款基于jquery实现的轻量级多种类型的自定义对话框插件 在项目开发中.一般会美化 alert(); 的样式.那么今天我就和大家分享一款非常炫的插件 先来看一 ...

  4. 自定义jQuery插件Step by Step

    1.1.1 摘要 随着前端和后端技术的分离,各大互联网公司对于 Mobile First理念都是趋之若鹜的,为了解决网页在不同移动设备上的显示效果,其中一个解决方案就是Responsive Desig ...

  5. 使用自定义 jQuery 插件的一个选项卡Demo

    前几天闲着没事,想着编写一个 jQuery 插件,或许这将是一个美好的开始. 这里是html页面: <!DOCTYPE html> <html lang="en" ...

  6. 如何创建一个自定义jQuery插件

    简介 jQuery 库是专为加快 JavaScript 开发速度而设计的.通过简化编写 JavaScript 的方式,减少代码量.使用 jQuery 库时,您可能会发现您经常为一些常用函数重写相同的代 ...

  7. FiddlerScript高级技巧---自定义Fiddler菜单

    Tips 书接上回, Fiddler插件 在团队内部试用后,效果很不错,小伙伴们也提出了很多改进的建议: 最近一段Fiddler使用的仍较为频繁,以前碰到一些特殊测试需求时,总是自己在FiddlerS ...

  8. Fiddler插件 --- 解密Elong Mapi请求参数及响应内容

    当前问题: 在我们日常的Web/App测试过程中, Fiddler是一大辅助利器:在我们团队,也经常使用Fiddler进行App抓包测试. 艺龙 App使用的REST(内部称为Mapi)接口,在使用过 ...

  9. 自定义 Cordova插件(基础篇)

    cordova自定义插件 注意:存放自定义cordova插件目录不能有空格可能会报错 cordova的安装 下载node.js,安装完成后你可以在命令行中使用node和npm. 安装cordova使用 ...

随机推荐

  1. ios 导航push跳转方向设置

    CATransition* transition = [CATransition animation]; transition.type = kCATransitionPush;//可更改为其他方式 ...

  2. ABP框架系列之五十二:(Validating-Data-Transfer-Objects-验证数据传输对象)

    Introduction to validation Inputs of an application should be validated first. This input can be sen ...

  3. drf1 rest & restful规范

    web服务交互 我们在浏览器中能看到的每个网站,都是一个web服务.那么我们在提供每个web服务的时候,都需要前后端交互,前后端交互就一定有一些实现方案,我们通常叫web服务交互方案. 目前主流的三种 ...

  4. Alpha冲刺 - (6/10)

    Part.1 开篇 队名:彳艮彳亍团队 组长博客:戳我进入 作业博客:班级博客本次作业的链接 Part.2 成员汇报 组员1(组长)柯奇豪 - 过去两天完成了哪些任务 1. 基于ssm框架的前后端交互 ...

  5. 大比速:remoting、WCF(http)、WCF(tcp)、WCF(RESTful)、asp.net core(RESTful)

    近来在考虑一个服务选型,dotnet提供了众多的远程服务形式.在只考虑dotnet到dotnet的情形下,我们可以选择remoting.WCF(http).WCF(tcp).WCF(RESTful). ...

  6. vs2015 打开项目自动运行 npm install

    问题:VS2015(visual studio 2015) 打开项目自动运行  npm install 解决办法: 打开工具-选项-项目与解决方案--外部web工具   去掉npm勾选 还有如果文件g ...

  7. tomcat虚拟目录配置

    Tomcat6.0虚拟目录配置[转] 设虚拟目录 "site",通过 http://localhost:8080/site 访问物理路径 D:"site 文件夹里面的内容 ...

  8. HTTP 协议支持的十种方法

    GET 获取资源,用来请求访问已被URI识别的资源. POST 传输实体主体. PUT 传输文件,(鉴于HTTP/1.1的PUT方法自身不带验证机制,任何人都可以上传文件,存在安全性问题,因此一般We ...

  9. dwr学习(一):简单dwr实例

    博客分类:  dwr   最近写ajax写烦了,想着能不能有个更简单的“ajax”,一问就问到这个dwr了.赶紧去官网学习了下,这里写个博客记录一下实例. 测试环境:tomcat6.0 1.新建一个w ...

  10. vscode 开发 Java web 急速教程

    1.确认在本机已安装 JAVA SDK 2.确认在本机已安装 maven 3.确认在本机已安装 tomcat 下面是我本机相关软件版本: java version "1.8.0_191&qu ...