Fiddler插件开发之高亮选中域

Fiddler对于开发者来说无疑是一大神器,其AutoResponder功能能帮我们解决本地开放环境调试的问题,但这仅仅是其强大功能的一个小角,那么我们如何利用其为我们完成我们的一些个性化需求呢?

这不得不提到另外一个名词,FiddlerScript,FiddlerScript其实是一个脚本文件名称叫CustomRules.js,存放于Fiddler安装目录下的Scripts文件夹中,我们可以直接通过本机的编辑软件打开它,也可以从Fiddler的菜单Rules -> Customize Rules...打开它,FiddlerScript是用JScript.NET语言写的,我个人没听说过这个语言,但是我觉得写起来和js差不多吧。接下里,我们就开始写我们的Fiddler小插件。

工欲善其事必先利其器,在开始之前我们需要先了解一下我们要用到的api(其api文档可以从http://docs.telerik.com/fiddler/KnowledgeBase/FiddlerScript/ModifyRequestOrResponse获取到):

1、FiddlerScript中两个比较常用的方法:

CustomRules.js中的主要方法
// 在这个方法中修改Request的内容,比如修改userAgent,伪造ip等
static function OnBeforeRequest(oSession: Session)

// 在这个方法中修改Response的内容,比如增加跨域支持
static function OnBeforeResponse(oSession: Session)

2、自定义菜单,我们要向Fiddler添加一个ContextMenu,所以我们要用到ContextAction这个API,其用法如下:

public static ContextAction("Open in Firefox")
function DoOpenInIE(oSessions: Fiddler.Session[]){ 
 if (null == oSessions){
   MessageBox.Show("Please choose at least 1 session."); return;
 }
 for (var x = 0; x < oSessions.Length; x++){
   System.Diagnostics.Process.Start("firefox.exe", oSessions[x].url);
 }
}

我们要实现的需求是:当我们右键fiddler面板中的一个url时可以选择是否高亮当前域,如果高亮,则以后所有属于选中域的地址都会被高亮标出。

具体实现:

import System;
import System.Windows.Forms;
import Fiddler;

class Handlers {
  public static var hight_domain: String = null;

  static function OnBeforeRequest(oSession: Session) {
    if (hight_domain != null && oSession.uriContains(hight_domain)) {
      oSession['ui-color'] = 'white';
      oSession['ui-backcolor'] = 'red';
    }
  }

  public static ContextAction("Highlight/Delight This Domain")
    function Highlight(oSessions: Fiddler.Session[]){
     if (null == oSessions){
       MessageBox.Show("Please choose at least 1 session."); return;
     }

     if (hight_domain == oSessions[0].host) {
      hight_domain = null;
     } else {
      hight_domain = oSessions[0].host;
     }
  }
}

效果图:

  • 支付宝二维码 支付宝
  • 微信二维码 微信
相关文章