fiddler 快速入门

66 阅读8分钟

fiddler 相关基础概念

fiddler 是什么

Fidder 是一个监听http/https协议的代理工具,是免费开源的,但只能在Windows下使用,Mac和Linux是不支持的

fidder 使用场景

  1. 接口测试;
  2. 线上环境调试;
  3. web性能分析;
  4. 解码https请求的参数;
  5. 设置断点改变请求参数;
  6. 判断前后端Bug;
  7. 开发环境host配置;
  8. 弱网断网测试。

Get请求与Post请求格式的区别

  • Post请求格式:请求行、请求头、空一行、请求体;
  • Get请求格式:请求行、请求头、空一行;

http协议常见的请求头或响应头

  1. Host:链接主机的域名;
  2. Referer:告诉服务器当前网页是从哪个地址链接过来的;
  3. User-Agent`:访问者在用什么版本操作系统与浏览器进行访问;
  4. Connection`:链接状态:keep-alive,表示保持链接中;
  5. Accept:客户端希望接收响应body的数据类型;
  6. Cookie:认证客户端的权限缓存信息;
  7. Origin:说明请求从哪里发起的,包括协议、域名和端口;
  8. websocket:建立websocket协议连接;
  9. content-type:期望响应返回的数据类型,主要有以下几类:
  • application/x-www-form-urlencoded:浏览器的原生form表单;
  • multipart/form-data:form表单提交数据的方式,常见的有POST与GET提交方式;
  • application/json:消息体序列化后的JSON字符串;
  • text/xml:使用HTTP作为传输协议,XML作为编码方式。

fiddler 的基本使用

使用fiddler 抓包

fiddler 抓包原理

在这里插入图片描述

  1. 如上图所示,打开Fiddler后,fiddler会自动将操作系统【手动设置代理】置为开,这个时候fiddler就相当于一个中间件,所有的请求或响应都需要经过它,并由它进行转发,这个时候,fiddler相较于客户端就是一个代理服务器;

  2. 打开操作系统的手动设置代理后,Fiddler会通过默认的操作系统端口号抓取浏览器的数据;

  3. 向一个接口发送请求后,我们会收到很多的数据包,其中有很多的数据包(会话)我们并不需要,如连接数据包304数据包,因此我们需要隐藏它们,避免干扰,如下图所示:在这里插入图片描述

  4. 具体操作如下:

  • 操作系统--->设置--->网络和Internet--->代理;
  • Fiddler--->Tools--->Options--->Connections:
    • Fiddler listens on port:28835(对比系统默认代理的端口号)
    • Act as system proxy on startup(默认系统的代理)

Fiddler配置证书、Host与抓包模式

默认Fiddler只能抓取http请求的数据包(会话),如果需要抓取https请求的数据包,则需要配置相关证书,如下所示:

  • 打开Tools工具栏下面的选项optionshttps选项: 在这里插入图片描述
  • 勾选上下图中的内容:

在这里插入图片描述在这里插入图片描述

  • 重置更新证书,一直点击下一步,直到完成 在这里插入图片描述 配置Host: 1、Tools--->HOSTS--->输入:127.0.0.1 localhost; 2、工具栏--->第六个图标:Stream(流)

  • 流模式Stream(流):将会话数据实时返回;

  • 缓冲模式(默认):将会话整个会话完成,才将会话数据返回。

fiddler进行多次接口请求

选中抓取的接口请求--->快捷键:Shift+R--->输入重复次数n,点击OK,这样就会向对应接口重复发送n次请求。

fiddler进行断点调试

在这里插入图片描述 1、请求前加断点:Rules--->Automation Breakpoints--->Before Requets 2、请求后加断点:Rules--->Automation Breakpoints--->After Requets 3、取消断点:Rules--->Automation Breakpoints--->Disabled

断点的作用: 用来修改接口请求和响应数据,接口加密测试中改变请求数据,接口请求就会失败。

fiddler抓取指定浏览器的数据

点击不松开Any Process在这里插入图片描述 ”移动到浏览器下,Fiddler就抓取指定浏览器下的会话。

fiddler解密https的会话参数

在实际工作中,我们可能会遇到请求的"?"后面是请求的参数,但是参数都是加了密的情况。为此,我们采用下面的方法来获取到真实的参数: 1、工具栏--->第十六个图标:在这里插入图片描述

2、打开百度搜索手机--->将百度搜索:手机【保护用户隐私手机这个参数会加码】地址栏--->粘贴到FiddlerTextWizard 3、选择URLdecode对搜索的参数手机解码。

fiddler查看单个接口请求响应的耗时

在这里插入图片描述

fiddler查看接口请求与响应的信息

在这里插入图片描述

fiddler过滤指定接口(抓取服务器的数据)的信息

在这里插入图片描述 1、要使用过滤器,需要勾选:Use Filters

2、Hosts:主机相关的滤器;

3、Client Process:客户端进程相关的滤器;

4、Request Headers:请求头相关的滤器;

5、Breakpoints:断点相关的滤器;

6、Response Status Code:状态码相关的滤器;

7、Response Type and Size:响应类型与大小的滤器;

8、Response Headers:响应头相关的滤器。

fiddler添加自定义请求头

1、双击链接会话;

2、点击:Filters--->勾选:Use Filters--->Request Headers--->勾选:Set request header

3、输入:name与test_person

4、所有的请求都会加入:name与test_person请求头:双击链接--->Inspectors--->Raw,查看请求头。

fiddler高亮显示指定接口

1、工具栏--->第十个图标:Find(查找会话)

2、查找会话:点击Find--->Find(输入标记会话的内容):200--->Result Highlight:选择标记会话的颜色--->点击:Find Sessions

