当前位置: 首页 > article >正文

FiddlerScript学习笔记

参考官方文档:https://www.fiddlerbook.com/fiddler/dev/scriptsamples.asp

json

// 反序列化
static function jsonDecode(str : String){return Fiddler.WebFormats.JSON.JsonDecode(str).JSONObject;
}
// 序列化
static function jsonEncode(jsonObject : Object) {return Fiddler.WebFormats.JSON.JsonEncode(jsonObject);
}

使用

// 反序列化
var job = jsonDecode('{"name":"zhangsan"}');
// 修改、增加属性
job["age"] = 18;
// 序列化
var jsonString = jsonEncode(job);FiddlerObject.log("job.name: \t" + job["name"]);
// 输出 job.name: 	zhangsanFiddlerObject.log("new json info: \t" + jsonString);
// 输出 new json info: 	{"age":18, "name":"zhangsan"}

发请求

发post请求,下面代码是用文心一言生成的

static function doPostData(reqUrl:String,reqBody:String, callback: Function){//把响应的json内容通过http发送其它地方var _xhr = new ActiveXObject('Microsoft.XMLHTTP');var url = reqUrl;// 这里处理回调事件_xhr.onreadystatechange = function() {if (_xhr.readyState === 4) {if (_xhr.status === 200) {callback(_xhr.responseText);} else {callback(new Error("Request failed with status " + _xhr.status));}}}_xhr.open('POST', url, true);_xhr.setRequestHeader("Content-Type", "application/json; charset=utf-8");_xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest");_xhr.send(reqBody);
}

路径检查

如果要判断请求路径中有没有指定字符,可以使用uriContains方法,不区分大小写,而且是拿完整路径来判断的。如果需要区分大小写可以使用fullUrl.Contains方法

FiddlerObject.log(oSession.fullUrl);
// 输出 http://localhost:8888/userInfo?type=user
FiddlerObject.log('uriContains(type):\t'+oSession.uriContains('type'));
// 输出 uriContains(type):	true
FiddlerObject.log('uriContains(userinfo):\t'+oSession.uriContains('userinfo'));
// 输出 uriContains(userinfo):	true
FiddlerObject.log('uriContains(localhost):\t'+oSession.uriContains('localhost'));
// 输出 uriContains(localhost):	true
FiddlerObject.log('uriContains(LOCALHOST):\t'+oSession.uriContains('LOCALHOST'));
// 输出 uriContains(LOCALHOST):	trueFiddlerObject.log('fullUrl.Contains(userinfo):\t'+oSession.fullUrl.Contains("userinfo"));
// 输出 fullUrl.Contains(userinfo):	false
FiddlerObject.log('fullUrl.Contains(userInfo):\t'+oSession.fullUrl.Contains("userInfo"));
// 输出 fullUrl.Contains(userInfo):	true
FiddlerObject.log('fullUrl.Contains(localhost):\t'+oSession.fullUrl.Contains("localhost"));
// 输出 fullUrl.Contains(localhost):	true
FiddlerObject.log('fullUrl.Contains(LOCALHOST):\t'+oSession.fullUrl.Contains("LOCALHOST"));
// 输出 fullUrl.Contains(LOCALHOST):	false

路径和查询参数

FiddlerObject.log(oSession.fullUrl);
// 输出 http://localhost:8888/userInfo?type=user&format=json
FiddlerObject.log("host:\t"+oSession.host);
// 输出 host:	localhost:8888
FiddlerObject.log("hostname:\t"+oSession.hostname);
// 输出 hostname:	localhost// 修改
oSession.host="test.bayden.com:9090";
oSession.hostname="test.bayden.com";FiddlerObject.log('PathAndQuery:\t'+oSession.PathAndQuery);
// 输出 PathAndQuery:	/userInfo?type=user&format=json// 修改路径和查询参数
oSession.PathAndQuery="/version2.css";

请求头

请求头和响应头的方法一致,以下代码中的oRequestoResponse都可以互换

// 添加、修改请求头
oSession.oRequest["NewHeaderName"] = "New header value";
oSession.oRequest.headers.Add("Content-Type", "text/html");// 获得请求头,下面两种方法都可以,键值不区分大小写
oSession.oRequest['cookie'];
oSession.oRequest.headers['Cookie'];// 删除请求头
oSession.oRequest.headers.Remove("Cookie");// 是否存在指定请求头
oSession.oRequest.headers.Exists("Cookie")
// 是否存在指定请求头,且值包含
oSession.oResponse.headers.ExistsAndContains("Content-Type", "image/")
// 是否存在指定请求头,且值相等
oSession.oRequest.headers.ExistsAndContains("Content-Type", "application/json;charset=utf-8")

