Fiddler入门:下载、安装、配置、抓包、customize rules

一、fiddler下载安装

安装包下载链接:https://www.telerik.com/download/fiddler

随便选个用途,填写邮箱,地区选择China,勾选“I accept the Fiddler End User License Agreement”,点击“DownLoad for windows”,下载。

双击FiddlerSetup.exe安装fiddler,可以选择常用的、不那么深的一个路径。

在安装路径下,双击Fiddler.exe,能打开,说明安装成功,可以给Fiddler.exe创建一个桌面快捷方式。

二、fiddler配置

双击Fiddler.exe,弹出“AppContainer Configuration”对话框,点击“cancel”就行。

Progress Telerik Fiddler Web Debugger菜单栏中,Tools——Options。

2-1.HTTPS配置

HTTPS的配置如下:

勾选Capture HTTPS CONNECTs、Decrypt HTTPS traffic、Ignore server certificate errors(unsafe)。

点击OK保存。

弹出对话框“SCARY TEXT AHEAD:Read Carefully!”,点击YES。

弹出对话框“安全警告”,询问是否安装证书,点击是。

弹出对话框“Add certificate to the Machine Root List?”,点击YES。

弹出对话框“TrustCert Success”,点击确定。

再点击一下options中的ok,以防忘记保存配置。

Decrypt HTTPS traffic中的选项说明:

from all processes : 
抓取所有的 https 程序, 包括电脑程序和手机APP。
from browsers only : 
只抓取浏览器中的https请求。
from non-browsers only : 
只抓取除了浏览器之外的所有https请求。
from remote clients only:
只抓取远程的客户端的https请求,就是只抓取手机APP上的https请求。

注意事项:

如果HTTPS请求出问题,例如,浏览器提示“您的链接不是私密链接”等,一般都是证书安装有问题,重新安装一遍证书,重复一遍HTTPS配置即可。

Options——HTTPS——Actions——Trust Root Certificate。

2-2.Connections配置

Fiddler listens on port,确保fiddler的端口为8888。

勾选Allow remote computers to connect。

弹出对话框“Enabling Remote Access”对话框,点击确定。

点击OK。

2-3.Scripting

自定义脚本语言设置,可以选择C#或者http://Jscript.NET。

三、解决fiddler自动关闭

人行征信密码控件会导致fiddler经常自动停止,并提示:

在控制面板,卸载人行征信安全控件。

删除C:\Windows\Prefetch路径下PBCCR开头的.pf文件。

删除C:\Windows\SysWOW64下面的PBCCRCNew文件夹。

重新启动Fiddler.exe。

四、抓包

3-1.电脑

电脑端的网络请求,可以直接在fiddler中看到效果。

3-2.小程序

打开微信PC端,进入小程序面板,选择小程序。就可以在fiddler中看到小程序的网络请求了。

3-3.APP

一般APP都有web端主页,也有微信小程序,所以APP的网络请求可以通过web端主页看,或者通过小程序看。

如果一定要通过远程客户端的形式,抓包APP的网络请求,可参见APP抓包设置:

https://blog.csdn.net/qq_39720249/article/details/81069929

其中“三、APP抓包时的手机代理设置”写得很详细。

五、自定义规则

有时候需要把响应数据过滤保存,就需要写fiddler脚本了。

快捷键ctrl+r,或者菜单栏——Rules——Customize Rules,打开规则脚本编辑器,Fiddler ScriptEditor。

Go中,可以定位到不同方法,OnBeforeRequest、OnBeforeResponse等。

5-1.一些常用的oSession函数和方法

// 请求host
 oSession.host == "my.test.com";
 // 请求host之后的url是否包含
 oSession.url.Contains("/feed") ;
 // 获取响应内容的字符串
 var logContent = oSession.GetResponseBodyAsString(); 
 // 创建写入流
 var sw : System.IO.StreamWriter; 
