官方的Fiddler Script使用文档

http://docs.telerik.com/fiddler/KnowledgeBase/FiddlerScript/ModifyRequestOrResponse

打开fiddler后在右边找到下面选项来编辑脚本

打开go to 下拉框我看看下

这里是一些http经过代理时的事件,看名字应该就可以明白是什么意思啦,

没有上面这个选项卡的就打开菜单里的customize rules会自动打开一个页面让你下载一个扩展,安装后重启软件就可以看到啦

下面介绍两个常用的事件请求和响应

OnBeforeRequest 在把请求发送给服务器之前调用

监测请求

我们把要监测的请求链接给加成红色方便我们查看

在这个函数里添加下面代码,里面主机名改成你的就可以

复制代码

1
2
3
4
5
 
 
 
static function OnBeforeRequest(oSession: Session) {
if (oSession.HostnameIs("www.zhaokeli.com")) {
oSession["ui-color"] = "red";
}
}
 
 

如下图,颜色已经为红色

修改cookie和header头信息

cookie是请求头里的一个字段,并不是像我们写程序设置cookies时的一个键对应一个值,直接就是一个cookies的字符串,因此我们可以把cookie清除掉重新添加

复制代码

1
2
3
4
5
6
 
 
 
static function OnBeforeRequest(oSession: Session) {
// 删除所有的cookie
oSession.oRequest.headers.Remove("Cookie");
// 新建新的cookie
oSession.oRequest.headers.Add("Cookie", "uuid=asdfasdfasdf;key=asdfasdf");
}
 
 

也可以使用替换字符串的方法对单个的cookie值进行修改

复制代码

1
2
3
4
5
6
7
8
9
10
11
 
 
 
static function OnBeforeRequest(oSession: Session) {
//如果url里包含username并且请求头里包含cookie的话就修改cookie
if(oSession.uriContains('username') &&oSession.oRequest.headers.Contains("Cookie")){
//取出cookie字符串
var sCookie = oSession.oRequest["Cookie"];
//用replace方法或者正则表达式的方法去操作cookie的string
sCookie = sCookie.Replace("strname", "replacename");
//设置cookie
oSession.oRequest["Cookie"] = sCookie;
}
}
 
 

修改post时的body里面的值(注意里面的值是&分隔的键值参数字符串)

复制代码

1
2
3
4
5
6
7
8
9
10
11
12
13
 
 
 
static function OnBeforeRequest(oSession: Session) {
//第一种修改方法,取出来再修改
// 获取Request 中的body字符串
var strBody=oSession.GetRequestBodyAsString();
// 用正则表达式或者replace方法去修改string
strBody=strBody.replace("1111","2222");
// 弹个对话框检查下修改后的body
FiddlerObject.alert(strBody);
// 将修改后的body,重新写回Request中
oSession.utilSetRequestBody(strBody);
//第二种方法直接替换
oSession.utilReplaceInRequest("1111", "2222");
}
 
 

禁止css请求

复制代码

1
2
3
4
5
 
 
 
if (oSession.uriContains(".css")){
oSession["ui-color"]="orange";
oSession["ui-bold"]="true";
oSession.oRequest.FailSession(404, "Blocked", "Fiddler blocked CSS file");
}
 
 

伪装user-agent头

复制代码

1
 
 
 
oSession.oRequest["User-Agent"]="Googlebot/2.X (+http://www.googlebot.com/bot.html)";
 
 

OnBeforeResponse从服务器收到响应然后返回给浏览器之前调用

查找并且替换html

复制代码

1
2
3
4
5
6
 
 
 
static function OnBeforeResponse(oSession: Session) {
if (oSession.HostnameIs("www.zhaokeli.com") && oSession.oResponse.headers.ExistsAndContains("Content-Type","text/html")){
oSession.utilDecodeResponse();
oSession.utilReplaceInResponse('<b>','<u>');
}
}
 
 

在response返回的html中查找出指定字符串时把当前链接显示成红色(查找时不区分大小写)

复制代码

1
2
3
 
 
 
if (oSession.oResponse.headers.ExistsAndContains("Content-Type", "text/html") && oSession.utilFindInResponse("searchfor", false)>-1){
oSession["ui-color"] = "red";
}
 
 

移除响应内容中的所有div标签

复制代码

1
2
3
4
5
6
7
8
9
10
11
 
 
 
// 如果返回内容类型为 HTML, 那么移除所有的div标签
if (oSession.oResponse.headers.ExistsAndContains("Content-Type", "html")){
// 解码响应内容
oSession.utilDecodeResponse();
var oBody = System.Text.Encoding.UTF8.GetString(oSession.responseBodyBytes);
// 使用正则进行替换所有div标签
var oRegEx = /<div[^>]*>|<\/div>/gi;
oBody = oBody.replace(oRegEx, "");
//设置新的响应内容
oSession.utilSetResponseBody(oBody);
}
 
 

使用脚本控制断点功能

暂停所有post请求(断下后可以修改post的数据)

复制代码

1
2
3
 
 
 
if (oSession.HTTPMethodIs("POST")){
oSession["x-breakrequest"]="breaking for POST";
}
 
 

暂停所有包含指定关键字的post请求

复制代码

1
2
3
 
 
 
if (oSession.HTTPMethodIs("POST") && (oSession.utilFindInRequest("thekeyword", true) > -1)){
oSession["x-breakrequest"] = "keyword";
}
 
 

暂停url中请求类型是xml的请求

