Fiddler如何自动修改请求和响应包

Charles的Map功能可以将某个请求进行重定向,用重定向的内容响应请求的内容。这个功能非常方便。在抓包过程当中,有时候为了调试方便,需要将线上的服务定位到内网。比如我们线上的服务器域名为 api.example.com,而内网的用于调试的服务器域名为 test.neiwang.com,那么就需要将所有域名 api.example.com替换为 test.neiwang.com,就可以使用charles的这个功能,但是charles是收费软件,使用破解版又可能不安全,所以我们需要用一款免费抓包工具来代替,fiddler就是个不错的选择。但是fiddler并没有map功能,不过没关系,我们可以通过编写脚本来实现这个功能。
Fiddler菜单中,Rules->Custon Rules,或按Ctrl+R键,编辑ScriptEditor代码文件,在OnBeforeRequest函数(static function OnBeforeRequest(oSession: Session))里面加上几句代码:
端口不同:

if (oSession.host.ToLower=="https://api.example.com:8080") {
    oSession.host="http://test.neiwang.com:9090";
}

端口相同:

if (oSession.HostnameIs("www.bayden.com")) {
  oSession.hostname="test.bayden.com";
}

拓展开来,如果我们需要修改请求和响应信息,应该怎么编写代码呢?
1.增加请求头:

oSession.oRequest["NewHeaderName"] = "New header value";

2.将请求的某个页面替换为同一个站点的不同页面

if (oSession.PathAndQuery=="/version1.css") {
  oSession.PathAndQuery="/version2.css";
}

3.将请求的某个页面替换为不同站点的页面

if (oSession.url=="www.example.com/live.js") {
  oSession.url = "dev.example.com/workinprogress.js";
}

修改响应:static function OnBeforeResponse(oSession: Session)
1.删除响应头

oSession.oResponse.headers.Remove("Set-Cookie");

2.解压缩和unchunk一个HTTP响应

// Remove any compression or chunking from the response in order to make it easier to manipulate
oSession.utilDecodeResponse();

3.在响应的HTML中搜索关键词(不区分大小写)

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

4.搜索和替换HTML内容

if (oSession.HostnameIs("www.bayden.com") && oSession.oResponse.headers.ExistsAndContains("Content-Type","text/html")){
  oSession.utilDecodeResponse();
  oSession.utilReplaceInResponse(‘<b>‘,‘<u>‘);
}

5.移除所有div标签和标签中的内容

// If content-type is HTML, then remove all DIV tags
if (oSession.oResponse.headers.ExistsAndContains("Content-Type", "html")){
  // Remove any compression or chunking
  oSession.utilDecodeResponse();
  var oBody = System.Text.Encoding.UTF8.GetString(oSession.responseBodyBytes);

  // Replace all instances of the DIV tag with an empty string
  var oRegEx = /<div[^>]*>(.*?)<\/div>/gi;
  oBody = oBody.replace(oRegEx, "");

  // Set the response body to the div-less string
  oSession.utilSetResponseBody(oBody);
}

参考链接

https://www.jianshu.com/p/775f83e45a02

https://docs.telerik.com/fiddler/knowledgebase/fiddlerscript/modifyrequestorresponse

原文地址:https://www.cnblogs.com/goodhacker/p/11142663.html

时间: 2024-10-08 03:58:00

Fiddler如何自动修改请求和响应包的相关文章

fiddler 设置断点修改请求,响应数据及模拟响应

在测试过程中,有时候需要修改请求或响应数据,或者直接模拟服务器响应,此时可以使用fiddler进行此类操作.可以使用断点功能完成. 一.修改请求数据 在发起请求后,需要修改请求的数据时,可以设置请求前设置断点 (1.设置请求前断点 Rules--Automatic breakpoints--before request(或者按F11键) 这种方式的断点会对所有请求生效 或者 在命令行中,输入bpu 域名 这种方式只会对配置的域名添加断点,访问其他的可以正常访问,不会有断点 (2.选中请求,进入I

Fiddler修改请求或响应内容

1.修改请求内容 方法一:设置请求前断点,修改请求后发送 1)设置断点 2)选中请求,在inspectors下修改请求内容 3)修改请求后,点击Break on Response按钮,进行请求的发送 4)点击Run to Completion,将响应结果返回 说明,只修改请求内容可跳过第3步,直接进行第4步操作 方法二:重发请求时修改请求参数,修改后发送请求 2.修改响应结果 方法一:修改请求参数后修改响应结果 修改请求参数-->点击Break on Response-->修改响应结果--&g

