上个月自定义了一个Fiddler的插件,能够根据请求生成接口自动化测试的RF和Python代码,这样测试人员只须要手动操做页面用Fiddler抓取报文,就能够直接生成RF、Python代码,而后只须要改一下改下变量部分就能够了。至于生成RF、Python代码主要仍是字符串的拼接,虽然麻烦,但也不难,今天主要记录下自定义Fiddler插件。python
1、Fiddler抓包工具ide
既然是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中测试
2、实现ui
因为这里使用的是Fiddler5.0.20173.49666版本,它是基于4.6.1的,若是选低的.net版本会报下面的警告.因此选的是.net4.6.1.spa
1.新建类库引入Fiddler.net
这里新建了一个名为CustomInspectors的类库,引用->右键->添加引用->浏览,找到Fiddler的安装目录下的Fiddler.exe.插件
2.AssemblyInfo.cs配置Fiddler命令行
在AssemblyInfo.cs引入Fiddler.3d
[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 100; } } }
5.编译放入Fiddle中
将编译生成的dll文件放入Fiddler安装包的Inspectors文件夹下,再次打开Fiddler.选中一个请求,就会显示出自定义的插件内容了。这里自定义的插件与TextView有点像,都是显示请求的body内容。