Fiddler 教程

1、简介

Fiddler(中文名称:小提琴)是一个HTTP的调试代理,以代理服务器的方式,监听系统的Http网络数据流动, Fiddler能够也可让你检查全部的HTTP通信,设置断点,以及Fiddle全部的“进出”的数据(我通常用来抓包),Fiddler还包含一个简单却功能强大的基于JScript .NET事件脚本子系统,它能够支持众多的HTTP调试任务。html


Fiddler官方网站提供了大量的帮助文档和视频教程,这是学习Fiddler的最好资料浏览器


2、工做原理

Fiddler是以代理WEB服务器的形式工做的,浏览器与服务器之间经过创建TCP链接以HTTP协议进行通讯,浏览器默认经过本身发送HTTP请求到服务器,它使用代理地址:127.0.0.1, 端口:8888. 当Fiddler开启会自动设置代理, 退出的时候它会自动注销代理,这样就不会影响别的程序。不过若是Fiddler非正常退出,这时候由于Fiddler没有自动注销,会形成网页没法访问。解决的办法是从新启动下Fiddler.缓存

3、界面操做

一、主界面

Fiddler的主界面分为 工具面板、会话面板、监控面板、状态面板,下面进行一一介绍。性能优化

二、工具面板

  • 说明
    注释、从新请求、删除会话、继续执行、流模式/缓冲模式、解码、保留会话、监控指定进程、寻找、保存会话、切图、计时、打开浏览器、清除IE缓存、编码/解码工具、弹出控制监控面板、MSDN、帮助服务器

  • 两种模式cookie

