上个月自定义了一个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. SpringMVC 学习 十一 springMVC控制器向jsp或者别的控制器传递参数的四种方法

    以后的开发,大部分是发送ajax,因此这四种传递参数的方法,并不太常用.作为了解吧 第一种:使用原生 Servlet 在控制器的响应的方法中添加Servlet中的一些作用域:HttpRequestSe ...

  2. Note | LaTeX

    目录 一.TeX家族 1. TeX - LaTeX 2. pdfTeX - pdfLaTeX 3. XeTeX - XeLaTeX 4. CTeX - MiKTeX - TeX Live 二.入门 1 ...

  3. C++ lamba使用

    Moderm Effective C++ 条款31 第206提到了按引用捕获局部变量和函数形参时,如果lambda式的生命期依赖于局部变量和函数形参的生命期,需注意空悬引用的问题. 原书的例子不够直观 ...

  4. ASP.NET Core OceLot 微服务实践

    1.OceLot中间件介绍 在传统的BS应用中,随着业务需求的快速发展变化,需求不断增长,迫切需要一种更加快速高效的软件交付方式.微服务可以弥补单体应用不足,是一种更加快速高效软件架构风格.单体应用被 ...

  5. sku 和 spu

    https://www.jianshu.com/p/867429702d5a     里面的图片挺好的

  6. JavaScript高级程序设计--函数小记

    执行环境和作用域链   每个函数都有自己的执行环境.当执行流进入一个函数时,函数 的环境就会被推入一个环境栈中.而在函数执行之后,栈将其环境弹出,把控制权返回给之前的执行环境.   当代码在一个环境中 ...

  7. 代码的重构(Refactor-Extract)

    1.vs中的代码重构快捷方式:Refactor-Extract: 选中两个需要重构的部分完整代码,右击,选中Refactoe-Extract-Extract Method: 该选中的代码会自动形成一个 ...

  8. 利用phpcms后台漏洞渗透某色情网站

    本文来源于i春秋学院,未经允许严禁转载 phpcms v9版本最近爆了好几个漏洞,网上公开了不少信息,但没有真正实战过,就不能掌握其利用方法,本次是在偶然的机会下,发现一个网站推荐楼凤信息,通过分析, ...

  9. Linux下用ifconfig命令设置IP、掩码、网关

    设置IP和掩码ifconfig eth0 192.168.1.240 netmask 255.255.255.0设置网关route add default gw 192.168.1.1 每日一言:靡不 ...

  10. 源码调试debug_info 的作用和使用方法

    在他通过gcc来编译程序时,在map文件中,经常会遇到如下的情况: .debug_info 0x002191b6 0x1aa9 XXX .debug_info 0x0021ac5f 0xce4 XXX ...