[TOC]
<br>
### FiddlerScript 介绍
FiddlerScript提供了请求/响应过程中的事件接口,通过这些接口,我们可以编写代码,注册自定义逻辑
打开FiddlerScript编辑器
方式一:通过【Rules】->【Customize Rules】 打开Fiddler ScriptEditor
方式二:通过右侧菜单“FiddlerScript”Tab页进入FiddlerScript编辑器
![](https://box.kancloud.cn/95936bd998f7750aeeaed549a8d9711e_619x655.jpg)
我喜欢通过方式二进行编辑,通过Go to 可以跳转定位到关键的系统方法中。
**FiddlerScript中最关键的两个方法:**
- OnBeforeRequest:每次请求之前调用
- OnBeforeResponse:每次响应之前调用
### 修改请求信息
在OnBeforeRequest函数中,添加代码片段:
```python
// 域名替换,将一台服务器的所有请求指向另一台服务器上的同一端口
if (oSession.HostnameIs("www.bayden.com")) {
oSession.hostname="test.bayden.com";
}
// 域名与端口替换
if (oSession.host=="www.bayden.com:8080") {
oSession.host="test.bayden.com:9090";
}
// 域名替换, 包含HTTPS传输协议
if (oSession.HTTPMethodIs("CONNECT") && (oSession.PathAndQuery == "www.example.com:443")) {
oSession.PathAndQuery = "beta.example.com:443";
}
if (oSession.HostnameIs("www.example.com")) oSession.hostname = "beta.example.com";
// 修改host,将域名映射到指定IP
if (oSession.HostnameIs("subdomain.example.com")){
oSession.bypassGateway = true; // Prevent this request from going through an upstream proxy
oSession["x-overrideHost"] = "128.123.133.123"; // DNS name or IP address of target server
}
// 将单个页面的请求重新定位到不同的页面,可能位于不同的服务器上。 (通过更改请求的主机头来重新定位)
if (oSession.url=="www.example.com/live.js") {
oSession.url = "dev.example.com/workinprogress.js";
}
// 添加 header
oSession.oRequest["NewHeaderName"] = "New header value";
// 阻止发送cookie
oSession.oRequest.headers.Remove("Cookie");
//修改请求url
if (oSession.uriContains("notice/recover")) {
oSession.fullUrl="https://api.test.com/notice/recover?k1=v1&k2=v2"
// 修改post请求的boby
var strBody=oSession.GetRequestBodyAsString(); // 获取请求中的body字符串
strBody=strBody.replace("1111","2222");
FiddlerObject.alert(strBody);// 弹个对话框检查下修改后的body
oSession.utilSetRequestBody(strBody);
// 修改JSON参数
if(oSession.fullUrl.Contains("notice/recover")){
var new_data='{"user":"123456","pwd":"ba59be56e0abe10a4957f20fdc39883e","captcha":null}';//更改后的JSON数据
var requestJson=Fiddler.WebFormats.JSON.JsonDecode(new_data);
var reJsonDes=Fiddler.WebFormats.JSON.JsonEncode(requestJson.JSONObject);
oSession.utilSetRequestBody(reJsonDes);
}
```
### 修改响应信息
在OnBeforeResponse函数中,添加代码片段:
```python
// 从响应HTML中查找和替换
if (oSession.HostnameIs("www.bayden.com") && oSession.oResponse.headers.ExistsAndContains("Content-Type","text/html")){
oSession.utilDecodeResponse(); //解码
oSession.utilReplaceInResponse('<b>','<u>');
}
// 修改响应boby,如修改Result值1更改为2
if (oSession.uriContains("notice/recover")) {
var bobystr = oSession.GetResponseBodyAsString();
bobystr = bobystr.Replace("\"Result\":1","\"Result\":2");
oSession.utilSetResponseBody(bobystr);
}
// 修改JSON返回值
if(oSession.fullUrl.Contains("notice/recover")){
var reponseJsonString=oSession.GetResponseBodyAsString();//获取JSON字符串
var responseJSON=Fiddler.WebFormats.JSON.JsonDecode(reponseJsonString);//转化为JSON数据,可编辑
var str='{"code":"1"}';//自定义JSON
responseJSON.JSONObject['data']= Fiddler.WebFormats.JSON.JsonDecode(str).JSONObject;//转换需要
var myResponseJSON= Fiddler.WebFormats.JSON.JsonEncode(responseJSON.JSONObject);//转换需要
oSession.utilSetResponseBody(myResponseJSON);//设置ResponseBody中的JSON数据
}
```
### 更多
更多信息,请查看官方文档[https://docs.telerik.com/fiddler/KnowledgeBase/FiddlerScript/ModifyRequestOrResponse](https://docs.telerik.com/fiddler/KnowledgeBase/FiddlerScript/ModifyRequestOrResponse)
<hr style="margin-top:100px">
:-: ![](https://box.kancloud.cn/331f659e8e6cddb0d9f182e00e32803f_258x258.jpg)
***微信扫一扫,关注“python测试开发圈”,获取更多测试开发分享!***
- 前言
- Fiddler01-抓包原理介绍与配置
- Fiddler02-菜单功能介绍
- Fiddler03-轻松玩转Fiddler
- Fiddler04-进阶使用FiddlerScript
- Fiddler05-使用FiddlerScript对微信文章互动量进行监控
- Postman01-介绍与安装
- Postman02-HTTP请求与响应
- Postman03-Collection管理与运行
- Postman04 -变量详解
- Postman05-初级脚本使用
- Postman06-实例小结篇
- JMeter01-JMeter就是这么简单
- JMeter02-一个完整实战包你学会使用JMeter
- JMeter03-在JMeter中使用BeanShell编程
- JMeter04-图形化和非图形化运行JMeter
- JMeter05-生成美观的HTML测试报告
- JMeter06-JMeter+Jenkins实战
- JMeter07-解析session与cookie