找回密码
 立即注册
首页 业界区 科技 软件测试工程师必看:手把手教你用Fiddler进行数据抓包 ...

软件测试工程师必看:手把手教你用Fiddler进行数据抓包与分析

户烫擞 前天 00:55
作为软件测试工程师,你是否曾经遇到过这些场景:前端显示异常但却无法确定是前端还是后端问题;需要测试接口但缺乏详细文档;想要验证移动应用的网络请求是否正确;或是需要模拟弱网环境测试应用表现?
这些常见测试挑战都可以通过掌握一款强大工具来解决——Fiddler。本文将全面介绍软件测试工程师如何利用Fiddler进行数据抓包与分析,提升测试效率与深度。
一、Fiddler简介与测试中的应用价值

1.1 什么是Fiddler?

Fiddler是一款免费的HTTP/HTTPS协议分析工具,由Telerik公司开发。它作为代理服务器运行,能够捕获所有通过它的网络流量,提供详细的请求和响应分析功能。相比于浏览器自带的开发者工具,Fiddler的优势在于能够捕获非浏览器流量(如桌面应用、移动应用)并且提供更强大的数据操纵能力。
1.2 Fiddler在软件测试中的核心价值

对于软件测试工程师而言,Fiddler提供了以下关键价值:

  • 接口测试与分析:无需文档即可分析接口请求和响应结构
  • 前后端问题定位:精确判断问题是出自前端、后端还是网络层面
  • 性能测试辅助:分析请求耗时,找出性能瓶颈
  • 安全测试支持:检查敏感信息是否明文传输
  • 模拟测试环境:模拟各种网络条件、修改响应数据等
  • 自动化测试集成:与测试脚本结合增强测试能力
二、Fiddler安装与基础配置

2.1 安装Fiddler