复制代码

1
2
3
 
 
 
if (oSession.url.toLowerCase().indexOf(".xml")>-1){
oSession["x-breakrequest"]="reason_XML";
}
 
 

暂停响应头是javascript类型的请求(一般用在修改响应数据的时候)

复制代码

1
2
3
 
 
 
if (oSession.oResponse.headers.ExistsAndContains("Content-Type", "javascript")){
oSession["x-breakresponse"]="reason is JScript";
}
 
 

还有很多功能请查看官方文档,都带的有示例

Fillder Script语法的更多相关文章

  1. Linux Kernel系列三:Kernel编译和链接中的linker script语法详解

    先要讲讲这个问题是怎么来的.(咱们在分析一个技术的时候,先要考虑它是想解决什么问题,或者学习新知识的时候,要清楚这个知识的目的是什么). 我在编译内核的时候,发现arch/arm/kernel目录下有 ...

  2. fillder script使用

    打开fiddler script editor 在fiddler中Rules -> Customize Rules打开 在editor中点击open, 打开CustomRules.js文件, 对 ...

  3. Java Script语法

    JavaScript 语法 JavaScript 是一个程序语言.语法规则定义了语言结构. JavaScript 语法 JavaScript 是一个脚本语言. 它是一个轻量级,但功能强大的编程语言. ...

  4. shell script语法高亮和自动缩进的配置

    编辑/etc/profile文件,在文件末尾加一下内容: export TERM=xterm-color 接着让其变为全局变量 source /etc/profile 编辑/etc/vimrc文件,在 ...

  5. Vue3 Composition API写烦了,试试新语法糖吧—setup script

    前言 Vue3发布近一年了,相信大家对Vue3的新特性,新语法都很熟悉了.那么在使用Composition API的过程中,有没有觉得整个过程比较繁琐.比如你的模板里用到了大量的state和方法的时候 ...

  6. 一起学HTML基础-JavaScritp简介与语法

    简介: 1.什么是JavaScript? 它是个脚本语言,作用是使 HTML 页面具有更强的动态和交互性,它需要有宿主文件,它的宿主文件就是html文件.  JavaScript 是 Web 的编程语 ...

  7. js语法规则 ---console.log ---- prompt ----基本类型 ---parseInt

    在页面中可以在body里面加入type=”text/javascript” 例如: <script type="text/javascript"> </scrip ...

  8. HTML-★★★★★JavaScritp简介与语法★★★★★

    简介: 1.什么是JavaScript? 它是个脚本语言,作用是使 HTML 页面具有更强的动态和交互性,它需要有宿主文件,它的宿主文件就是html文件.  JavaScript 是 Web 的编程语 ...

  9. 测开之路一百:jquery引用、语法、事件

    工作中一般会使用jquery代替js,jquery官网:https://jquery.com/ 引用jquery: 第一种方式:下载引用: jquery下载官网:https://jquery.com/ ...

随机推荐

  1. 真机调试adb:wait for device 解决方案

    1.adb logcat 命令的时候,cmd总是提示adb server did't ACK.       分析一下,明显adb server没有开启成功,服务启动失败一般都是端口绑定失败,所以我们只 ...

  2. vue 自动识别PC、移动端,并跳转到对应页面

    app.vuehead中添加 <!--自动识别PC.移动--> <script src="static/js/uaredirect.js" type=" ...

  3. linux之重定向命令

    1.shell重定向概念:shell重定向包含输出重定向和输入重定向 何为输入输出方向?何为标准输入输出方向? 标准输入方向:从键盘读取用户输入的数据,然后再把数据拿到程序(C语言程序.Shell 脚 ...

  4. SpringMVC 使用验证框架 Bean Validation(上)

    SpringMVC 使用验证框架 Bean Validation(上) 对于任何一个应用而言在客户端做的数据有效性验证都不是安全有效的,这时候就要求我们在开发的时候在服务端也对数据的有效性进行验证. ...

  5. php 安装gzip

    https://jingyan.baidu.com/article/636f38bb3e538ad6b84610e6.html http://w3cgeek.com/configure-error-p ...

  6. node.js中使用zlib模块进行数据压缩和解压

    我们可以使用 zlib 模块来对数据进行压缩和解压处理,减小数据体积,加快传输速度. 一.通过创建转换流,对文件进行压缩和解压 const fs = require('fs'); const zlib ...

  7. JS的事件流的概念(重点)

      09-JS的事件流的概念(重点)   在学习jQuery的事件之前,大家必须要对JS的事件有所了解.看下文 事件的概念 HTML中与javascript交互是通过事件驱动来实现的,例如鼠标点击事件 ...

  8. python 安装第三方包时 read timed out

    记录下安装python第三方包超时报错,解决方法:(以安装numpy为例) pip install numpy 报错:raise ReadTimeoutError(self._pool, None, ...

  9. kbmmw 做REST 服务签名认证的一种方式

    一般对外提供提供REST 服务,由于信息安全的问题, 都要采用签名认证,今天简单说一下在KBMMW 中如何 实现简单的签名服务? 整个签名服务,模仿阿里大鱼的认证方式,大家可以根据实际情况自己修改. ...

  10. Maven二

    1 回顾 1.1 Maven的好处 节省空间 对jar包做了统一管理 依赖管理 一键构建 可跨平台 应用在大型项目可提高开发效率 1.2 Maven安装部署配置 1.3 Maven的仓库 本地仓库 远 ...