使用fiddler 做接口测试

使用fiddler做接口测试

在这里插入图片描述

使用fiddler模拟接口数据返回(Mock server)

1、打开fiddler,浏览器访问目标网址。

2、双击fiddler会话栏请求--->AutoResponder(自动响应器)--->勾选:Enable rules(使用规则)--->Add Rule(添加规则)

2.1、Match only once前输入框,选择配置文件的路径位置:

E:\info\BackgroundImage\背景01.jpg

2.2、浏览器目标网址页面刷新,查看,返回内容是不是对应的背景01.jpg。

3、 用AutoResponder(自动响应器)加载test_data.json文件后,在fiddler与页面可以查看响应数据是否正确。

运用fiddler做弱网测试

  • 打开弱网测试:Rules--->Performance--->Simulate Modem Speeds(开启默认的弱网)

  • 手动设置弱网测试时间: 在这里插入图片描述

    • Rules--->Customize Rules
    • 快捷键Ctrl+F:搜索if (m_SimulateModem) 搜索到代码如下:
if (m_SimulateModem) {
// Delay sends by 300ms per KB uploaded.
oSession["request-trickle-delay"] = "300"; 
// Delay receives by 150ms per KB downloaded.
oSession["response-trickle-delay"] = "150"; 
}
  • 如上代码中:
    • oSession["request-trickle-delay"] = "300";发送请求300毫秒
    • oSession["response-trickle-delay"] = "150"; 接收数据150毫秒
  • 弱网测试就需要更改毫秒数,如下:
if (m_SimulateModem) {
// Delay sends by 300ms per KB uploaded.
  oSession["request-trickle-delay"] = "3000"; 
  // Delay receives by 150ms per KB downloaded.
  oSession["response-trickle-delay"] = "1500"; 
}

弱网测试的参数设置标准:

  1. 模拟地铁、电梯等环境,设置延迟在3000毫秒;
  2. 模拟偏远地区,设置延迟在5000毫秒。

运用fiddler模拟2G/3G/4G/5G网络

1、启动Fiddler→点击菜单栏Rules→Performance→勾选Simulate Modem Speeds

2、进入Rules→Customize Rules,在代码中搜索m_SimulateModem,找到以下代码段: 在这里插入图片描述

3、2G网络设置: 3.1、上行速率:2.7 Kbps→延迟=1000 / (2.7/8)=2962 ms/KB 3.2、下行速率:9.6 Kbps→延迟=1000 / (9.6/8)=833 ms/KB 在这里插入图片描述 4、3G网络(分运营商)设置: 4.1、电信:上行1.8 Mbps→延迟4.34 ms/KB,下行3.1 Mbps→延迟2.52 ms/KB 4.2、移动:上行384 Kbps →延迟20.8 ms/KB,下行2.8 Mbps→延迟2.79 ms/KB 4.3、联通:上行5.76 Mbps→延迟1.35 ms/KB,下行7.2 Mbps→延迟1 ms/KB 在这里插入图片描述

5、4G网络设置:上行10 Mbps→延迟0.8 ms/KB,下行50Mbps→延迟0.16 ms/KB 在这里插入图片描述

6、5G网络设置:上行50 Mbps→延迟0.16 ms/KB,下行1 Gbps→延迟0.008 ms/KB 在这里插入图片描述

使用fiddler抓取手机的接口数据

1、保证电脑与手机在同一网段;

2、打开Fiddler--->Tools--->Options--->Connections--->勾选:Allow remote computer to connect(允许远程机器连接)--->确定;

3、打开手机--->设置--->WIFI--->连接WIFI详情--->代理:手动:

3.1、主机名:192.168.01.103(IPv4手机的ip地址为:192.168.01.100,保证电脑与手机在同一网段)

3.2、端口:36560(Fiddler的端口号)

3.3、手机浏览器网址输入:http://192.168.01.103:36560/--->点击:FiddlerRoot Certificate(下载Fiddler证书到手机)

3.4、手机--->设置--->密码与安全--->系统安全--->凭据存储--->信任证书--->用户(显示为空)

3.5、手机--->设置--->密码与安全--->系统安全--->凭据存储--->从存储设备安装证书--->CA证书--->仍然安装--->导航栏选择下载Fiddler证书到手机存储位置

3.6、手机--->设置--->密码与安全--->系统安全--->凭据存储--->信任证书--->用户(显示下载的证书)

4、Fiddler查看会话栏,会有Android系统数据。

fiddler通过域名抓取数据

1、匹配HOST:Tools--->HOSTS(主机)配置host:127.0.0.1 localhost

2、只抓取localhost.fiddler主机数据:Filters--->勾选:User Filters--->Hosts: Show only the following Hosts--->输入:localhost.fiddler

在这里插入图片描述 在这里插入图片描述

fiddler抓取的数据导入到Postman

1、点击菜单栏 :File → Export Sessions → Selected Sessions... → HTTPArchive v1.2(输入名称test001,选择保存路径,保存的文件以.har结尾);

2、打开Postman,点击右上角File → Import... →Upload Files(选择fiddler到出的test001.har文件)。

fiddler抓取的数据导入到Jmeter

1、将下载好的FiddlerExtensions.dll和FiddlerExtensions.pdb放在fiddler下载目录的ImportExport文件夹中;

2、重新打开fiddler:①点击Filters→Use Filter(勾选)→Hide If URL contains:.css .js .gif .png .jpg .swf(过滤掉不必要的数据),抓取数据;②点击菜单栏 :File→Export Sessions→Selected Sessions... →Jmeter(输入名称test001,选择保存路径,保存的文件以.jmx结尾);

3、打开jmeter点击文件→打开→选择:test001.jmx。