Fiddler可在官网(https://www.telerik.com/fiddler)免费下载。安装过程简单,只需注意以下几点:

  • Windows系统建议Windows 7及以上版本
  • 安装时需要.NET Framework支持
  • 建议以管理员身份运行安装程序
2.2 基础配置指南

首次使用Fiddler需要进行一些基本配置:
配置HTTPS抓包:

  • 打开Tools > Options > HTTPS
  • 勾选"Capture HTTPS CONNECTs"和"Decrypt HTTPS traffic"
  • 安装Fiddler根证书(会弹出提示)
  • 根据需要配置"Ignore server certificate errors"选项
配置连接设置:

  • 打开Tools > Options > Connections
  • 设置监听端口(默认8888)
  • 勾选"Allow remote computers to connect"(用于移动设备抓包)
配置抓包过滤器:

  • 在Filters选项卡中配置过滤条件
  • 可基于主机名、进程等条件过滤请求
三、Fiddler界面详解与基本操作

3.1 主界面功能区域介绍

Fiddler界面分为以下几个主要区域:

  • 会话列表:显示捕获的所有HTTP请求,包含状态码、协议、主机名、URL、大小等信息
  • 请求查看器:显示选中请求的详细信息,包括 headers、文本视图、Hex视图等
  • 响应查看器:显示服务器返回的响应内容
  • 工具栏:提供常用功能的快捷访问
  • 状态栏:显示当前抓包状态和统计信息
3.2 基本抓包操作

开始/停止抓包:

  • 点击File > Capture Traffic或使用快捷键F12
  • 状态栏左侧显示"Capturing"表示正在抓包
清空会话列表:

  • 点击Edit > Remove > All Sessions或使用Ctrl+X
保存会话数据:

  • 点击File > Save > All Sessions可保存为SAZ格式(Fiddler专用格式)
  • 也可导出为其他格式如HTTPArchive格式
四、数据抓包实战技巧

4.1 浏览器流量抓取

浏览器流量抓取是Fiddler最基本的功能。只需确保浏览器代理设置为Fiddler监听端口(默认8888),Fiddler即可捕获所有浏览器发起的请求。
注意事项:

  • 某些浏览器(如Chrome)可能使用系统代理设置,而其他浏览器可能需要手动配置
  • 使用完毕后记得恢复代理设置,否则可能导致无法上网
4.2 移动设备流量抓取

移动应用测试是Fiddler的重要应用场景,配置步骤如下:

  • 确保PC和移动设备在同一局域网
  • 查找PC的IP地址:在Fiddler中点击Online > Get Computer IP获取
  • 移动设备配置代理:在Wi-Fi设置中手动配置代理,服务器为PC的IP地址,端口为8888
  • 在移动设备上安装Fiddler根证书:浏览器访问http://:8888,下载并安装证书
  • 开始抓包:操作移动应用,Fiddler将捕获所有网络请求
iOS设备特别注意:iOS 10.3及以上版本需要在"设置 > 通用 > 关于本机 > 证书信任设置"中启用Fiddler根证书
4.3 桌面应用程序抓包

对于桌面应用程序,有以下几种抓包方式:

  • 如果应用使用系统代理设置,Fiddler可直接捕获
  • 如果应用不使用系统代理,可使用WinINET代理强制工具(如Fiddler的Hook功能)
  • 对于特别顽固的应用,可能需要使用路由级重定向技术
4.4 过滤目标请求技巧

当会话列表中有大量请求时,使用过滤功能可以快速定位目标请求:
使用Filters选项卡:

  • 在Hosts过滤器中指定只显示特定域名的请求
  • 使用Process过滤只显示特定进程产生的请求
使用命令行快速过滤:

  • 在左下角QuickExec框中输入"urls www.example.com"只显示该域名请求
  • 输入"select image"选择所有图片请求
使用搜索功能:

  • 点击Edit > Find Sessions或使用Ctrl+F搜索特定内容
五、数据分析与解读

5.1 理解HTTP请求结构

在Fiddler中选中一个会话,查看Inspectors标签页的Raw部分,可以看到完整的HTTP请求:
  1. GET /api/user/info HTTP/1.1Host: api.example.comConnection: keep-aliveAccept: application/json, text/plain, */*User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64)Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
复制代码
测试工程师需要关注的关键要素:

  • 请求方法(GET/POST/PUT/DELETE等)
  • 请求URL和参数
  • 请求头信息(认证信息、内容类型等)
  • 请求体(对于POST/PUT请求)
5.2 理解HTTP响应结构

HTTP响应示例:
  1. HTTP/1.1 200 OKContent-Type: application/json; charset=utf-8Date: Wed, 01 Sep 2021 07:23:41 GMTContent-Length: 125{  "status": "success",  "data": {    "userId": 12345,    "userName": "tester",    "email": "tester@example.com"  }}
复制代码
测试工程师需要关注的关键要素:

  • 状态码(200成功、404未找到、500服务器错误等)
  • 响应头信息(内容类型、缓存控制等)
  • 响应体内容(需要验证其正确性)
5.3 性能数据分析

通过Fiddler可以分析请求的性能特征:
时序统计信息:

  • DNS解析时间:域名解析耗时
  • TCP连接时间:建立TCP连接耗时
  • HTTPS握手时间:SSL/TLS握手耗时
  • 请求发送时间:发送请求数据耗时
  • 服务器响应时间:服务器处理请求耗时
  • 响应接收时间:下载响应数据耗时
性能分析技巧:

  • 关注耗时异常的请求
  • 比较同一请求在不同条件下的性能
  • 使用Timeline视图直观查看请求时间线
5.4 安全数据分析

从安全测试角度,需要关注以下方面:

  • 敏感信息是否明文传输(密码、令牌等)
  • 是否使用适当的加密协议(HTTPS而非HTTP)
  • 认证和授权机制是否合理
  • 是否存在不必要的敏感信息泄露
六、高级调试与 mock 技术

6.1 断点调试技术

Fiddler提供了强大的断点功能,可以中断请求和响应进行调试:
设置请求断点:

  • 在QuickExec框输入"bpu www.example.com"中断指定域名请求
  • 输入"bpu"取消所有请求断点
设置响应断点:

  • 在QuickExec框输入"bpafter www.example.com"中断指定域名响应
  • 输入"bpafter"取消所有响应断点
断点调试应用场景:

  • 修改请求参数测试不同输入条件下的行为
  • 修改响应数据测试前端对不同数据的处理
  • 模拟服务器错误响应测试客户端容错能力
6.2 AutoResponder 模拟技术

AutoResponder是Fiddler最强大的功能之一,允许使用本地文件或预设响应代替实际服务器响应:
基本配置步骤:

  • 拖拽会话到AutoResponder选项卡
  • 点击"Add Rule"创建规则
  • 选择或创建响应文件
  • 启用"Unmatched requests passthrough"确保不匹配的请求正常通过
常见应用场景:

  • 模拟接口返回数据测试前端表现
  • 模拟错误状态码测试应用容错
  • 替换大型资源(如图片、视频)提高测试效率
  • 模拟尚未开发完成的接口进行前端测试
高级匹配规则:

  • 使用EXACT:前缀进行精确匹配
  • 使用REGEX:前缀使用正则表达式匹配
  • 使用通配符*进行模糊匹配
6.3 Fiddler Script扩展功能

通过Fiddler Script可以自定义Fiddler行为,实现高度定制化的抓包和修改功能:
常见脚本应用:

  • 自动修改特定请求或响应
  • 添加自定义日志记录
  • 实现复杂的AutoResponder逻辑
  • 自定义性能指标计算
示例脚本:在请求头中添加自定义标记
  1. static function OnBeforeRequest(oSession: Session) {  if (oSession.uriContains("example.com")) {    oSession.oRequest["X-Custom-Header"] = "FiddlerAdded";  }}
复制代码
七、性能测试与弱网模拟

7.1 网络性能分析

Fiddler提供了多种性能分析工具:
Statistics选项卡:

  • 显示选中请求的性能统计数据
  • 提供多个请求的聚合统计数据
  • 显示网络带宽利用率估算
TimeLine视图:

  • 图形化显示请求发生时间和耗时
  • 直观识别性能瓶颈
  • 支持按时间范围筛选请求
7.2 弱网环境模拟

使用Fiddler可以模拟各种网络条件,测试应用在弱网环境下的表现:
模拟配置步骤:

  • 打开Rules > Performance > Simulate Modem Speeds
  • 或使用Customize Rules手动配置网络条件
手动配置网络模拟:
在Customize Rules脚本中修改以下值:
  1. // 上传速度 (bps)oSession["request-trickle-delay"] = "150"; // 下载速度 (bps)oSession["response-trickle-delay"] = "150";
复制代码
典型网络条件模拟值:

  • 4G网络:上传/下载延迟为50-100ms
  • 3G网络:上传/下载延迟为100-200ms
  • 2G网络:上传/下载延迟为300-1000ms
  • 极差网络:上传/下载延迟为2000ms以上
八、Fiddler与其他工具集成

8.1 与测试框架集成

Fiddler可以与自动化测试框架集成,增强测试能力:
与Selenium集成:

  • 通过代理配置使Selenium使用Fiddler代理
  • 在测试过程中捕获和分析网络请求
  • 使用AutoResponder模拟网络条件
与Postman集成:

  • 将Fiddler捕获的请求导出为Postman集合
  • 使用Fiddler分析Postman发送的请求
8.2 与持续集成流程集成

虽然Fiddler主要是GUI工具,但也可以通过命令行方式集成到CI流程中:
Fiddler命令行用法:
  1. fiddler.exe /capture /startfiddler.exe /capture /stopfiddler.exe /export /format:har /output:output.har
复制代码
九、常见问题与解决方案

9.1 抓包常见问题

无法捕获HTTPS流量:

  • 确认已安装Fiddler根证书
  • 检查浏览器/设备证书信任设置
  • 尝试重置Fiddler证书(Tools > Options > HTTPS > Actions > Reset Certificates)
移动设备无法连接:

  • 确认PC和设备在同一网络
  • 检查防火墙设置,允许8888端口通信
  • 尝试使用PC IP地址而非主机名
9.2 性能分析问题

Fiddler自身性能影响:

  • Fiddler作为代理会对网络性能有一定影响
  • 对于性能敏感测试,应考虑这种影响
  • 测试完成后记得关闭Fiddler或恢复代理设置
十、最佳实践与总结

10.1 Fiddler使用最佳实践


  • 规范化抓包流程:建立团队统一的抓包和分析流程
  • 合理使用过滤:避免捕获过多无关请求提高效率
  • 注意安全隐私:处理敏感数据时遵守公司安全政策
  • 定期清理会话:长时间抓包会导致内存占用过高
  • 结合其他工具:Fiddler与其他测试工具配合使用效果更佳
10.2 测试工程师的Fiddler技能矩阵

根据经验水平,测试工程师应掌握以下Fiddler技能:
初级:

  • 基本抓包和查看能力
  • 简单过滤和搜索
  • 基础性能数据分析
中级:

  • HTTPS和移动设备抓包
  • AutoResponder使用
  • 断点调试技巧
  • 弱网模拟配置
高级:

  • Fiddler Script编写
  • 与自动化测试集成
  • 复杂性能分析
  • 安全测试应用
10.3 总结

Fiddler是软件测试工程师工具箱中不可或缺的利器,掌握了Fiddler的使用,测试工程师能够:

  • 更深入理解系统工作原理
  • 更快速定位和诊断问题
  • 更全面进行接口和性能测试
  • 更有效模拟各种测试环境
希望通过本文的详细介绍,你能全面掌握Fiddler在软件测试中的应用,提升自己的测试技能和效率。记住,工具只是手段,真正的价值在于如何利用工具发现和解决实际问题。
不断练习和实践,将Fiddler变成你的第二双眼睛,看清网络流量背后的真相,成为一名更加优秀的测试工程师。
本文原创于【程序员二黑】公众号,转载请注明出处!
欢迎大家关注笔者的公众号:程序员二黑,专注于软件测试干活分享,全套测试资源可免费分享!
最后如果你想学习软件测试,欢迎加入笔者的交流群:785128166,里面会有很多资源和大佬答疑解惑,我们一起交流一起学习!

来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
您需要登录后才可以回帖 登录 | 立即注册