if (System.IO.File.Exists(filename)){  //是否有该文件夹  
    sw = System.IO.File.AppendText(filename);   //有添加
    sw.Write(logContent);  
}  
else{  
    sw = System.IO.File.CreateText(filename);  //没有创建
    sw.Write(logContent);  
}  
sw.Close();  //关闭写入流
sw.Dispose();  //销毁写入流

 // 修改session中的显示样式
 oSession["ui-color"] = "orange";
 // 移除http头部中的MQB-X5-Referer字段
 oSession.oRequest.headers.Remove("MQB-X5-Referer");
 // 修改http头部中的Cache-Control字段
 oSession.oRequest["Cache-Control"] = "no-cache";
 // 修改host
 oSession.host = "example.domain"; 
 // 修改Origin字段
 oSession.oRequest["Origin"] = "http://domain";
 // 删除所有的cookie
 oSession.oRequest.headers.Remove("Cookie");
 // 新建cookie
 oSession.oRequest.headers.Add("Cookie", "username=cookiename;");
 // 修改Referer字段
 oSession.oRequest["Referer"] = "https://yoururl";
 
 // 获取Request中的body字符串
 var strBody=oSession.GetRequestBodyAsString();
 // 用正则表达式或者replace方法去修改string
 strBody=strBody.replace("aaaa","bbbbbb");
 // 将修改后的body,重新写回Request中
 oSession.utilSetRequestBody(strBody);
// 判断连接中是否包含字符串str
oSession.uriContains(str)
// 给连接请求添加一个字段TEST
oSession.oRequest["TEST"]="TEST NEW Request";

5-2. 定义规则保存网络请求

下面这段代码,可以将将响应数据筛选出来,存储在txt文本中。

其中判断请求url中是否包含路径是oSession.fullUrl.Contains方法,将字符串转为json的是Fiddler.WebFormats.JSON.JsonDecode(response_body)方法,获取对象中的json是response_json.JSONObject方法,打印日志是FiddlerApplication.Log.LogString(video_name)方法。

	static var video_name: String = "";
    static function OnBeforeResponse(oSession: Session) {
        if (m_Hide304s && oSession.responseCode == 304) {
            oSession["ui-hide"] = "true";
        }
		//过滤无关请求,只关注特定请求
		if (oSession.fullUrl.Contains("/burdock/weixin")) {
			//消除保存的请求可能存在乱码的情况
			oSession.utilDecodeResponse();
			var fso;
			var file;
			var response_code;
			var response_body;
			var response_json;
			response_code = oSession.responseCode;
			response_body = oSession.GetResponseBodyAsString();
			fso = new ActiveXObject("Scripting.FileSystemObject");
			response_json = Fiddler.WebFormats.JSON.JsonDecode(response_body);
			if (response_code == 200){
				if (oSession.fullUrl.Contains("user")){
					if (response_json.JSONObject["data"] == "System.Collections.ArrayList"){
						var title = response_json.JSONObject["data"][0]["user"]["nickname"];
						file = fso.OpenTextFile("D:\\视频\\" + title + ".txt",8 ,true, true);
						file.writeLine(response_body);
						file.writeLine("\n");
						file.close();
						FiddlerApplication.Log.LogString(title);
					}					
				}
				else if (oSession.fullUrl.Contains("note") && oSession.fullUrl.Contains("single_feed")){
					video_name = response_json.JSONObject["data"]["title"];
					file = fso.OpenTextFile("D:\\视频\\" + video_name + ".txt",8 ,true, true);
					file.writeLine(response_body);
					file.writeLine("\n");
					file.close();
					FiddlerApplication.Log.LogString(video_name);
				}
				else {
					file = fso.OpenTextFile("D:\\视频\\" + video_name + ".txt",8 ,true, true);
					file.writeLine(response_body);
					file.writeLine("\n");
					file.close();
					FiddlerApplication.Log.LogString(video_name);
				}
			}
		}
    }

六、总结

很全面详细的fiddler入门教程,如果觉得不错,请点赞。

更多内容可参阅fiddler官网:

 总结

