本篇主要讲解Fildder插件开发中的涉及到的主要接口与类。

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 方法将会在Fiddler 关闭和卸载所有插件时执行。

2.IAutoTamper 接口

IAutoTamper 接口继承了IFiddlerExtension接口,所有实现了IAutoTamper 接口的插件将会在每一个http/https 请求或响应时被调用,所以可以用来劫持或修改http/https 请求响应数据。

注意:这个接口的方法是在后台被调用,非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.IAutoTamper2 接口

所有实现了IAutoTamper2 接口(继承自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.IAutoTamper3 接口

所有实现了IAutoTamper3接口(继承自IAutoTamper2接口)的扩展将会在请求头(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

fiddler 插件开发二的更多相关文章

  1. fiddler插件开发step by step 1

    Fiddler 是优秀的抓包工具,有着众多的优秀插件.Fiddler 软件是由C#语言开发的,运行在.net Framework 框架之上,所以我们也可以使用vs来开发自己的Fiddler插件,下面就 ...

  2. Fiddler 插件开发,使用 WPF 作为 UI 控件

    Fiddler 插件的 UI,本身使用的 WinForm,这个例子是使用 WinForm 中的 WPF 容器,将 WPF 控件作为 Fiddler 插件的 UI 使用. 为什么使用 WPF ?为了自适 ...

  3. 自定义Fiddler插件二

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

  4. sonarqube插件开发(二) 开发插件

    一.环境准备 java 1.8, maven 3.1 检查自己的环境是否支持 sonarqube的插件开发 java -version mvn -version 二.创建maven项目 pom.xml ...

  5. 抓包工具 - Fiddler - (二)

    <转载自 miantest> 在上一篇中介绍了Fiddler的基本使用方法.通过上一篇的操作我们可以直接抓取浏览器的数据包.但在APP测试中,我们需要抓取手机APP上的数据包,应该怎么操作 ...

  6. 测试工具Fiddler(二)—— 入门使用

    Fiddler设置与安装证书 一.Fiddler常见设置 Options位置:Tools->Options 二.移动端连上Fiddler作为代理 注意:因为Charles也是默认8888端口,小 ...

  7. [转]【HTTP】Fiddler(二) - 使用Fiddler做抓包分析

    本文转自:http://blog.csdn.net/ohmygirl/article/details/17849983 上文( http://blog.csdn.net/ohmygirl/articl ...

  8. fiddler 插件开发

    本文主要讲解使用.net C#语言开发Fiddler插件. 1.在Fiddler 会话列表中添加自定义列 使用FiddlerApplication.UI.lvSessions.AddBoundColu ...

  9. WORDPRESS插件开发(二)HELLO WORLD改进版

    在上一篇文章中WORDPRESS插件开发(一)HELLO WORLD,演示了Hello World的最简单实现,只是在每篇文章的后面加入Hello World字符,而且字符也是写死的. 如果用户需要自 ...

随机推荐

  1. SQL语句:SQLwhile(0=0)与while @@fetch_status=0.

    第一句是SQL循环用的,这个条件下,会读取所有的记录,因为会一直循环; 第二句是游标里的,@@fetch_status=0 等于0时,说明游标是成功的.

  2. Chrome 控制台不完全指南【转载】

    Chrome的开发者工具已经强大到没朋友的地步了,特别是其功能丰富界面友好的console,使用得当可以有如下功效: 更高「逼格」更快「开发调试」更强「进阶级的Frontender」 Bug无处遁形「 ...

  3. Android Studio ndk-Jni开发详细

    http://www.open-open.com/lib/view/open1451917048573.html Java Native Interface (JNI)标准是java平台的一部分,它允 ...

  4. c# using 引用和别名的使用

    1.使用别名 在同时引用的两个命名空间中有相同的类型时,可以使用别名来区分.如下所示: using System; using System.Threading; using System.Timer ...

  5. js画了一个椭圆

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  6. AngularJS开发相关配置

    安装步骤: 1. Node.js,下载地址:https://nodejs.org/en/ 2. Git 下载地址:https://git-scm.com/download/ 3. Python (需为 ...

  7. Java调用外部程序常用算法和封装类

    一个项目不可能只使用一种编程语言来开发,也不可能由一个人开发,所以,Java程序员要学会和使用其他编程语言的程序员合作.那么,让我来发布一个工具类--Java外接程序扩展包,并将相应算法发布.Java ...

  8. javascript-对象的创建(一)

    <!DOCTYPE html> <%@ page language="java" contentType="text/html; charset=UTF ...

  9. myeclipse 8.5 破解

    步骤: (1)新建一个java project项目 (2)在src目录下新建一个名为MyEclipseGen的Java文件(MyEclipseGen.java) (3)MyEclipseGen.jav ...

  10. css圆角 四边投影

    -moz-border-radius: 30px;-webkit-border-radius: 30px; border-radius:30px; -webkit-box-shadow:0 0 10p ...