通过前一篇博客 【Fiddler教程】, 我们了解了Fiddler的基本用法,  现在我们来看看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(, "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("","");
// 弹个对话框检查下修改后的body
FiddlerObject.alert(strBody);
// 将修改后的body,重新写回Request中
oSession.utilSetRequestBody(strBody);
}
}

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

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

Fiddler (二) Script 用法的更多相关文章

  1. Fiddler的script用法

    一.关于Fiddler Script Fiddler Script 是用JScript.NET语言写的.Fiddler 包含了一个脚本文件可以自动修改Http Request 和Response.这样 ...

  2. sqlalchemy(二)高级用法

    sqlalchemy(二)高级用法 本文将介绍sqlalchemy的高级用法. 外键以及relationship 首先创建数据库,在这里一个user对应多个address,因此需要在address上增 ...

  3. WIN 下的超动态菜单(二)用法

    WIN 下的超动态菜单(一)简介 WIN 下的超动态菜单(二)用法 WIN 下的超动态菜单(三)代码 作者:黄山松,发表于博客园:http://www.cnblogs.com/tomview/     ...

  4. class的二般用法

    一般来说,class就是给一堆元素添加样式的,但是还有二般的用法,就是用来作为一个开关,来切换他的子孙元素的样式.举个例子: <ul> <li><span>1< ...

  5. Android SQLite (二) 基本用法

    在Android开发中SQLite起着很重要的作用,网上SQLite的教程有很多很多,不过那些教程大多数都讲得不是很全面.本人总结了一些SQLite的常用的方法,借着论坛的大赛,跟大家分享分享的. 一 ...

  6. 二. Socket用法

    C/S通信架构中,客户端要主动与服务端建立连接,这个链接就是Socket套接字.服务端收到连接请求后,也会开启Socket记录与客户端的链接.C/S两端都要建路Socket才能正常收发数据. 一.构造 ...

  7. 使用jemeter手工编写注册、登陆脚本 运用 fiddler (二)

    接着上一篇讲 我们需要添加关联来获取我们想要的动态值 如果做过自动化测试的人都知道   不管是注册或者登陆是时候都会有一个 类似于动态码的一个东西  只有这个东西验证成功 我们才能注册 或者 登陆 那 ...

  8. sqlalchemy(二)高级用法 2

    转自:https://www.cnblogs.com/coder2012/p/4746941.html 外键以及relationship 首先创建数据库,在这里一个user对应多个address,因此 ...

  9. Fiddler(二)

    该博客基于以下博客网站里的内容进行提取,实验,和补充.让我们开始 https://www.cnblogs.com/yyhh/p/5140852.html AutoResponder 允许拦截指定规则的 ...

随机推荐

  1. java 线程的终止与线程中断

    关于线程终止: 1.一般来讲线程在执行完毕后就会进入死亡状态,那该线程自然就终止了. 2.一些服务端的程序,可能在业务上需要,常驻系统.它本身是一个无穷的循环,用于提供服务.那对于这种线程我们该如何结 ...

  2. IOS开发之控件篇UINavigationController第二章 - 标题

    1.什么是标题(Title) NavigationController里面的viewcontroller,每一页都会有一个标题,如图3r就是这个页面的标题 2. 如何设置标题 一般都会在这个Navig ...

  3. python入门学习课程推荐

    最近在学习自动化,学习过程中,越来越发现coding能力的重要性,不会coding,基本不能开展自动化测试(自动化工具只是辅助). 故:痛定思痛,先花2个星期将python基础知识学习后,再进入自动化 ...

  4. hibernate(八) Hibernate检索策略(类级别,关联级别,批量检索)详解

    序言 很多看起来很难的东西其实并不难,关键是看自己是否花费了时间和精力去看,如果一个东西你能看得懂,同样的,别人也能看得懂,体现不出和别人的差距,所以当你觉得自己看了很多书或者学了很多东西的时候,你要 ...

  5. KlayGE 4.4中渲染的改进(五):OpenGL 4.4和OpenGLES 3

    转载请注明出处为KlayGE游戏引擎,本文的永久链接为http://www.klayge.org/?p=2796 上一篇我们提到了SSSSS,作为本系列的最后一篇,本文将介绍KlayGE 4.4的Op ...

  6. bootstrap-table 分页的问题

    文档网站 http://wenzhixin.net.cn/p/bootstrap-table/docs/examples.html#via-javascript-table 问题1 :服务器端取不到f ...

  7. 一个在ASP.NET中利用服务器控件GridView实现数据增删改查的例子

    备注:这是我辅导的一个项目开发组的一个例子,用文章的方式分享出来,给更多的朋友参考.其实我们这几年的项目中,都不怎么使用服务器控件的形式了,而是更多的采用MVC这种开发模式.但是,如果项目的历史背景是 ...

  8. Android基于mAppWidget实现手绘地图(四)--如何附加javadoc

    如何把javadoc添加到代码库中? How to attach javadoc to the library? 项目属性——>Java Build Path——>Libraries.选择 ...

  9. 理解 angular2 基础概念和结构 ----angular2系列(二)

    前言: angular2官方将框架按以下结构划分: Module Component Template Metadata Data Binding Directive Service Dependen ...

  10. [New Portal]Windows Azure Virtual Machine (23) 使用Storage Space,提高Virtual Machine磁盘的IOPS

    <Windows Azure Platform 系列文章目录> 注意:如果使用Azure Virtual Machine,虚拟机所在的存储账号建议使用Local Redundant.不建议 ...