自定義Fiddler插件一

上個月自定義了一個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;
        }
    }
}
View Code

5.編譯放入Fiddle中

將編譯生成的dll文件放入Fiddler安裝包的Inspectors文件夾下,再次打開Fiddler.選中一個請求,就會顯示出自定義的插件內容了。這裏自定義的插件與TextView有點像,都是顯示請求的body內容。

相關文章
相關標籤/搜索