fiddlerプラグイン開発二

7790 ワード

この記事では、Filldderプラグインの開発における主なインタフェースとクラスについて説明します.
1.IFIddlerExtensionインタフェース
開発するカスタムプラグインにUIインタフェースがある場合は、IFIddlerExtensionインタフェースを実装する必要があります.あなたのプログラムセットでIFIddlerExtensionインタフェースを実装したパブリッククラス(public class)は、Fiddler起動時にロードされます.
public interface IFiddlerExtension

    {

      // Called when Fiddler User Interface is fully available

      void OnLoad();



      // Called when Fiddler is shutting down

      void OnBeforeUnload();

    }
  • OnLoadメソッドは、Fiddlerのロードが完了し、UIが完全に使用可能になったときに呼び出されます.このメソッドでは、メニュー項目、タブページ、または他のUI要素をFiddler UIに安全に追加できます.
  • OnBeforeUnloadメソッドは、すべてのプラグインを閉じてアンインストールするときに実行されます.

  • 2.IAutoTamperインタフェース
    IAutoTamperインタフェースはIFIddlerExtensionインタフェースを継承し、IAutoTamperインタフェースを実装したすべてのプラグインはhttp/httpリクエストまたはレスポンスごとに呼び出されるので、http/httpリクエスト応答データをハイジャックまたは変更するために使用できます.
    注意:このインタフェースの方法はバックグラウンドで呼び出され、UIスレッドではありません.UIを更新するには、InvokeまたはBeginInvokeメソッドを使用してUIを更新することができます.IAutoTamperのすべてのメソッドは、OnLoadイベントの前に実行される可能性があります.
    public interface IAutoTamper : IFiddlerExtension
    
    {
    
      // Called before the user can edit a request using the Fiddler Inspectors
    
      void AutoTamperRequestBefore(Session oSession);
    
    
    
    
    
      // Called after the user has had the chance to edit the request using the Fiddler Inspectors, but before the request is sent
    
      void AutoTamperRequestAfter(Session oSession);
    
    
    
    
    
      // Called before the user can edit a response using the Fiddler Inspectors, unless streaming.
    
      void AutoTamperResponseBefore(Session oSession);
    
    
    
    
    
      // Called after the user edited a response using the Fiddler Inspectors.  Not called when streaming.
    
      void AutoTamperResponseAfter(Session oSession);
    
    
    
    
    
      // Called Fiddler returns a self-generated HTTP error (for instance DNS lookup failed, etc)
    
      void OnBeforeReturningError(Session oSession);
    
    }

    3.IAutoTamper 2インタフェース
    IAutoTamper 2インタフェース(IAutoTamperインタフェースから継承)を実装したすべての拡張子は、応答ヘッダ(Response Headers)が使用可能である場合に呼び出される.
    /// <summary>
    
    /// Interface for AutoTamper extensions that want to "peek" at response headers
    
    /// </summary>
    
    public interface IAutoTamper2 : IAutoTamper
    
    {
    
         /// <summary>
    
         /// Called when the response headers become available
    
         /// </summary>
    
         /// <param name="oSession">The Session object for which the response headers are available</param>
    
        void OnPeekAtResponseHeaders(Session oSession);
    
    }

    4.IAutoTamper 3インタフェース
    IAutoTamper 3インタフェース(IAutoTamper 2インタフェースから継承)を実装したすべての拡張子は、リクエストヘッダ(Request Headers)が使用可能である場合に呼び出されます.
    /// <summary>
    
    /// Interface for AutoTamper extensions that want to "peek" at request headers
    
    /// </summary>
    
    public interface IAutoTamper3 : IAutoTamper2
    
    {
    
        /// <summary>
    
        /// Called when the request headers become available
    
        /// </summary>
    
        /// <param name="oSession">The Session object for which the request headers are available</param>
    
        void OnPeekAtRequestHeaders(Session oSession);
    
    }

    5. IHandleExecAction IHandleExecActionインタフェースを実装したすべての拡張は、ユーザがQuickExecコマンドを実行するときに呼び出される.OnExecActionメソッドでtrueを返すと、コマンドの実行に成功し、他のActionを処理する必要がなくなります.
    public interface IHandleExecAction
    
    {
    
      // return TRUE if handled. 
    
      bool OnExecAction(string sCommand); 
    
    }

    例:
    public bool OnExecAction(string sCommand)
    
    {
    
        if (sCommand == "clearcache")
    
        {
    
            //      quickexec       clearcache ,  Fiddler      
    
            FiddlerApplication.UI.actClearWinINETCache();
    
            return true;  //
    
        }
    
        return false;  //         ,     ExecAction handlers    
    
    }

    6.参考資料
    http://www.fiddlerbook.com/Fiddler/dev/IFiddlerExtension.asp