如果你对此文有任何疑问,如果你也需要接口项目实战,如果你对软件测试、接口测试、自动化测试、面试经验交流感兴趣欢迎加入我们,加入方式在文章的最后面

  2023自学fiddler抓包,请一定要看完【如何1天学会fiddler抓包】的全网最详细视频教程!!_哔哩哔哩_bilibili

  总结:

 光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

如果对你有帮助的话,点个赞收个藏,给作者一个鼓励。也方便你下次能够快速查找。

如有不懂还要咨询下方小卡片,博主也希望和志同道合的测试人员一起学习进步

在适当的年龄,选择适当的岗位,尽量去发挥好自己的优势。

我的自动化测试开发之路,一路走来都离不每个阶段的计划,因为自己喜欢规划和总结,

测试开发视频教程、学习笔记领取传送门!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/295460.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

初识Winform

什么是winform? WinForms(Windows Forms)是Microsoft .NET框架中的一个用户界面(UI)技术,用于创建Windows应用程序。它提供了一组用于构建图形用户界面的类和控件,以及与用户交互的事件模型。 …

【Python学习】2024PyCharm插件推荐

目录 【Python学习】2024PyCharm插件推荐 1. Key Promoter X2.Rainbow CSV3.Markdown4.Rainbow Brackets5.Indent Rainbow6.Regex Tester7.Regex Tester8.Background Image Plus9.Material Theme UI10. Chinese 汉化插件参考 文章所属专区 Python学习 1. Key Promoter X 方便…

7nm项目之顶层规划——04 power routing and pushdown

1.设计数据导入(见01) 2.初始化 top floorplan with def 3.创建 block partition 4.调整 block floorplan (size/location/area/connection, manul work) 5.format floorplan size and location 6.create tracks 7.pin assignment 8.power routi…

RT-DETR优化改进:IoU系列篇 | Shape-IoU结合基于辅助边框的Inner-IoU损失,实现再次创新

🚀🚀🚀本文改进: Shape-IoU结合基于辅助边框的Inner-IoU损失,小目标检测实现涨点,基于辅助边框的优化前提下,更加关注边界框本身的形状和尺度来计算损失 🚀🚀🚀RT-DETR改进创新专栏:http://t.csdnimg.cn/vuQTz 学姐带你学习YOLOv8,从入门到创新,轻轻松松搞…

Kibana

Kibana是一个针对Elastic Search的开源分析及可视化的平台,使用kibana可以查询、查看并与存储在ES索引的数据进行交互操作,可以理解为一个客户端的工具,比如mysql和navicat。 使用kibana能执行高级的数据分析,并能以图表、表格和地…

centos安装人大金仓数据库

1,人大金仓官网下载安装包 下载链接https://www.kingbase.com.cn/xzzx/index.htm 下载这个版本,数据库授权文件下载下面的这个 2,点击下载的软件版本,挂载iso 点击CDROM中运行setup.sh,用普通用户进行运行 sh setup.sh 一直点…

即时设计:轻松实现设计稿动画,打造独具魅力的GIF作品

制作动画 随着动画设计越来越受欢迎,设计师们需要一款强大的工具,以便轻松控制设计稿元素的属性,实现动画效果。今天,我们向您推荐一款具备帧动画功能的设计工具,它可以让您轻松调整元素的宽高、相对位置等属性&#x…

线性代数 --- 为什么LU分解中的下三角矩阵L的主对角线上都是1?

为什么LU分解中的下三角矩阵L的主对角线上都是1? 一方面,对于LU分解而言,下三角阵L是对高斯消元过程的记录,是高斯消元的逆过程,是多个消元矩阵E的逆矩阵的乘积(形如下图中的下三角矩阵),即: 另一方面&…

nginx 二、配置域名

文章目录 一、配置本地域名查看虚拟机ip修改hosts文件测试域名是否配置成功 二、配置aliyun域名三、实践1.创建html2.配置nginx3.测试服务器内部测试页面测试 总结 docker中启动nginx容器完成如下操作,对于docker安装nginx可以看这篇文章 nginx 一、安装与conf浅析 …

