zoukankan      html  css  js  c++  java
  • 05_Fiddler的Script 脚本用法

    现在我们来看看Fiddler的高级用法. Fiddler Script。   Fiddler中的script 可以让我们自动修改Http request和Response 的内容。  而不用手动地去下"断点"来修改http Request或Response中的值。

    Fiddler的作者

    Fiddler 的作者是 Eric Lawrence 是个大师级的人物, 目前在微软总部西雅图工作。 他的博客是: http://www.ericlawrence.com/Eric/

    博客中能看到他的简历,以及一些生活照.

    遇到问题如何向Fiddler的作者请教

    Eric Lawrence 在Google 论坛中建了一个Fiddler 的讨论组, 地址是:https://groups.google.com/forum/?fromgroups#!forum/httpfiddler

    在这里Fiddler的使用者如果遇到任何问题,都可以这论坛里直接问Eric Law. Eric Law一般都会很快答复你。  在问问题之前,请搜索下。因为你的问题很可能别人早就问过了。

    关于Fiddler Script

    Fiddler 包含了一个脚本文件可以自动修改Http Request 和Response.这样我们就不需要手动地下"断点"去修改了,

    实际上它是一个脚本文件CustomRules.js 

    位于: C:Documents and Settings[your user]My DocumentsFiddler2ScriptsCustomRules.js 下

    你也可以在Fiddler 中打开CustomRules.js 文件,  启动Fiddler, 点击菜单Rules->Customize Rules...

    Fiddler Script 的官方帮助文档必须认真阅读, 地址是:http://www.fiddler2.com/Fiddler/dev/ScriptSamples.asp

    Fiddler Script 是用JScript.NET语言写的

    我从来没听说过JScript.NET语言,可能是JScript的升级版吧。  写起来有点类似C#

    安装Fiddler Script Editor

    你可以直接用notepadCustomRules.js文件,

    强烈推荐下载 Fiddler Script Editor 地址是: http://www.fiddler2.com/fiddler/fse.asp

    Fiddler Script Editor 提供了语法高亮,以及智能提示的功能, 如下图:

    CustomRules.js中的主要方法

    // 在这个方法中修改Request的内容, 我们用得最多,

    static function OnBeforeRequest(oSession: Session)

    // 在这个方法中修改Response的内容,

    static function OnBeforeResponse(oSession: Session)

    // 在个方法中包含Fiddler 命令。  在Fiddler界面中左下方的QuickExec Box

    static function OnExecAction(sParams: String[])

    给Fiddler添加菜单

    Fiddler可以模拟各种浏览器,你可以通过点击菜单 Rules->User-Agents

    不过好像没有Iphone 4S safari 的, 我们现在添加一个。  先查询在网上Iphone 4S safari 的user-Agents, 然后添加如下代码代码就可以了

    RulesStringValue(23, "Iphone 4S safari", "Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_0 like Mac OS X; en-us) AppleWebKit/532.9 (KHTML, like Gecko) Version/4.0.5 Mobile/8A293 Safari/6531.22.7")

     保存脚本, 重启Fiddler就可以看到菜单中多了个Iphone 4s

    你可以把你常用的操作,都定义成一个menu,

    修改Session在Fiddler的显示样式

    我们可以控制Session在Fiddler中显示的样式, 具体文档是: http://www.fiddler2.com/Fiddler/dev/SessionFlags.asp

    把这段脚本放在OnBeforeRequest(oSession: Session) 方法下,并且点击"Save script", 这样所有的cnblogs的会话都会显示红色.

         if (oSession.HostnameIs("www.cnblogs.com")) {
                oSession["ui-color"] = "red";
            }

    运行效果如

    如何在Fiddler Script中修改Cookie

    cookie其实就是request 中的一个header.

    // 删除所有的cookie

    oSession.oRequest.headers.Remove("Cookie");

    // 新建cookie

    oSession.oRequest.headers.Add("Cookie", "username=testname;testpassword=P@ssword1");


    注意: Fiddler script不能直接删除或者编辑单独的一个cookie, 你需要用replace方法或者正则表达式的方法去操作cookie的string

    static function OnBeforeRequest(oSession: Session) 
    { 
         if (oSession.HostnameIs('www.example.com') && 
              oSession.uriContains('pagewithCookie') && 
    oSession.oRequest.headers.Contains("Cookie")) 
         { 
    
         var sCookie = oSession.oRequest["Cookie"]; 
    
         //  用replace方法或者正则表达式的方法去操作cookie的string
         sCookie = sCookie.Replace("cookieName=", "ignoreme="); 
    
         oSession.oRequest["Cookie"] = sCookie; 
        }

    如何在Fiddler Script中修改Request 中的body

    方法一:

    static function OnBeforeRequest(oSession: Session) 
    { 
        if(oSession.uriContains("http://www.cnblogs.com/TankXiao/"))
        {
            // 获取Request 中的body字符串
            var strBody=oSession.GetRequestBodyAsString();
            // 用正则表达式或者replace方法去修改string
            strBody=strBody.replace("1111","2222");
            // 弹个对话框检查下修改后的body               
            FiddlerObject.alert(strBody);
            // 将修改后的body,重新写回Request中
            oSession.utilSetRequestBody(strBody);
        }
    }

    方法二:  提供了一个非常简单的方法,可以直接替换body中的数据

     oSession.utilReplaceInRequest("1111", "2222");

     

    本文来源于:http://www.cnblogs.com/TankXiao/archive/2012/04/25/2349049.html

  • 相关阅读:
    【mysql】八、mysql的学习---查询缓存
    【mysql】七、mysql的学习---应用优化
    【mysql】六、mysql的学习---SQL优化
    【mysql】五、mysql的学习---存储引擎
    【mysql】四、mysql的学习---触发器
    【mysql】三、mysql的学习---存储过程和函数
    【mysql】二、mysql的学习---视图
    server --SSD中,SATA,m2,PCIE和NVME各代表了什么,关系是什么
    windows--禁用驱动程序强制签名
    linux --kernel 和 OS 的关系区别
  • 原文地址:https://www.cnblogs.com/dashu123/p/11780931.html
Copyright © 2011-2022 走看看