缓冲模式(Buffering Mode
Fiddler直到HTTP响应完成时才将数据返回给应用程序。能够控制响应,修改响应数据。可是时序图有时候会出现异常网络

流模式(Streaming Mode
Fiddler会即时将HTTP响应的数据返回给应用程序。更接近真实浏览器的性能。时序图更准确。可是不能控制响应。app

三、会话面板

单间查看请求的状态码、请求方式、请求的URL

四、监控面板

  • 统计报表

(1) 请求总数、请求包大小、响应包大小;composer

(2) 请求起始时间、响应结束时间、握手时间、等待时间、路由时间、TCP/IP传输时间;工具

(3) HTTP状态码统计;

(4) 返回的各类类型数据的大小统计以及饼图展示。

  • 时间轴

    每一个网络请求都会经历域名解析、创建链接、发送请求、接受数据等阶段。把多个请求以时间做为 X 轴,用图表的形式展示出来,就造成了瀑布图。在Fiddler 中,只要在左侧选中一些请求,右侧选择Timeline标签,就能够看到这些请求的瀑布图

看到这张图,你是否能够回答这些问题:

  1. 图标的 Y 轴上显示的是简化后的 URL。为何有些是绿色的,有些是黑色的?
  2. 为何第一个请求用阴影线来表示,其它请求却都是实心的?
  3. 请求条的不一样颜色分别表明什么?
  4. 每一个请求中的黑色竖线表示什么?
  5. 请求后面的图标(如闪电和软盘)表明了什么?
  6. 每一个请求前面两个小圆圈是什么,为何有的是红色,有的是绿色?
    下面将一一揭晓。

  1. 绿色的请求表示这是一个“有条件的请求”。HTTP 协议定义了 5 个条件请求头部,最多见的两个是“If-Modified-Since”和“If-None-Match”。服务器根据这两个头部来验证本地缓存是否过时,若是过时则正常返回资源的最新版本;不然仅返回 304 Not Modified,浏览器继续使用本地缓存。包含条件请求头部的请求用绿色显示,不然用黑色。

  2. 有阴影线的请求是缓冲模式下的请求,实心的是流模式下的请求。Fiddler 提供了缓冲(Buffering)和流(Streaming)两种抓包模式:缓冲模式下,Fiddler 会在响应完成时才将数据返回给应用程序(一般是浏览器),这种模式下能够控制响应,方便地修改响应内容;流模式下,Fiddler 会实时返回响应数据给浏览器,但没办法控制响应。通常使用流模式,瀑布图会更真实一些。这两种模式能够经过 Fiddler 的工具栏选择。特别的,经过 Fiddler 的“AutoResponder”功能返回的响应,只能是缓冲模式。

  3. 请求条的不一样颜色对应着不一样类型的响应,根据响应头的 MIME Type 来归类。如浅绿色表示图片类型的响应;深绿色是 JavaScript;紫色是 CSS;其它都是蓝色。

  4. 请求中的黑色竖线,表示的是浏览器收到服务端响应的第一个字节这一时刻。这个时间受 DNS 解析、创建链接、发送请求、等待服务端响应等步骤的影响。

  5. 请求条后面的图标表示响应的某些特征。如软盘图标表示这个响应正文从本地得到,也就是说服务端返回了 304;闪电表示这是 Fiddler 的“AutoResponder”的响应;向下的箭头表示响应是 302,须要重定向;红色感叹号说明这个请求有错误发生(状态码是 4XX 或 5XX)。特别的,若是请求条后面有一个红色的X,说明服务端响应完这个请求以后,断开了链接。出现这种状况通常有两种可能:HTTP/1.0 的响应中没有 Connection: Keep-Alive;或者是 HTTP/1.1 的响应中包含了 Connection: close。使用持久链接能够省去创建链接的开销,也能够减少 TCP 慢启动和其它拥塞控制机制带来的影响,总之是好处多多。

  6. 请求前面的红色圆圈表示这个链接是新建的,绿色表示是复用的。上面的圆圈表示的是浏览器到 Fiddler 的链接,下面的圆圈是 Fiddler 到服务端的链接。

五、状态面板

  • 控制台
    Fiddler的左下角有一个命令行工具叫作QuickExec,容许你直接输入命令。
    常见得命令有
命令 解释
help 打开官方的使用页面介绍,全部的命令都会列出来
cls 清屏 (Ctrl+x 也能够清屏)
select 选择会话的命令
?.png 用来选择png后缀的图片
bpu 截获request
bpafter 截获response

4、经常使用功能

一、监听HTTPS

Fiddler不只能监听HTTP请求并且默认状况下也能捕获到HTTPS请求,Tool -> Fiddler Option -> HTTPS下面进行设置,勾选上“Decrypt HTTPS traffic”,若是没必要监听服务器端得证书错误能够勾上“Ignore server certification errors”,也能够跳过几个指定的HOST来缩小或者扩大监听范围。

二、HOST切换

三、模拟各种场景

  • 经过GZIP压缩,测试性能
  • 模拟Agent测试,查看服务端是否对不一样客户端定制响应
  • 模拟慢速网络,测试页面的容错性
  • 禁用缓存,方便调试一些静态文件或测试服务端响应状况
  • 根据一些场景自定义规则

  • 低网速模拟
    有时出于兼容性考虑或者对某处进行性能优化,在低网速下每每能较快发现问题所在也容易发现性能瓶颈,惋惜其余调试工具没能提供低网速环境,而强大的Fiddler考虑到了这一点,可以进行低网速模拟设置Rules > Performance > Stimulate Modem Speeds。

四、Composer(构造器)

请求构造顾名思义就是咱们能够模拟请求,也就是说咱们能够借助Fiddler的Composer 在不改动开发环境实际代码的状况下修改请求中的参数值而且方便的从新调用一次该请求,而后相比较2次请求响应有何具体不一样。任何一个请求参数只要是合法的取值再次调用后都会有相应的响应,那么你想要的任意一个合法请求组合天然也可以按照你的意愿构造出来,而后再次调用以及查看返回数据,十分方便!

下面举一个交易查询请求构造的例子。首先进入交易查询页面抓包找到目标请求https://pay.tenpay.com/main/app/v1.0/trans_manage.cgi?OutPutType=JSON,双击该包在Inspectors标签下查看返回数据为JSON格式,而XML格式一栏为空:

将该请求鼠标左键单击拖入Fiddler右侧Request Builder标签内并修改原请求参数OutPutType=JSON为OutPu tType=XML,而后点击Execute按钮再次触发调用请求,

双击此次请求包在Inspectors标签下查看返回数据为XML格式,而JSON格式一栏为空:

五、Filters(过滤监控)

对一个从新载入的页面进行抓包,若是包的条目过多而你须要关注的就那么几项的话,可使用Fiddler的过滤器Filters进行抓包,那么抓包时只会抓取你但愿抓到的那些包。切换到Filters标签勾选Use filter,以便激活过滤器,这样下面的各类过滤方式就能够进行选择了。

选项1 解释
No zone filter 不设置hosts过滤
Show Only Intranet Hosts 只显示内网HOST
Show Only Internet Hosts 只显示外网HOST令
 
 
选项2 解释
No Host Filter 不设置hosts过滤
Show Only The Following Hosts 隐藏过滤到的域名
Show Only The Following Hosts 只显示过滤到的域名
Flag The Following Hosts 标记过滤到的域名

六、AutoResponder(请求重定向)

所谓请求无非就是须要调用到的一些资源(包括JS、CSS和图片等),所谓重定向就是将页面本来须要调用的资源指向其余资源(你可以控制的资源或者能够引用到的资源)。

(1)你能够将前台服务器的诸多或者某个资源在本地作个副本,若是正常网络访问环境下该资源出现了BUG而致使开发环境崩溃时,能够先将这个资源的请求重定向到本地副本,这样就能够继续进行开发调试你的页面,从而大量节省资源维护的等待时间。

(2)你也能够将多人同时维护的某个JS文件复制一份出来在本地,当你的开发调试收到他人调试代码干扰时,能够将这个JS的调用重定向到本地无干扰的JS文件,进行无干扰开发,功能开发完成并调试OK以后再将你的代码当心合入到开发环境中,这样就能够避免受到他人干扰专心搞你的模块开发,也就是说可以将JS文件脱离开发环境却不影响线上调试。

(3)你还能够将样式文件或者图片指向本地若是须要的话。开发过程当中的不少页面其实都是惨不忍睹的,究其缘由很大程度上是由于缺乏对应的样式文件或者没有图片资源,因此样式文件和图片的重定向会对美感稍有要求的开发人员带来福音。

七、设置断点

Fiddler最强大的功能莫过于设置断点了,设置好断点后,你能够修改httpRequest的任何信息包括host, cookie或者表单中的数据。设置断点有两种方法:

第一种:打开Fiddler 点击Rules-> Automatic Breakpoint  ->Before Requests(这种方法会中断全部的会话)  

如何消除命令呢?  点击Rules-> Automatic Breakpoint  ->Disabled

第二种:  在命令行中输入命令:  bpu www.baidu.com   (这种方法只会中断www.baidu.com)

如何消除命令呢?  在命令行中输入命令 bpu

八、网速限制

 Fiddle提供了一个功能,用于模拟网络亚健康环境

启用方法以下:Rules → Performances → Simulate Modem Speeds 

打开便可,默认发送请求的网速为300ms/KB,接收响应的网速为150ms/KB。

网速能够自行修改,具体方法是点开Rules → Customize Rules 。此时会弹出CustomRules.js的代码,Ctrl+F寻找m_SimulateModem关键字,你会找到下面这段:

5、浏览器抓包方式

一、IE & Firefox & Chrome

fiddler经常使用浏览器抓包的方法同样,只须要将浏览器的代理地址设置为127.0.0.1,端口设置为8888便可

二、VS

咱们在用visual stuido 开发ASP.NET网站的时候也须要用Fiddler来分析HTTP, 默认的时候Fiddler是不能嗅探到localhost的网站。

在localhost后面加个点号,Fiddler就能嗅探到。

例如:本来ASP.NET的地址是 http://localhost:2391/Default.aspx, 加个点号后,变成 http://localhost.:2391/Default.aspx 就能够了

6、移动端抓包

Fiddler不但能截获各类浏览器发出的HTTP请求, 也能够截获各类智能手机发出的HTTP/HTTPS请求。

Fiddler能捕获IOS,Andriod,WinPhone,设备发出的请求,同理,也能够截获IPad, MacBook的等设备发出的HTTP/HTTPS。

前提条件是:安装Fiddler的机器,跟Iphone 在同一个网络里, 不然IPhone不能把HTTP发送到Fiddler的机器上来。

具体操做步骤以下:

  • Fiddler设置

点Tools -- Options菜单,按照下面截图设置HTTPS,否则无法解密

打开Fiddler, Tools-> Fiddler Options->Connections。(配置完后记得要重启Fiddler).

选中"Allow remote computers to connect". 是容许别的机器把HTTP/HTTPS请求发送到Fiddler上来

  • APP设置

一、获取Fiddler所在机器的IP,安装Fiddler证书

这一步是为了让Fiddler能捕获HTTPS请求。 若是你只须要截获HTTP请求, 能够忽略这一步

首先要知道Fiddler所在的机器的IP地址: 假如我安装了Fiddler的机器IP地址是:192.168.1.104

打开手机浏览器, 访问 http://192.168.1.104:8888, 点"FiddlerRoot certificate" 而后安装证书

注意:iPhone安装证书后,默认不会开启信任的,须要手动添加一下证书信任,设置 - 通用 - 关于本机,最下面有个信任证书设置按钮,打开后是下面的页面,将DO_NOT_TRUST_FiddlerRoot这个证书打开,不信任这个证书是抓不到https包的,一样的测试完以后你也能够将他关闭。

二、打开你的网络链接, 打开HTTP代理, 输入Fiddler所在机器的IP地址(好比:192.168.1.104) 以及Fiddler的端口号8888

7、推荐书籍

  • 《Fiddler调试权威指南》是Fiddler的开发者Eric Lawrence编写的一本权威的参考指南。全书分为10章和4个附录,从认识Fiddler开始,介绍了基本技巧和概念、配置选项、Inspectors、扩展、数据流导入导出、FiddlerScript和FiddlerCore等主题;附录部分还给出了故障排除和命令行等有用的参考信息。

  • 《Fiddler调试权威指南》适合Web开发人员和Web测试人员阅读参考,也适合想要学习和掌握Fiddler的读者阅读。经过《Fiddler调试权威指南》,你将学会如何利用Fiddler调试Web相关的应用,掌握如何调试HTTPS数据流,学会如何在流行的设备上使用Fiddler,甚至掌握更多高级的扩展功能。

8、其余抓包工具

同类的工具备 : HttpWatch, Firebug,Chrome自带调试工具,WireShark

9、总结

经过以上的介绍,你应该已经发现fiddler其它强大的功能。fiddler绝对是开发利器。

  • Fiddler能记录全部客户端和服务器的HTTPHTTPS请求,容许你监视、设置断点,甚至修改输入输出数据,Fiddler包含了一个强大的基于事件脚本的子系统,而且能使用.NET语言进行扩展;
  • 你对HTTP协议越了解,你就能越掌握Fiddler的使用方法,你越使用Fiddler,就越能帮助你了解HTTP协议,二者关系紧密、相辅相成;
  • 强大图形呈现,拖拽操做,丰富的插件。
  • 使用Fiddler不管对Coder仍是Tester来讲,都是很是有用的工具。

 

本文引用:

https://blog.csdn.net/guoguo527/article/details/52127412

好用的插件:
https://www.telerik.com/fiddler/add-ons
相关文章
相关标签/搜索