解压缩

如果发现拿到的请求体或响应体是gzip压缩后的,可以使用以下方法解压缩

//对请求数据解码
oSession.utilDecodeRequest();
//对返回数据解码
oSession.utilDecodeResponse()

请求体

获取与生效

// 确定请求体编码格式
FiddlerObject.log("encoding:\t"+oSession.GetRequestBodyEncoding());
// encoding:	System.Text.UTF8Encoding// 获取,下面两种方法都可以
var oBodyString = System.Text.Encoding.UTF8.GetString(oSession.requestBodyBytes);
// 应该是默认使用utf-8解码
var oRequestBody = oSession.GetRequestBodyAsString()// 生效修改后的请求体
oSession.utilSetRequestBody(oRequestBody);

检查与修改

// 查询请求体中是否包含指定字符,不存在返回-1。第二个参数表示是否区分大小写,false为不区分
oSession.utilFindInRequest("document.cookie", false);
// 在请求体中替换内容
oSession.utilReplaceInRequest('<b>','<u>');

响应体

获取和生效的方法与请求体的方法类似

// 确定请求体编码格式
FiddlerObject.log("encoding:\t"+oSession.GetResponseBodyEncoding());
// encoding:	System.Text.UTF8Encoding// 获取,下面两种方法都可以
var oBodyString = System.Text.Encoding.UTF8.GetString(oSession.responseBodyBytes);
// 应该是默认使用utf-8解码
var oResBody = oSession.GetResponseBodyAsString();// 生效修改后的请求体
oSession.utilSetResponseBody(oResBody);

模拟DNS解析

如果请求地址中主机部分使用的是域名,则可以模拟修改windows中的hosts文件的效果

// 这样所有对域名subdomain.example.com的请求,都会被转发到128.123.123.123这个主机上
if (oSession.HostnameIs("subdomain.example.com")){oSession.bypassGateway = true;                   // Prevent this request from going through an upstream proxyoSession["x-overrideHost"] = "128.123.133.123";  // DNS name or IP address of target server
}

控制当前请求在Fiddler界面列表中的展示效果

以下是将第二列的英文翻译成中文后的Markdown格式表格:

Flag Name含义
ui-hide从会话列表中隐藏会话,就是不会显示在列表中,但请求仍会被fiddler代理,会直接放行。会话将继续运行。隐藏会话上的断点将被忽略。注意:隐藏会话将释放原本用于在内存中保存会话数据的内存。
ui-color此标志的值决定了在会话列表中呈现此会话时使用的字体颜色。可以写redgreen这些标准颜色
ui-backcolor此标志的值决定了在会话列表中此会话条目使用的背景颜色。
ui-bold设置为true时,此会话的条目在会话列表中将加粗显示。
ui-italic设置为true时,此会话的条目在会话列表中将斜体显示。
ui-strikethrough设置为true时,此会话的条目在会话列表中将加删除线显示。
ui-customcolumn此标志的值显示在Fiddler会话列表的“用户定义”列中。
ui-breakrequest如果存在,将在发出请求之前暂停此会话的执行。暂停后就可以修改请求体等信息,然后再放行
ui-breakresponse如果存在,将在收到响应后暂停此会话的执行。暂停后就可以修改响应内容
ui-comments用户为此会话设置的注释(如果有)。
x-overrideHost提供用于DNS解析目的的Host:Port组合。请注意,此机制不会更改请求上的HOST头,因此如果存在上游网关,则此机制无效。
x-overrideGateway提供应用于代理此请求的网关的Host:Port组合,或直接发送到原始服务器的DIRECT。
x-serversocket只读。包含有关服务器套接字重用状态的字符串。
x-securepipe只读。包含有关安全服务器套接字重用状态的字符串。
x-no-decrypt如果设置在CONNECT隧道上,则隧道中的流量将不会被解密。需要Fiddler v2.0.8.9或更高版本。
https-Client-Certificate应附加到此安全请求的客户端证书(例如.CER)的文件名。需要Fiddler v2.1.0.3或更高版本。
x-SuppressProxySupportHeader阻止Fiddler向请求HTTP/401或HTTP/407响应中添加“Proxy-Support: Session-Based-Authentication”头,这些响应请求Negotiate或NTLM身份验证。需要Fiddler v2.1.4.2或更高版本。
x-ProcessInfo有关本地请求来源的信息(模块名称和进程ID)。就是在Fiddler界面中,列表的Process那一列显示的内容。需要Fiddler v2.1.4.1或更高版本。
x-clientIP只读。指示发送此请求的客户端IP。当网络上的多台计算机指向单个Fiddler实例时,此功能特别有用。
x-clientport只读。指示发送此请求的客户端上的端口。
x-hostIP只读。指示用于此请求的服务器的IP地址。
x-TTFB已弃用。使用oSession.Timer代替。到响应的第一个字节的时间(以毫秒为单位)。
x-TTLB已弃用。使用oSession.Timer代替。到响应的最后一个字节的时间(以毫秒为单位)。
request-trickle-delay延迟每个出站请求数据千字节的毫秒数。
response-trickle-delay延迟每个入站响应数据千字节的毫秒数。
x-HTTPProtocol-Violation包含在处理此会话时遇到的HTTP协议违规的数据。
x-replywithfile此标志的值是Captures/Responses文件夹中(或完全限定的文件名)的文件名,该文件包含要返回给客户端的HTTP响应,而不是将请求发送到服务器。
x-repliedwithfile只读。包含x-replywithfile中指定的文件名,在自动响应加载后。
log-drop-request-body在将请求发送到服务器后,从会话列表中删除请求正文。对于最小化内存使用很有用。
log-drop-response-body在将响应发送到客户端后,从会话列表中删除响应正文。对于最小化内存使用很有用。
x-OverrideCertCN指定应出现在此CONNECT隧道的Fiddler生成证书的CN字段中的主机名。