进程控制-操作系统

1. 进程概述 进程和程序的区别:程序和进程是两个不同的概念,他们的状态,占用的系统资源都是不同的。 程序:就是磁盘上的可执行文件文件, 并且只占用磁盘上的空间,是一个静态的概念。进程:被执行之后的程序叫做进程&a…

202402读书笔记|《当你老了》——灰蒙曙光比爱情温柔,清晨露珠比希望更可爱

202402读书笔记|《当你老了》——灰蒙曙光比爱情温柔,清晨露珠比希望更可爱 《当你老了》作者叶芝,断断续续碎片时间读完的一本书,不是很惊艳,但值得一读。就因为很喜欢当你老了,所以拾起的这本书。读完知道了原来叶芝…

web网站,可当期末作业,随机一言,天气,时钟,音乐等综合网站

文章目录 主页面时间胶囊底部条文心一言音乐播放器天气时钟禁用右键其他每次刷新页面会随机更换壁纸新春版 主页面 时间胶囊 底部条 文心一言 点击可随机变化文心一言 音乐播放器 天气时钟 禁用右键 其他 每次刷新页面会随机更换壁纸 新春版

linux sh 脚本文件换行错误

windows 写好的脚本到服务运行不起来,显示换行问题 因为 windwos 的换行和 linux 的换行风格不同 解决办法:在使用的文本编辑器中,修改格式为 unix 格式 以 notepad 为例,在编辑 -> 文档格式转换中设置格式为 Unix

使用.Net nanoFramework获取ESP32板载按键的点击事件

本文以 ESP32-S3-Zero 板载的按键为例,介绍了GPIO的使用方法,以及如何获取按键的点击事件。板载按钮作为自带的天然用户按钮,除了其本身的功能外,也可以作为某些应用场景下的简单的交互方式。 1. 引言 对于一般的产品来说&#x…

阿里通义千问「全民舞王」,一张照片就能跳《科目三》,刷爆朋友圈

这两天看朋友圈、网上都在发这种跳舞的视频。只要上传一张全身照,就可以生成各种跳舞的视频。 比如前段时间火爆海底捞的《科目三》,还有《DJ慢摇》、《鬼步舞》、《兔子舞》、甚至还有咱《秧歌舞》。 先来一睹为快! 阿里通义千问「全民舞王…

Numpy和Pandas知识点总结

1.python常见的开源库介绍 1.1numpy 一个运行速度非常快的数学库,主要用于数组计算 1.2pandas 一个强大的“分析结构化数据”的工具集,底层依赖numpy 用于数据挖掘和数据分析,同时也提供数据清洗功能 pandas主要有两种数据结构&#xf…

VMware--安装CentOS系统

在虚拟机安装CentOS系统 1 下载CentOS镜像 方式一:可以到官网下载,下载速度较慢。 https://vault.centos.org/7.6.1810/isos/x86_64/ (最后的 / 不要漏掉) 方式二:可以到国内的镜像网站下载。 阿里开源镜像站&…

『年度总结』逐梦编程之始:我的2023学习回顾与展望

目录 前言 我与Python 我与C语言 第一篇正式博客: 第二篇正式博客(扫雷): 指针学习笔记: C语言学习笔记: 我与数据结构: yuan 这篇博客,我将回顾2023年编程之旅的起点,同时展…

Unity | NGO网络框架

目录 一、相关属性及变量 1.ServerRpc属性 2.ClientRpc属性 3.NetworkVariable变量 二、相关组件 1.NetworkManager 2.Unity Transport 3.Network Object 4.NetworkBehaviour: 5.NetworkTransform Syncing(Synchronizing) Thresholds Interpolation 三…

原生微信小程序AR(扫描指定图片显示glb模型)

效果 ar案例视频 准备:需要准备要扫描的图片地址和扫描成功后显示的模型 1.在components创建组件 index.js文件代码 Component({properties: {title: {type: String,value: ,},intro: {type: String,value: ,},hint: {type: String,value: ,},code: {type: String…