【Fiddler抓包工具】一文通关Fiddler抓包工具【附:Fiddler结合jmeter接口测试实战】

✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨
🎯 你正在阅读「接口测试从入门到跑路」系列文章 🎯

✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨

🔥 弹简特 个人主页

❄️ 个人专栏直通车:

靠热爱去书写自己,靠勇敢去书写生活!

✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨


🌟 博主简介:


文章目录:


前言

做测试或者开发,你还在对着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 请求处理与转发

  1. 记录请求:在界面上展示请求的详细信息(方法、URL、头部、Cookie 等)。
  2. 转发请求 :Fiddler 作为"代理客户端",重新发起一个全新的请求 到真正的目标服务器。
  3. 接收响应 :Fiddler 收到服务器的响应后,同样会记录响应内容(状态码、头部、正文),并将其缓存。
  4. 转发响应 :Fiddler 将这个缓存的响应返回给最初发起请求的客户端

1.4 对于https的包

对于加密的 HTTPS 流量,Fiddler 采用 中间人攻击(MITM) 的思想,但用于合法的调试目的。

  • 前提 :用户必须将 Fiddler 自带的根证书安装到操作系统的"受信任根证书颁发机构"列表中。这相当于你明确授权 Fiddler 可以"欺骗"你的浏览器。
  • 工作流程
    1. 客户端向 https://www.example.com 发起请求,但实际连接了 Fiddler。
    2. Fiddler 冒充客户端 :Fiddler 与真正的 www.example.com 服务器完成正常的 TLS 握手。Fiddler 持有与服务器加密通信的密钥 A。
    3. Fiddler 冒充服务器 :Fiddler 动态生成一个伪造的 www.example.com 证书(使用用户信任的 Fiddler 根证书进行签名),并与客户端完成 TLS 握手。Fiddler 持有与客户端加密通信的密钥 B。
    4. 数据传输
      • 客户端用密钥 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、抓包的意义是什么

抓包的意义是什么?我们为什么要抓包?

  1. 有些时候我们做接口测试没有接口文档,就得需要抓包。
  2. 为了判断前后端的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、应对的场景是什么?

  1. 没有接口文档。
  2. 有接口文档,但是接口文档没有实时更新。

此时只有通过抓包,然后再去做接口测试。

2、开始实战演示

2.1 准备工作

对于jmeter的使用,老铁们可以参考【精通jmeter接口测试系列的博客】👇

精通jmeter接口测试

2.2 抓第一个访问首页的接口

1)构造请求四要素
协议和ip(只做一次)
请求方法和路径
请求参数
构造请求头(注意:不需要cookie)

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

2)发送请求看结果

2.3 抓第二个登录接口

1)构造请求四要素

首先你要去访问人家的项目,然后抓到对应的数据

请求方法和路径
请求参数
构造请求头(注意:不需要cookie)

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

2)发送请求看结果:会报错(接口关联)
3)调式出错原因
4)解决:接口关联

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


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

5)查看请求结果:成功

五、写在最后

到这里,Fiddler抓包工具的核心玩法就全部介绍完了。从原理到实战,从抓包定位Bug、弱网测试,再到结合JMeter做接口测试,相信你已经能轻松驾驭它了。

如果本文帮你解决了实际工作中的问题,或者让你对抓包有了新的认知,别忘了给俺个赞 👍 + 关注 ❤️,你的支持是我持续输出硬核干货的最大动力!

那咱们接口测试系列就暂时收个尾,后续咱还会持续更新更多测试相关内容,老铁们记得持续关注哦~

下一系列咯,兄弟们~~


相关推荐
测试199812 小时前
性能测试方案设计的方法和思路
自动化测试·软件测试·测试工具·jmeter·测试用例·压力测试·性能测试
川石课堂软件测试14 小时前
软件测试|常见面试题整理
数据库·python·jmeter·mysql·appium·postman·prometheus
这是个菜比测试17 小时前
jmeter无法访问内网接口
jmeter
qq_452396231 天前
第三篇:《JMeter断言:验证接口响应正确性》
android·jmeter
是小章啊2 天前
Jmeter压测实战之HTTP_POST
网络协议·jmeter·http
弹简特3 天前
【精通Postman接口测试】03-结果断言实战 + 数据驱动保姆级教程
测试工具·接口测试·postman·断言
WZTTMoon3 天前
用Fiddler抓包查看Claude Code提示词
fiddler·agent·claude code
古城小栈4 天前
封神!Rust 出品 HTTP 压测神器 cargo-whero,轻量碾压 JMeter、wrk,新手也能秒上手
jmeter·http·rust
_周游4 天前
【软件测试】使用JMeter进行压力测试_3
jmeter·压力测试