相关文章:

FiddlerScript学习笔记

参考官方文档&#xff1a;https://www.fiddlerbook.com/fiddler/dev/scriptsamples.asp json // 反序列化 static function jsonDecode(str : String){return Fiddler.WebFormats.JSON.JsonDecode(str).JSONObject; } // 序列化 static function jsonEncode(jsonObject : Obje…...

正点原子[第三期]Arm(iMX6U)Linux移植学习笔记-5.1 uboot顶层Makefile分析-VSCode工程创建

前言&#xff1a; 本文是根据哔哩哔哩网站上“Arm(iMX6U)Linux系统移植和根文件系统构键篇”视频的学习笔记&#xff0c;在这里会记录下正点原子 I.MX6ULL 开发板的配套视频教程所作的实验和学习笔记内容。本文大量引用了正点原子教学视频和链接中的内容。 引用&#xff1a; …...

Linux内核IPoIB驱动中的RSS队列选择机制分析

摘要 本文深入分析了Linux内核中InfiniBand over Ethernet(IPoIB)驱动程序的发送队列选择函数ipoib_select_queue_sw_rss的实现。该函数通过复杂的条件编译和逻辑分支,实现了基于软件的接收端扩展(RSS)功能,确保网络流量在多队列环境下的高效分发,提升网络性能和吞吐量…...

js数组遍历十种方法

在JavaScript中&#xff0c;数组遍历可以有多种方法。以下列举了10种常用的数组遍历方式&#xff1a; For 循环 let array [1, 2, 3, 4, 5]; for (let i 0; i < array.length; i) {console.log(array[i]); }For-of 循环&#xff08;ES6&#xff09; let array [1, 2, 3, …...

OTP单片机调试工具之—单线数据编码

OTP单片机调试工具在实现过程中离不开单线数据的传输&#xff0c;那么使用哪一种方式的数据编码会比较好呢&#xff1f; 我所了解的主要有以下三种&#xff1a; 1.UART&#xff08;串口&#xff09;&#xff0c;这种方式在单片机和pc之间进行传输都非常常见&#xff0c;效率比较…...

SWPU 2022 新生赛

