✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨
🎯 你正在阅读「接口测试从入门到跑路」系列文章 🎯✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨
🔥 弹简特 个人主页
❄️ 个人专栏直通车:
✨ 靠热爱去书写自己,靠勇敢去书写生活!
✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨
🌟 博主简介:

文章目录:
- 前言
- 一、Fidder详解及抓包并定位前后端Bug
-
- 1、Fiddler的抓包原理
-
- [1.1 打开Fiddler的时候](#1.1 打开Fiddler的时候)
- [1.2 同时他会在你的电脑上打开一个代理](#1.2 同时他会在你的电脑上打开一个代理)
- [1.3 请求处理与转发](#1.3 请求处理与转发)
- [1.4 对于https的包](#1.4 对于https的包)
- 2、Fiddler介绍
-
- [2.1 页面布局](#2.1 页面布局)
- [2.2 菜单栏介绍](#2.2 菜单栏介绍)
- [2.3 广告功能](#2.3 广告功能)
- [2.4 统计功能](#2.4 统计功能)
- [2.4 检查功能(Inspectors) 【重点】](#2.4 检查功能(Inspectors) 【重点】)
- [2.5 自动响应功能(AutoResponder)【重要】](#2.5 自动响应功能(AutoResponder)【重要】)
- [2.6 Composer接口测试](#2.6 Composer接口测试)
- [2.7 FiddlerScript 脚本的设置【重要】](#2.7 FiddlerScript 脚本的设置【重要】)
- [2.8 过滤功能【重要】](#2.8 过滤功能【重要】)
-
- 1)勾选【use filter】使用过滤器勾选【use filter】使用过滤器)
- 2)只抓自己需要的主机只抓自己需要的主机)
- 3)过滤常见的静态资源过滤常见的静态资源)
- 3、抓包的意义是什么
- 二、Fiddler抓取https协议数据及App的包
-
- 1、Fiddler抓取Https协议数据
-
- 第一步:捕获HTTPS+解密HTTPS
- [第二步:点击Connections[链接] 允许外部连接本机](#第二步:点击Connections[链接] 允许外部连接本机)
- 第三步:需要一个证书(或者更新证书)
- 第四步:验证是否成功
- 2、Fiddler抓取App的包
-
- 第一步:电脑和手机(或者模拟器)需要在同一个网络下
- 第二步:你的手机(或者模拟器)要把Fiddler所在的电脑作为代理
- [第三步:在手机浏览器(浏览器)中输入: http://你电脑主机名:8888在上面下载和安装证书](#第三步:在手机浏览器(浏览器)中输入: http://你电脑主机名:8888在上面下载和安装证书)
- 第四步:验证是否抓到app包
- 三、网络胁持或篡改返回结果及弱网测试
-
- 1、篡改请求:断点调式
- 2、篡改返回数据:AutoResponder功能
- 3、弱网测试
-
- [3.1 过滤服务器](#3.1 过滤服务器)
- [3.2 选择脚本,里面有网络设置](#3.2 选择脚本,里面有网络设置)
- [3.3 打开弱网开关](#3.3 打开弱网开关)
- [3.4 测试弱网](#3.4 测试弱网)
- [3.5 关闭弱网](#3.5 关闭弱网)
- 四、Fiddler抓包结合Jmeter实现接口测试
-
- 1、应对的场景是什么?
- 2、开始实战演示
-
- [2.1 准备工作](#2.1 准备工作)
- [2.2 抓第一个访问首页的接口](#2.2 抓第一个访问首页的接口)
- [2.3 抓第二个登录接口](#2.3 抓第二个登录接口)
- 五、写在最后
前言
做测试或者开发,你还在对着bug一脸茫然,分不清是前端还是后端的问题?
面对没有接口文档的项目,不知道如何下手接口测试?
别慌!Fiddler抓包工具 就是你调试、定位、测试的一把瑞士军刀。
本文带你一文通关Fiddler:从抓包原理、页面布局,到实战抓取HTTP/HTTPS、手机App包;
再到前后端Bug精准定位、篡改请求/响应、弱网模拟测试;
最后压轴大戏------Fiddler结合JMeter实现接口测试 ,解决无文档难题。
全文干货拉满,一步一图,老铁跟着操作就能上手!
一、Fidder详解及抓包并定位前后端Bug
1、Fiddler的抓包原理
Fiddler 的本质是一个 HTTP/HTTPS 代理服务器 。它的抓包原理可以简单概括为:在客户端和服务器之间建立一道"关卡",让所有流量都必须经过它,从而实现记录、分析和修改 。

1.1 打开Fiddler的时候
当我们打开Fiddler的时候,我们选择工具Tools---》选项Options----》连接Connections

然后会在里面看到我们的端口号8888

1.2 同时他会在你的电脑上打开一个代理
- 设置代理:Fiddler 启动后,会在本机(127.0.0.1)的 8888 端口(默认)开启一个代理服务。同时,它会自动将系统的 HTTP/HTTPS 代理设置指向这个地址(或要求你手动配置浏览器代理)。
- 流量接管:当浏览器或其他客户端(支持代理的应用)发起网络请求时,由于系统代理被修改,请求不会直接发往目标服务器,而是首先被发送到 Fiddler。



1.3 请求处理与转发
- 记录请求:在界面上展示请求的详细信息(方法、URL、头部、Cookie 等)。
- 转发请求 :Fiddler 作为"代理客户端",重新发起一个全新的请求 到真正的目标服务器。
- 接收响应 :Fiddler 收到服务器的响应后,同样会记录响应内容(状态码、头部、正文),并将其缓存。
- 转发响应 :Fiddler 将这个缓存的响应返回给最初发起请求的客户端。
1.4 对于https的包
对于加密的 HTTPS 流量,Fiddler 采用 中间人攻击(MITM) 的思想,但用于合法的调试目的。
- 前提 :用户必须将 Fiddler 自带的根证书安装到操作系统的"受信任根证书颁发机构"列表中。这相当于你明确授权 Fiddler 可以"欺骗"你的浏览器。
- 工作流程 :
- 客户端向
https://www.example.com发起请求,但实际连接了 Fiddler。 - Fiddler 冒充客户端 :Fiddler 与真正的
www.example.com服务器完成正常的 TLS 握手。Fiddler 持有与服务器加密通信的密钥 A。 - Fiddler 冒充服务器 :Fiddler 动态生成一个伪造的
www.example.com证书(使用用户信任的 Fiddler 根证书进行签名),并与客户端完成 TLS 握手。Fiddler 持有与客户端加密通信的密钥 B。 - 数据传输 :
- 客户端用密钥 B 加密请求 → Fiddler 用密钥 B 解密(看见明文)→ Fiddler 用密钥 A 加密后发给服务器。
- 服务器用密钥 A 加密响应 → Fiddler 用密钥 A 解密(看见明文)→ Fiddler 用密钥 B 加密后发给客户端。
- 客户端向
关键点:因为客户端与 Fiddler 之间的信任关系是用户事先授权的(安装了根证书),所以浏览器不会弹出安全警告,而 Fiddler 就在中间"光明正大"地解密并查看所有 HTTPS 内容。
Fiddler 只针对 HTTP/HTTPS,无法抓取 TCP、UDP、ICMP 等底层包(需要 WireShark)。
2、Fiddler介绍
2.1 页面布局

2.2 菜单栏介绍


2.3 广告功能

2.4 统计功能

2.4 检查功能(Inspectors) 【重点】
Inspectors是用来检查你抓到的数据包的,我们的数据包又叫数据报文:
数据报文包括请求和响应:
- 请求:请求方法、请求路径、请求头、请求体
- 响应:响应头、响应体、系统状态码、Cookie
图示如下👇

请求:



响应:




2.5 自动响应功能(AutoResponder)【重要】
AutoResponder的作用是篡改响应的数据(我们后面会遇到)

2.6 Composer接口测试
Composer功能是接口测试,但是我们一般不在这里测试

2.7 FiddlerScript 脚本的设置【重要】
我们可以在此处去改变一些参数,比如我们的弱网测试

2.8 过滤功能【重要】

过滤器是用来过滤我们所抓的包的,便于获取到我们需要的包,所以第一步我们是先过滤掉没有意义的包的:
1)勾选【use filter】使用过滤器

2)只抓自己需要的主机

3)过滤常见的静态资源
代码
js
REGEX:\.(css|js|png|jpg|jpeg|gif|ico|bmp|webp|svg)(\?.*)?$

设置之前

设置之后

3、抓包的意义是什么
抓包的意义是什么?我们为什么要抓包?
- 有些时候我们做接口测试没有接口文档,就得需要抓包。
- 为了判断前后端的bug
3.1 如何判断前后端bug
1)前端问题
我们先看返回的数据,如果数据返回成功,但是前端显示不对,那么肯定是前端的问题。
如何判断响应数据访问成功,我们只需要看状态码就行,是不是200

重点:断点调试
为了演示这样的效果,我将介绍Fiddler的调试,然后修改前端传递的参数
1)请求成功的样子

2)现在请求参数改变不了,只有调试才能改,所以按照图中打开调试👇









如此一来,我们就模拟了,前端能够接受到数据但是数据不对,此时就是前端的错误。
补充:调试的快捷方式


2)后端问题
如果数据返回失败,我们再看它的响应数据,如果他的行数据和我们接口文档不一致,那么就是前端的问题,此时我们就重点关注他的请求参数的一些以及请求的四要素,否则的话就是我们后端的问题。
同时我们也可以看状态码,如果状态码是5开头,那一定是后端问题。

二、Fiddler抓取https协议数据及App的包
首先我们想要去抓APP的包,必须得让Fiddler能够抓取到https协议的数据,因为app的请求,它是HTTPS的。
1、Fiddler抓取Https协议数据
那么你第一次使用fiddler的时候默认抓的是HTTP,而不会有HTTPS的请求,因为HTTPS它是安全协议,HTTPS=HTTP+SSL,安全协议,我们是需要证书(护照)才能去捕获它。那https和http等相关的协议可以关注我们的网络原理专栏,会持续更新更多干货。
所以如果需要抓HTTPS的话就需要配置:
Tools【工具栏】---》Options【选项】

第一步:捕获HTTPS+解密HTTPS
然后点击HTTPS,在下述图中框打上√,最后点击OK

第二步:点击Connections[链接] 允许外部连接本机

允许外部设备连到本机,为什么呢?
比如你的手机是App设备,那此时你开启这个之后,它就能够连到我们本机电脑上的Fiddle,此时我们才能抓到app的包。
第三步:需要一个证书(或者更新证书)
点击actions,然后重置所有的根证书,把这些根证书重置一遍即可。


然后有确定就点确定,有是就点是👇





第四步:验证是否成功
删除请求可按图示操作,也可以直接CTrl+delete。

其实我们去抓取百度首页:👇

2、Fiddler抓取App的包
第一步:电脑和手机(或者模拟器)需要在同一个网络下
建议连接同一个WiFi就好了
第二步:你的手机(或者模拟器)要把Fiddler所在的电脑作为代理
首先我要抓取手机app的包,那么也就是说让你手机上app的请求,要经过我电脑上的Fiddler这个软件,此时就得需要你的手机把我Fiddler所在的电脑作为代理,就是说作为一个中转站,同时也需要你的手机要有Fiddler的根证书(这个我们在第三步中下载)
我们使用夜神模拟器来演示
1)找到WiFi:点击编辑

2) 代理选择手动


3)在你的电脑上win+r输如cmd
然后输ipconfig得到你的主机地址

4)将这个主机地址作为模拟器(手机)的代理

5)设置Fiddler的端口号
首先查看Fiddler的端口号


第三步:在手机浏览器(浏览器)中输入: http://你电脑主机名:8888在上面下载和安装证书
1)下载证书

2)找到安装证书

2)选择刚刚下载的证书

3)起一个名字

点击确定就成功了
第四步:验证是否抓到app包

三、网络胁持或篡改返回结果及弱网测试
1、篡改请求:断点调式
通过断点调试可以使得我们篡改请求,断点调试我们上面也提到过,此处我们再演示一下:






2、篡改返回数据:AutoResponder功能








3、弱网测试
3.1 过滤服务器

3.2 选择脚本,里面有网络设置

java
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";
}
3.3 打开弱网开关

