Fiddler 抓包工具“测试人员”高频使用方法

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

抓包工具简介

Fiddler 是一款免费且功能强大的数据包抓取软件。它通过代理的方式获取程序 HTTP 通讯的数据,可以用其检测网页和服务器的交互情况,能够记录所有客户端和服务器间的 HTTP 请求,支持监视、设置断点,甚至修改输入输出数据等功能。Fiddler 包含了一个强大的基于事件脚本的子系统,并且能够使用 .NET 框架语言扩展。

优点:就是操作简单便捷,易于理解
缺点:是只能抓取到 HTTP 的相关信息

一、Fiddler 抓包原理

Fiddler 是以代理 Web 服务器的形式工作的,启动 Fiddler 本机浏览器会自动设置代理服务器,关闭 Fiddler 代理服务器自动关闭,Fiddler 启到的是中转站的作用实现抓包效果,如果 Fiddler 非正常关闭,可能网页无法访问网络,可手动关闭浏览器的代理服务器。
在这里插入图片描述

二、Fiddler 的下载安装

1. 下载地址

2. 下载方法

在这里插入图片描述

3. Fiddler 的安装步骤

  1. 找到下载好的安装包
    在这里插入图片描述
  2. 双击执行,点击同意按钮
    在这里插入图片描述
    在这里插入图片描述
  3. 安装成功
    在这里插入图片描述

三、Fiddler 的使用方法

1. 抓取 HTTPS

  1. 在 Fiddler 菜单栏中,点击 Tools → Options …
    在这里插入图片描述
    在这里插入图片描述

  2. 如果要抓取不可信的 HTTPS 请求把下面截图的选框也勾选上:

     Tools → Options ... → HTTPS → Ignore server certifivate errors(unsafe)
     Tools → Options ... → Connections → Allow remote computers to connect
    

    在这里插入图片描述
    在这里插入图片描述
    3. HTTPS 设置处,点击 Actions → Trust Root Certificate
    在这里插入图片描述
    在这里插入图片描述
    4.红框内显示的是证书名称,点击是进行安装

    在这里插入图片描述

    1. 安装成功后,可通过 Actions → Open Windows Certificate Manager,查看本机安装的证书。
      在这里插入图片描述在这里插入图片描述

    2. 重启 Fiddler,打开浏览器,访问 HTTPS 系统,可抓取 HTTPS 数据包。

在这里插入图片描述

2. Fiddler 如何进行设置断点

  1. 设置断点的第一种方式:通过菜单栏 Rules → Automatic Breakpoints

    Before Requests :拦截所有发送给服务器的请求
    After Responses:拦截所有服务器返回的 session
    Disabled :取消断点
    

    注:选择之后拦截本机发出的所有请求
    在这里插入图片描述
    设置完断点访问浏览器的相关系统,就会自动打断点:
    在这里插入图片描述

  2. 设置断点的第二种方式:通过命令行中断请求:bpu [接口地址]

中断响应:bpafter [接口地址]
中断该响应状态的会话:bps [状态码]
中断 HTTP 方法的会话:bpv [post/get等] 和 bpm [post/get等]	

注:接口地址可以是专门抓取一个指定接口,也可以指定拦截的服务器。
在这里插入图片描述

3. 使用Fiddler Script脚本控制断点功能

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

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

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

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

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

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

四、Fiddler Script 修改请求和和响应数据

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

在这里插入图片描述在OnBeforeRequest 这个函数里添加下面代码,里面主机名改成你的就可以(把请求发送给服务器之前调用)

static function OnBeforeRequest(oSession: Session) {
    //添加颜色
    if (oSession.HostnameIs("www.zdcxx.com")) {
        oSession["ui-color"] = "red";
    }
    //把指定主机重定向到另一个主机,并且把请求url给替换下
    if (oSession.HostnameIs("s33211.xxxx.cn")||oSession.HostnameIs("s33211.xxxx.cn")) {
        oSession.hostname="test.xxxxx.cn";
        oSession.url = oSession.url.Replace("/static/study_h5","");
        oSession.url = oSession.url.Replace("/static/common/js","");
      }
}

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

static function OnBeforeRequest(oSession: Session) {
	// 删除所有的cookie
	oSession.oRequest.headers.Remove("Cookie");
	// 新建新的cookie
	oSession.oRequest.headers.Add("Cookie", "uuid=asdfasdfasdf;key=asdfasdf");
    //修改来源地址
    if (oSession.uriContains("www.xxxx.com")) {       
        oSession.oRequest["Referer"] = "www.xxxx.com"
     }
    //添加随机值强制刷新缓存
     if (oSession.uriContains("s29.9956.cn/static/study_h5")) {
        oSession.url = oSession.url+ "?"+ Math.random()*1000000;
    }
}

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

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

禁止css请求

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

修改json类型

oSession.utilDecodeResponse();
var str=oSession.GetResponseBodyAsString();
//替换内容
str=str.Replace("msg","message");
// 转成json对象修改内容
var json=Fiddler.WebFormats.JSON.JsonDecode(str);
json.JSONObject["code"]="200";
json.JSONObject["data"]["message"]="200";
oSession.utilSetResponseBody(Fiddler.WebFormats.JSON.JsonEncode(json.JSONObject));

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

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

与开发本地调试,把请求从HTTPS改成HTTP

if (oSession.isHTTPS && oSession.HostnameIs("test.com")) {
    oSession.oRequest.headers.UriScheme = "http";
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值