webdog1__start if (isset($_GET[web])) {$first$_GET[web];if ($firstmd5($first)) md5 自等 web0e215962017 &#xff08;md5后也是 0e) 登入后得到提示&#xff0c;robots.txt 访问 f14g.php 返回包里发现 hint > if (isset($_GET[get])){$get$_GET[get];if(!strs…...

Java 基础到进阶企业技巧(二)

在 Java 学习的旅程中&#xff0c;我们逐步探索了其丰富的知识体系&#xff0c;从基础的数据类型、字符串操作&#xff0c;到流程控制、运算符的运用&#xff0c;每一步都为我们构建强大的编程能力奠定基石。同时&#xff0c;了解这些知识在 Java 全栈开发中的应用场景&#xf…...

【后端】【django】【related_name】`related_name` 的作用

related_name 的作用 related_name 用于 Django 的 ForeignKey 和 OneToOneField&#xff0c;用于 反向访问 关联模型的数据。 默认情况下&#xff0c;Django 会自动生成一个反向关系的名字&#xff0c;但如果多个外键指向同一个模型&#xff0c;就可能发生命名冲突。related…...

Deepseek-R1大模型微调实战技术深度解析

一、Deepseek-R1架构特性与微调适配性分析 1.1 核心架构创新对微调的影响 Deepseek-R1基于Deepseek-V3-Base架构,通过MoE(Mixture-of-Experts)与MLA(Multi-Head Latent Attention)的协同设计,实现了参数规模与计算效率的平衡。其6710亿参数总量中,每个token仅激活37B参…...

Google最新生图模型Gemini-2.0-Flash-Exp免费用

Google发布新生图模型 Google释放出最新生图模型&#xff0c;在发布说明中提到&#xff1a; 2025年3月12日 在 Gemini-2.0-Flash-Exp 中发布原生图像输出功能 Gemini 2.0 Flash Experimental 模型发布&#xff0c;支持原生图像输出功能。开发者能够使用 Gemini 进行图像输出和…...

leecode695.岛屿的最大面积

跟求岛屿数量的题目差不多&#xff0c;依旧是深度搜索或者广度搜索问题 class Solution { private:int maxAreaOfIsland(vector<vector<int>>& grid,vector<vector<bool>>& visited,int x,int y){if(x<0||x>grid.size()||y<0||y>…...

助力字体管理,规避设计卡顿的得力工具

在设计领域&#xff0c;字体看似平常&#xff0c;却常常在关键时刻“掉链子”&#xff0c;让设计师们头疼不已。面对海量字体库&#xff0c;找到心仪那款宛如大海捞针&#xff0c;字体安装过多还会造成软件卡顿&#xff0c;这些麻烦事儿&#xff0c;频繁与字体打交道的朋友肯定…...

零基础上手Python数据分析 (4):Python数据结构精讲 - 列表、元组、字典、集合

写在前面 回顾一下,在之前的博客中,我们学习了 Python 的基本数据类型(数值、字符串、布尔值)和核心语法(运算符、变量、流程控制、函数、模块)。 现在,我们已经掌握了 Python 编程的基础知识。 接下来,我们将进入数据分析的关键环节: 数据组织。 在数据分析中,数据…...

数统院复试来啦,西电数学与统计学院—考研录取情况

4西安电子科技大学—数学与统计学院—考研录取统计 01、数学与统计学院各个方向 02、24数学与统计学院近三年复试分数线对比 数统院24年院线相对于23年院线增加高达30分&#xff0c;确实增长浮动比较高&#xff0c;接近30分的水平&#xff0c;因此大家更需要好好去努力&#xf…...

Windows功能之FTP服务器搭建

一、创作背景 之前有用linux系统搭建过ftp服务器&#xff0c;最近想着用windows系统也顺便搭建一个&#xff0c;看网上有第三方服务软件一键部署&#xff0c;记得windows可以不借助第三方软件就可以搭建&#xff0c;就想顺便操作试试&#xff0c;结果老是连接不上&#xff0c;费…...

leetcode hot100普通动态规划/基础DP

1️⃣1️⃣ 普通动态规划&#xff08;基础 DP&#xff09; 70. 爬楼梯 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢&#xff1f; 题解: 动态规划Dynamic Programming ,在观察动态中找到如何规划解题的步骤…...

基于Python的天气预报数据可视化分析系统-Flask+html

开发语言&#xff1a;Python框架&#xff1a;flaskPython版本&#xff1a;python3.8数据库&#xff1a;mysql 5.7数据库工具&#xff1a;Navicat11开发软件&#xff1a;PyCharm 系统展示 系统登录 可视化界面 天气地图 天气分析 历史天气 用户管理 摘要 本文介绍了基于大数据…...

【鸿蒙开发】Hi3861学习笔记-Visual Studio Code安装(New)

00. 目录 文章目录 00. 目录01. Visual Studio Code概述02. Visual Studio Code下载03. Visual Studio Code安装04. Visual Studio Code插件05. 附录 01. Visual Studio Code概述 vscode是一种简化且高效的代码编辑器&#xff0c;同时支持诸如调试&#xff0c;任务执行和版本管…...

git报错:“fatal:refusing to merge unrelated histories“

新建仓库&#xff0c;克隆本地项目到新仓库&#xff0c;首次同步本地已提交的代码到远程时&#xff0c;报错&#xff1a;"fatal:refusing to merge unrelated histories" 。 报错意思是&#xff1a;致命的&#xff1a;拒绝合并无关的历史。 一、问题背景&#xff…...

前端面试笔试

前端面试笔试 1 相对路径和绝对路径的区别 区别&#xff1a;他们描述文件或目录位置的方式不同 ‌绝对路径‌&#xff1a;绝对路径是指从系统的根目录开始的完整路径&#xff0c;无论当前工作目录在哪个位置&#xff0c;绝对路径始终指向文件或目录的确切位置。绝对路径适用…...

目前人工智能的发展,判断10年、20年后的人工智能发展的主要方向,或者带动的主要产业

根据2025年的最新行业研究和技术演进趋势&#xff0c;结合历史发展轨迹&#xff0c;未来10-20年人工智能发展的主要方向及带动的产业将呈现以下六大核心趋势&#xff1a; 一、算力革命与底层架构优化 核心地位&#xff1a;算力将成为类似“新能源电池”的基础设施&#xff0c;…...

Redis基本命令手册——五大类型

目录 一&#xff1a;基本操作 二&#xff1a;字符串&#xff08;String&#xff09; 三&#xff1a;哈希&#xff08;Hash) 四&#xff1a;列表&#xff08;List&#xff09; 五&#xff1a;集合&#xff08;Set&#xff09; 六&#xff1a;有序集合&#xff08;Zset&…...

历年华中科技大学计算机考研复试上机真题

历年华中科技大学计算机考研复试上机真题 2022华中科技大学计算机考研复试上机真题 2021华中科技大学计算机考研复试上机真题 2019华中科技大学计算机考研复试上机真题 在线评测&#xff1a;https://pgcode.cn 八进制 题目描述 输入一个整数&#xff0c;将其转换成八进制数…...

Python----数据分析(Pandas二:一维数组Series,Series的创建,Series的属性,Series中元素的索引与访问)

一、一维数组Series Series&#xff1a;一维数组,与Numpy中的一维array类似。它是一种类似于一维数组的对象&#xff0c;是由一组数据(各种 NumPy 数据类型)以及一组与之相关的数据标签(即索引)组成。 仅由一组数据也可产生简单的 Series 对象&#xff0c;用值列表生成 Series …...

java数据结构(复杂度)

一.时间复杂度和空间复杂度 1.时间复杂度 衡量一个程序好坏的标准&#xff0c;除了能处理各种异常&#xff0c;还有就是时间效率&#xff0c;当然&#xff0c;对于一些配置好的电脑数据处理起来就是比配置低的高&#xff0c;但从后期发展来看&#xff0c;当数据量足够庞大时&…...

windows协议不再续签,华为再无windows可用,将于四月发布鸿蒙PC

大家好&#xff0c;我是国货系创始人张云泽&#xff0c;最近不少小伙伴在后台问&#xff1a;“听说Windows协议要到期了&#xff1f;我的电脑会不会变砖&#xff1f;”还有人说&#xff1a;“华为笔记本以后用不了Windows了&#xff1f;鸿蒙系统能用吗&#xff1f;”今天咱们就…...

HTML+CSS基础(了解水平)

html 的介绍 学习目标 能够知道html的作用 1. html的定义 2. html的定义 HTML 的全称为&#xff1a;HyperText Mark-up Language, 指的是超文本标记语言。 标记&#xff1a;就是标签, <标签名称> </标签名称>, 比如: <html></html>、<h1><…...

[设计模式]1_设计模式概览

摘要&#xff1a;设计模式原则、设计模式的划分与简要概括&#xff0c;怎么使用重构获得设计模式并改善代码的坏味道。 本篇作概览与检索用&#xff0c;后续结合源码进行具体模式深入学习。 目录 1、设计模式原理 核心原则&#xff08;语言无关&#xff09; 本质原理图 原…...

ClickHouse总体学习

文章目录 一、简介1、OLAP 与 OLTP 的对比2、列式储存的好处3、DBMS 的功能4、多样化引擎5、高吞吐写入能力6、数据分区与线程级并行 二、Explain 查看执行计划三、建表优化1、数据类型2、分区和索引3、表参数4、写入和删除优化 四、常见配置CPU资源内存资源存储 五、ClickHous…...

Elasticsearch集群与日志系统实战部署指南

一、环境规划与初始化配置 1. 服务器资源分配 IP地址部署服务主机名172.25.23.7ES Kafka Zookeeper Kibananode1172.25.23.8ES Kafka Zookeeper Filebeatnode2172.25.23.9Kafka Zookeeper Apache Logstashnode3 系统要求&#xff1a; 配置&#xff1a;4核CPU / 4G…...