3.4 测试弱网

3.5 关闭弱网

四、Fiddler抓包结合Jmeter实现接口测试
1、应对的场景是什么?
- 没有接口文档。
- 有接口文档,但是接口文档没有实时更新。
此时只有通过抓包,然后再去做接口测试。
2、开始实战演示
2.1 准备工作
对于jmeter的使用,老铁们可以参考【精通jmeter接口测试系列的博客】👇

2.2 抓第一个访问首页的接口
1)构造请求四要素
协议和ip(只做一次)

请求方法和路径

请求参数

构造请求头(注意:不需要cookie)

直接将非cookie的请求头数据复制进去

2)发送请求看结果

2.3 抓第二个登录接口
1)构造请求四要素
首先你要去访问人家的项目,然后抓到对应的数据
请求方法和路径

请求参数

构造请求头(注意:不需要cookie)
直接将非cookie的请求头数据复制进去

2)发送请求看结果:会报错(接口关联)

3)调式出错原因

4)解决:接口关联

提取第一个接口返回的token值

使用${名字}取出token之,放到请求中

5)查看请求结果:成功

五、写在最后
到这里,Fiddler抓包工具的核心玩法就全部介绍完了。从原理到实战,从抓包定位Bug、弱网测试,再到结合JMeter做接口测试,相信你已经能轻松驾驭它了。
如果本文帮你解决了实际工作中的问题,或者让你对抓包有了新的认知,别忘了给俺个赞 👍 + 关注 ❤️,你的支持是我持续输出硬核干货的最大动力!
那咱们接口测试系列就暂时收个尾,后续咱还会持续更新更多测试相关内容,老铁们记得持续关注哦~

下一系列咯,兄弟们~~
