软件测试之Fiddler详解

📅 2026/7/10 8:20:29
软件测试之Fiddler详解
点击文末小卡片免费获取软件测试全套资料资料在手涨薪更快Fiddler中文名称小提琴是一个HTTP的调试代理以代理服务器的方式监听系统的Http网络数据流动Fiddler可以也可以让你检查所有的HTTP通讯设置断点以及Fiddle所有的“进出”的数据我一般用来抓包,Fiddler还包含一个简单却功能强大的基于JScript .NET事件脚本子系统它可以支持众多的HTTP调试任务。Fiddler官方网站提供了大量的帮助文档和视频教程,这是学习Fiddler的最好资料工作原理Fiddler是以代理WEB服务器的形式工作的,浏览器与服务器之间通过建立TCP连接以HTTP协议进行通信浏览器默认通过自己发送HTTP请求到服务器它使用代理地址:127.0.0.1, 端口:8888. 当Fiddler开启会自动设置代理 退出的时候它会自动注销代理这样就不会影响别的程序。不过如果Fiddler非正常退出这时候因为Fiddler没有自动注销会造成网页无法访问。解决的办法是重新启动下Fiddler。主界面Fiddler的主界面分为 工具面板、会话面板、监控面板、状态面板工具面板说明注释、重新请求、删除会话、继续执行、流模式/缓冲模式、解码、保留会话、监控指定进程、寻找、保存会话、切图、计时、打开浏览器、清除IE缓存、编码/解码工具、弹出控制监控面板、MSDN、帮助两种模式缓冲模式Buffering ModeFiddler直到HTTP响应完成时才将数据返回给应用程序。可以控制响应修改响应数据。但是时序图有时候会出现异常流模式Streaming ModeFiddler会即时将HTTP响应的数据返回给应用程序。更接近真实浏览器的性能。时序图更准确,但是不能控制响应。会话面板会话面板会话面板图标监控面板统计报表请求总数、请求包大小、响应包大小。请求起始时间、响应结束时间、握手时间、等待时间、路由时间、TCP/IP、传输时间。HTTP状态码统计。返回的各种类型数据的大小统计以及饼图展现。统计报表时间轴每个网络请求都会经历域名解析、建立连接、发送请求、接受数据等阶段。把多个请求以时间作为 X 轴用图表的形式展现出来就形成了瀑布图。在Fiddler中只要在左侧选中一些请求右侧选择Timeline标签就可以看到这些请求的瀑布图时间轴绿色的请求表示这是一个“有条件的请求”。HTTP 协议定义了 5 个条件请求头部最常见的两个是“If-Modified-Since”和“If-None-Match”。服务器根据这两个头部来验证本地缓存是否过期如果过期则正常返回资源的最新版本否则仅返回 304 Not Modified浏览器继续使用本地缓存。包含条件请求头部的请求用绿色显示否则用黑色。有阴影线的请求是缓冲模式下的请求实心的是流模式下的请求。Fiddler 提供了缓冲Buffering和流Streaming两种抓包模式缓冲模式下Fiddler 会在响应完成时才将数据返回给应用程序通常是浏览器这种模式下可以控制响应方便地修改响应内容流模式下Fiddler 会实时返回响应数据给浏览器但没办法控制响应。一般使用流模式瀑布图会更真实一些。这两种模式可以通过 Fiddler 的工具栏选择。特别的通过 Fiddler 的“AutoResponder”功能返回的响应只能是缓冲模式。请求条的不同颜色对应着不同类型的响应根据响应头的 MIME Type 来归类。如浅绿色表示图片类型的响应深绿色是 JavaScript紫色是 CSS其它都是蓝色。请求中的黑色竖线表示的是浏览器收到服务端响应的第一个字节这一时刻。这个时间受 DNS 解析、建立连接、发送请求、等待服务端响应等步骤的影响。请求条后面的图标表示响应的某些特征。如软盘图标表示这个响应正文从本地获得也就是说服务端返回了 304闪电表示这是 Fiddler 的“AutoResponder”的响应向下的箭头表示响应是 302需要重定向红色感叹号说明这个请求有错误发生状态码是 4XX 或 5XX。特别的如果请求条后面有一个红色的X说明服务端响应完这个请求之后断开了连接。出现这种情况一般有两种可能HTTP/1.0 的响应中没有 Connection: Keep-Alive或者是 HTTP/1.1 的响应中包含了 Connection: close。使用持久连接可以省去建立连接的开销也可以减小 TCP 慢启动和其它拥塞控制机制带来的影响总之是好处多多。请求前面的红色圆圈表示这个连接是新建的绿色表示是复用的。上面的圆圈表示的是浏览器到 Fiddler 的连接下面的圆圈是 Fiddler 到服务端的连接。状态面板控制台Fiddler的左下角有一个命令行工具叫做QuickExec,允许你直接输入命令。常见得命令有命令解释help打开官方的使用页面介绍所有的命令都会列出来cls清屏 (Ctrlx 也可以清屏)select选择会话的命令?.png用来选择png后缀的图片bpu截获requestbpafter截获responseRequest消息的结构Response消息的结构常用功能监听HTTPSFiddler不仅能监听HTTP请求而且默认情况下也能捕获到HTTPS请求Tool - Fiddler Option - HTTPS下面进行设置勾选上“Decrypt HTTPS traffic”如果不必监听服务器端得证书错误可以勾上“Ignore server certification errors”也可以跳过几个指定的HOST来缩小或者扩大监听范围。HOST切换HOST模拟各类场景通过GZIP压缩测试性能模拟Agent测试查看服务端是否对不同客户端定制响应模拟慢速网络测试页面的容错性禁用缓存方便调试一些静态文件或测试服务端响应情况根据一些场景自定义规则自定义规则低网速模拟有时出于兼容性考虑或者对某处进行性能优化在低网速下往往能较快发现问题所在也容易发现性能瓶颈可惜其他调试工具没能提供低网速环境而强大的Fiddler考虑到了这一点能够进行低网速模拟设置Rules Performance Stimulate Modem Speeds。Compare对比文本对比文本Composer构造器请求构造顾名思义就是我们可以模拟请求也就是说我们可以借助Fiddler的Composer 在不改动开发环境实际代码的情况下修改请求中的参数值并且方便的重新调用一次该请求然后相比较2次请求响应有何具体不同。任何一个请求参数只要是合法的取值再次调用后都会有相应的响应那么你想要的任意一个合法请求组合自然也能够按照你的意愿构造出来然后再次调用以及查看返回数据。将该请求鼠标左键单击拖入Fiddler右侧Request Builder标签内并修改原请求参数OutPutTypeJSON为OutPu tTypeXML然后点击Execute按钮再次触发调用请求双击这次请求包在Inspectors标签下查看返回数据为XML格式而JSON格式一栏为空Filters(过滤监控)对一个重新载入的页面进行抓包如果包的条目过多而你需要关注的就那么几项的话可以使用Fiddler的过滤器Filters进行抓包那么抓包时只会抓取你希望抓到的那些包。切换到Filters标签勾选Use filter以便激活过滤器这样下面的各种过滤方式就可以进行选择了。AutoResponder(请求重定向)所谓请求无非就是需要调用到的一些资源(包括JS、CSS和图片等)所谓重定向就是将页面原本需要调用的资源指向其他资源(你能够控制的资源或者可以引用到的资源)。你可以将前台服务器的诸多或者某个资源在本地做个副本如果正常网络访问环境下该资源出现了BUG而导致开发环境崩溃时可以先将这个资源的请求重定向到本地副本这样就可以继续进行开发调试你的页面从而大量节省资源维护的等待时间。你也可以将多人同时维护的某个JS文件复制一份出来在本地当你的开发调试收到他人调试代码干扰时可以将这个JS的调用重定向到本地无干扰的JS文件进行无干扰开发功能开发完成并调试OK之后再将你的代码小心合入到开发环境中这样就可以避免受到他人干扰专心搞你的模块开发也就是说能够将JS文件脱离开发环境却不影响线上调试。你还可以将样式文件或者图片指向本地。移动端抓包Fiddler不但能截获各种浏览器发出的HTTP请求, 也可以截获各种智能手机发出的HTTP/HTTPS请求。Fiddler能捕获IOS,Andriod,WinPhone,设备发出的请求同理也可以截获IPad, MacBook的等设备发出的HTTP/HTTPS。前提条件是安装Fiddler的机器跟Iphone 在同一个网络里 否则IPhone不能把HTTP发送到Fiddler的机器上来。具体操作步骤如下Fiddler设置打开Fiddler, Tools- Fiddler Options。配置完后记得要重启Fiddler.选中Allow remote computers to connect. 是允许别的机器把HTTP/HTTPS请求发送到Fiddler上来获取Fiddler所在机器的IP安装Fiddler证书这一步是为了让Fiddler能捕获HTTPS请求。如果你只需要截获HTTP请求 可以忽略这一步首先要知道Fiddler所在的机器的IP地址 假如我安装了Fiddler的机器的IP地址是:192.168.1.104打开IPhone 的Safari, 访问 http://192.168.1.104:8888 点FiddlerRoot certificate 然后安装证书打开IPhone, 找到你的网络连接 打开HTTP代理 输入Fiddler所在机器的IP地址(比如:192.168.1.104) 以及Fiddler的端口号8888写在最后最后感谢每一个认真阅读我文章的人礼尚往来总是要有的虽然不是什么很值钱的东西如果你用得到的话可以直接拿走这些资料对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库这个仓库也陪伴我走过了最艰难的路程希望也能帮助到你凡事要趁早特别是技术行业一定要提升技术功底。