fiddler 插件开发二
本篇主要讲解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 插件开发二的更多相关文章
- fiddler插件开发step by step 1
Fiddler 是优秀的抓包工具,有着众多的优秀插件.Fiddler 软件是由C#语言开发的,运行在.net Framework 框架之上,所以我们也可以使用vs来开发自己的Fiddler插件,下面就 ...
- Fiddler 插件开发,使用 WPF 作为 UI 控件
Fiddler 插件的 UI,本身使用的 WinForm,这个例子是使用 WinForm 中的 WPF 容器,将 WPF 控件作为 Fiddler 插件的 UI 使用. 为什么使用 WPF ?为了自适 ...
- 自定义Fiddler插件二
在之前博客自定义Fiddler插件一中主要是实现了IRequestInspector2接口,这个接口主要是针对单个请求的,在写接口测试案例的时候也是对一个接口进行处理,如果想批量进行操作,那就可以使用 ...
- sonarqube插件开发(二) 开发插件
一.环境准备 java 1.8, maven 3.1 检查自己的环境是否支持 sonarqube的插件开发 java -version mvn -version 二.创建maven项目 pom.xml ...
- 抓包工具 - Fiddler - (二)
<转载自 miantest> 在上一篇中介绍了Fiddler的基本使用方法.通过上一篇的操作我们可以直接抓取浏览器的数据包.但在APP测试中,我们需要抓取手机APP上的数据包,应该怎么操作 ...
- 测试工具Fiddler(二)—— 入门使用
Fiddler设置与安装证书 一.Fiddler常见设置 Options位置:Tools->Options 二.移动端连上Fiddler作为代理 注意:因为Charles也是默认8888端口,小 ...
- [转]【HTTP】Fiddler(二) - 使用Fiddler做抓包分析
本文转自:http://blog.csdn.net/ohmygirl/article/details/17849983 上文( http://blog.csdn.net/ohmygirl/articl ...
- fiddler 插件开发
本文主要讲解使用.net C#语言开发Fiddler插件. 1.在Fiddler 会话列表中添加自定义列 使用FiddlerApplication.UI.lvSessions.AddBoundColu ...
- WORDPRESS插件开发(二)HELLO WORLD改进版
在上一篇文章中WORDPRESS插件开发(一)HELLO WORLD,演示了Hello World的最简单实现,只是在每篇文章的后面加入Hello World字符,而且字符也是写死的. 如果用户需要自 ...
随机推荐
- Android简单计算器
这是很久之前做的,方法很简单,都是一些基础的,不足的是还有很多功能不够. activity_main.xml布局: <LinearLayout xmlns:android="http: ...
- css 笔记——设置禁用中文输入法
ime-mode ime-mode的语法解释如下: ime-mode : auto | active | inactive | disabled 取值: auto : 默认值.不影响IME的状态.与 ...
- HTML5之 WebWorkers
为了进行后台计算提供的完全隔离计算方式 不可访问 DOM APIs 不可访问 window object 不可访问 document object 强隔离保证并行计算结果无误(无锁机制) ---- 启 ...
- 腾讯QQ表情为什么如此成功呢
本人为原创作品:e良师益友 ,转载是并且注明 e良师益友网导读:腾讯开发的QQ表情功能给中国人的聊天增添一抹幽默,很多时候图片表情比话语更好的表达我们的意思,翻开你的聊天记录就会发现夹杂这很多不同的表 ...
- max_size, capacity and size 的区别
The max_size() function returns the maximum number of elements that the container can hold. The max_ ...
- ACM俱乐部 字符串
数制转换分数: 2 时间限制:1 秒 内存限制:32 兆 特殊判题: 否 提交:59 解决: 24 标签 进制转换 题目描述 求任意两个不同进制非负整数的转换(2进制-16进制),所给整数在long所 ...
- Nested Loop,Sort Merge Join,Hash Join
三种连接工作方式比较: Nested loops 工作方式是从一张表中读取数据,访问另一张表(通常是索引)来做匹配,nested loops适用的场合是当一个关联表比较小的时候,效率会更高. Merg ...
- 【js】IE、FF、Chrome浏览器中的JS差异介绍
如何判断浏览器类型 转:http://www.cnblogs.com/carekee/articles/1854674.html 1.通过浏览器特有的对象 如ie 的ActiveXObject ff ...
- touches获得手指点击的坐标
-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event { UITouch *touch = [touches anyObjec ...
- Web Api 控制器
Web Api 控制器 文档目录 本节内容: 简介 AbpApiController 基类 本地化 其它 过滤 审计日志 授权 防伪造过滤 工作单元 结果包装和异常处理 结果缓存 验证 模块绑定器 简 ...