Fiddler设置断点修改请求参数

fiddler有个强大的功能,可以修改发送到服务器的数据包,但是修改前需要拦截,即设置断点.设置断点后,开始拦截接下来所有网页,直到取消断点. 1.打开fiddler菜单中Rules->Automatic Breakpoints->Before Requests,设置断点也可以使用快捷键F11. 开启断点后底部显示一个红色T标识,证明设置断点成功了,此时就会拦截发出去的请求 2.以百度为例在浏览器中搜索某项内容,然后请求会被Fiddler拦截到 找到我们搜索的请求进行修改里面的内容 修改完成后

利用Fiddler对Jmeter的请求进行抓包

前言 有时候,为了得到更详细的请求结果,我们可能需要使用Fiddler结合Jmeter来抓包分析,从而更好的辅助测试. 遇到的问题 这里以一个获取学生信息的接口为例进行说明. 当我在Jmeter里按接口文档正确设置好请求,打开Fiddler之后,发现无法抓到Jmeter的请求. 从图片可以看到,Fiddler并没有抓到Jmeter发送的请求. 问题分析 简单分析一下,Fiddler在使用过程中是以代理Web服务器的形式进行的,代理地址为127.0.0.1,端口为8888,它在运行时会监听8888

Fiddler抓包,如何修改请求数据

浏览器抓包(工具:fiddler)并 修改请求内容 工具下载:https://pan.baidu.com/s/1pyKdAwgTdNNvoWA2bGlk9A 1.正常打开网页,输入要提交的内容 2.打开工具,f11暂停了页面的所有提交动作 3.这时再点击提交按钮,请求的数据就会被工具拦截 4.双击截取的数据,右侧会看到请求的具体内容,任意修改数据 5.点击绿色按钮 run to completion(之后可以查看状态,200或3XX代表成功) 6.点击两次暂停按钮,才能让页面继续运行 注意:此工

Fiddler抓取https请求 &amp; Fiddler抓包工具常用功能详解

大家好,我是TT,互联网测试行业多年,没有牛逼的背景,也没有什么可炫耀的,唯独比他人更努力,在职场打拼.遇到过的坑,走过的弯路,愿意与大家分享,分享自己的经验,少走弯路.首发于个人公众号[测试架构师] 原文如下: 先来看一个小故事: 小T在测试APP时,打开某个页面展示异常,于是就跑到客户端开发小A那里说:"你这个页面做的有问题,页面展示异常":小A说:"这哪是我的问题,你去找后台吧,后台接口返回数据有问题":小T就屁颠屁颠的跑到后台接口开发小M那里说:"

Fiddler模拟自动响应数据

Fiddler模拟自动响应数据 定位到要修改的部分 2.将返回的数据保存到本地,保存成网页,并修改响应数据 找到修改的部分,修改之 3.再次请求刷新首页,将工具定位到autoresponder将接口加入规则 4.导入刚才的网页 再次刷新页面就可以看到自动响应成了我们修改后的数据 原文地址:https://www.cnblogs.com/reblue520/p/10337265.html

基于PLC1850平台的ARP包请求与响应

一.以太网ARP报文格式 ①.以太网目的地址:占6个字节(接收方的MAC地址,不清楚时发广播地址:FF-FF-FF-FF-FF-FF) ②.以太网源地址:占6个字节(发送方的MAC地址) ③.帧类型:占2个字节(IPv4: 0x0800,ARP:0x0806,PPPoE:0x8864,802.1Q tag: 0x8100,IPV6: 0x86,DDMPLS Label:0x8847) ④.硬件类型:占2个字节(以太网的值为1即:0x0001) ⑤.协议类型:占2个字节(IPv4: 0x0800,

Zuul 修改 请求头、响应头 (死磕)

疯狂创客圈 Java 高并发[ 亿级流量聊天室实战]实战系列 [博客园总入口 ] 架构师成长+面试必备之 高并发基础书籍 [Netty Zookeeper Redis 高并发实战 ] 疯狂创客圈 高并发 环境 视频,陆续上线: Windows Redis 安装(带视频) Linux Redis 安装(带视频) Windows Zookeeper 安装(带视频) Linux Zookeeper 安装(带视频) RabbitMQ 离线安装(带视频) Nacos 安装(带视频) ElasticSear