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

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

文章目录

  • 抓包工具简介
  • 一、Fiddler 抓包原理
  • 二、Fiddler 的下载安装
    • 1. [下载地址](https://www.telerik.com/download/fiddler)
    • 2. 下载方法
    • 3. Fiddler 的安装步骤
  • 三、Fiddler 的使用方法
    • 1. 抓取 HTTPS
    • 2. Fiddler 如何进行设置断点
    • 3. 使用Fiddler Script脚本控制断点功能
  • 四、Fiddler Script 修改请求和和响应数据
    • 1. 打开fiddler后在右边找到下面选项来编辑脚本

抓包工具简介

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

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

一、Fiddler 抓包原理

Fiddler 是以代理 Web 服务器的形式工作的,启动 Fiddler 本机浏览器会自动设置代理服务器,关闭 Fiddler 代理服务器自动关闭,Fiddler 启到的是中转站的作用实现抓包效果,如果 Fiddler 非正常关闭,可能网页无法访问网络,可手动关闭浏览器的代理服务器。
Fiddler 抓包工具“测试人员”高频使用方法_第1张图片

二、Fiddler 的下载安装

1. 下载地址

2. 下载方法

Fiddler 抓包工具“测试人员”高频使用方法_第2张图片

3. Fiddler 的安装步骤

  1. 找到下载好的安装包
    Fiddler 抓包工具“测试人员”高频使用方法_第3张图片
  2. 双击执行,点击同意按钮
    Fiddler 抓包工具“测试人员”高频使用方法_第4张图片
    Fiddler 抓包工具“测试人员”高频使用方法_第5张图片
  3. 安装成功
    Fiddler 抓包工具“测试人员”高频使用方法_第6张图片

三、Fiddler 的使用方法

1. 抓取 HTTPS

  1. 在 Fiddler 菜单栏中,点击 Tools → Options …
    Fiddler 抓包工具“测试人员”高频使用方法_第7张图片
    Fiddler 抓包工具“测试人员”高频使用方法_第8张图片

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

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

    Fiddler 抓包工具“测试人员”高频使用方法_第9张图片
    Fiddler 抓包工具“测试人员”高频使用方法_第10张图片
    3. HTTPS 设置处,点击 Actions → Trust Root Certificate
    Fiddler 抓包工具“测试人员”高频使用方法_第11张图片
    Fiddler 抓包工具“测试人员”高频使用方法_第12张图片
    4.红框内显示的是证书名称,点击是进行安装

    Fiddler 抓包工具“测试人员”高频使用方法_第13张图片

    1. 安装成功后,可通过 Actions → Open Windows Certificate Manager,查看本机安装的证书。
      Fiddler 抓包工具“测试人员”高频使用方法_第14张图片Fiddler 抓包工具“测试人员”高频使用方法_第15张图片

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

Fiddler 抓包工具“测试人员”高频使用方法_第16张图片

2. Fiddler 如何进行设置断点

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

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

    注:选择之后拦截本机发出的所有请求
    Fiddler 抓包工具“测试人员”高频使用方法_第17张图片
    设置完断点访问浏览器的相关系统,就会自动打断点:
    Fiddler 抓包工具“测试人员”高频使用方法_第18张图片

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

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

注:接口地址可以是专门抓取一个指定接口,也可以指定拦截的服务器。
Fiddler 抓包工具“测试人员”高频使用方法_第19张图片

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后在右边找到下面选项来编辑脚本

Fiddler 抓包工具“测试人员”高频使用方法_第20张图片在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";
}

你可能感兴趣的:(fiddler,网络,测试工具,前端)