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 Documents\Fiddler2\Scripts\CustomRules.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;[email protected]");

注意: 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

原文地址:https://www.cnblogs.com/dashu123/p/11780931.html

时间: 2024-07-31 10:43:56

05_Fiddler的Script 脚本用法的相关文章

NMAP之script脚本扫描总结

nmap --script="脚本" 192.168.*.* auth: 负责处理鉴权证书(绕开鉴权)的脚本 broadcast: 在局域网内探查更多服务开启状况,如dhcp/dns/sqlserver等服务 brute: 提供暴力破解方式,针对常见的应用如http/snmp等 default: 使用-sC或-A选项扫描时候默认的脚本,提供基本脚本扫描能力 discovery: 对网络进行更多的信息,如SMB枚举.SNMP查询等 dos: 用于进行拒绝服务攻击 exploit: 利用已

script脚本中写不写$(document).ready(function() {});的区别

$(document).ready() 里的代码是在页面内容都加载完才执行的,如果把代码直接写到script标签里,当页面加载完这个script标签就会执行里边的代码了,此时如果你标签里执行的代码调用了当前还没加载过来的代码或者dom,那么就会报错,当然如果你把script标签放到页面最后面那么就没问题了,此时和ready效果一样. $(document).ready(function(){})可以简写成$(function(){}); 点击段落后,此段落隐藏: <html> <head

国际化总结—关于script脚本

这个是接着上一篇 国际化总结-关于Struts2 在做国际化的时候,有时候script脚本中也需要有国际化,所以就用到了jquery的一个包:jquery.i18n 关于这个包的详细使用有空在弄,这里只是介绍如何实现js脚本的国际化的一些简单代码 直接上代码了: 首先是加载jquery.i18n的,这个需要随着页面的加载马上就执行,就写在document的onready代码的最前面吧 function loadProperties(){      /*lan = $("#local_lan&qu

在html中添加script脚本的方法和注意事项

在html中添加script脚本有两种方法,直接将javascript代码添加到html中与添加外部js文件,这两种方法都比较常用,大家可以根据自己需要自由选择 在html中添加<script>脚本的方法: 1.可以直接将javascript代码添加到html中 <script type="text/javascript"> //javascritp代码 </script> 当解释器嵌入<script>代码时,html页面的处理也会被暂时

使用lucene query的CharFilter 去掉字符中的script脚本和html标签

1.准备数据,这里我从数据库读取一个带有html标签和script脚本的数据 代码: @Before public void init(){ SQLService sqlService = new SQLService(); sqlService.regist(null); BaseDao bd = new BaseDao(); String sql = "select * from t where title like '% 每天读一遍,舌头更无敌%'"; lists = bd.ge

Shell编程之三 —— shell script 脚本(未完待续)

1.脚本的语法构成: shell script 是利用 shell 的功能所写的一个『程序(program)』,这个程序是使用纯文本文件(文件后缀名最好为sh文件,方便我们管理),将一些 shell 的语法与指令(含外部指令)写在里面, 搭通配符.配正规表示法.管线命令与数据流重定向.条件判断.循环逻辑等功能,以达到我们所想要的处理目的. 构成(常见):shell语法和外部指令   通配符     [a-z]  [A-Z]     ?    *          正规表达式      管线命令

使用jQuery加载script脚本

原文链接: Loading Scripts with jQuery JavaScript loaders加载器简单强大而又非常有用.我在博客上介绍过其中一些,例如 curljs  和 LABjs ,也在个人项目中使用 RequireJS 和 Dojo 加载程序.他们是如此的强大,但在某些情况下可能是杀鸡用牛刀了.如果你正在使用jQuery,就会发现jQuery内置了加载单个脚本的方法,如果你想 延迟加载插件或其他类型的脚本,可能该方法会派上用场.下面介绍如何使用它! The jQuery Jav

[Unity3D]Script 脚本所有编译器属性详解

Script属性是基于IDE的一系列编译器属性JS中用@script 属性方法()访问,c#中用[属性方法()]访问.一共就只有9种属性访问方式: AddComponentMenu    在Component菜单中添加新的菜单项 ContextMenu      在当前脚本的组件中添加右键菜单内容 ExecuteInEditMode    让当前脚本可以在运行模式中实时更新修改 HideInInspector        是变量在检测时不被显示,但是会被实例化? NonSerialized  

与bash script脚本自动化交互

如果bash脚本中一些命令需要手工输入进行交互的时候,那么脚本的自动化就没法进行下去.比如:ssh somehost需要输入用户名和密码,脚本运行到这个命令后,便会停止,等待用户输入. 如果在简单情景下,比如只需要用户输入一次,即一次性交互时,可以直接这样: # ... some directives here # Remove the machine, confirming "y" when asked by docker-machine echo 'y' | docker-mach