Fiddler(中文名称:小提琴)是一个HTTP的调试代理,以代理服务器的方式,监听系统的Http网络数据流动,Fiddler能够也可让你检查全部的HTTP通信,设置断点,以及Fiddle全部的“进出”的数据(我通常用来抓包),Fiddler还包含一个简单却功能强大的基于JScript .NET事件脚本子系统,它能够支持众多的HTTP调试任务。html
Fiddler官方网站提供了大量的帮助文档和视频教程,这是学习Fiddler的最好资料浏览器
Fiddler是以代理WEB服务器的形式工做的,浏览器与服务器之间经过创建TCP链接以HTTP协议进行通讯,浏览器默认经过本身发送HTTP请求到服务器,它使用代理地址:127.0.0.1, 端口:8888. 当Fiddler开启会自动设置代理, 退出的时候它会自动注销代理,这样就不会影响别的程序。不过若是Fiddler非正常退出,这时候由于Fiddler没有自动注销,会形成网页没法访问。解决的办法是从新启动下Fiddler。缓存
Fiddler的主界面分为 工具面板、会话面板、监控面板、状态面板性能优化
说明注释、从新请求、删除会话、继续执行、流模式/缓冲模式、解码、保留会话、监控指定进程、寻找、保存会话、切图、计时、打开浏览器、清除IE缓存、编码/解码工具、弹出控制监控面板、MSDN、帮助服务器
两种模式网络
每一个网络请求都会经历域名解析、创建链接、发送请求、接受数据等阶段。把多个请求以时间做为 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 | 清屏 (Ctrl+x 也能够清屏) |
select | 选择会话的命令 |
?.png | 用来选择png后缀的图片 |
bpu | 截获request |
bpafter | 截获response |
Fiddler不只能监听HTTP请求并且默认状况下也能捕获到HTTPS请求,Tool -> Fiddler Option -> HTTPS下面进行设置,勾选上“Decrypt HTTPS traffic”,若是没必要监听服务器端得证书错误能够勾上“Ignore server certification errors”,也能够跳过几个指定的HOST来缩小或者扩大监听范围。
模拟各种场景
经过GZIP压缩,测试性能
模拟Agent测试,查看服务端是否对不一样客户端定制响应
模拟慢速网络,测试页面的容错性
禁用缓存,方便调试一些静态文件或测试服务端响应状况
根据一些场景自定义规则
低网速模拟有时出于兼容性考虑或者对某处进行性能优化,在低网速下每每能较快发现问题所在也容易发现性能瓶颈,惋惜其余调试工具没能提供低网速环境,而强大的Fiddler考虑到了这一点,可以进行低网速模拟设置Rules > Performance > Stimulate Modem Speeds。
Compare(对比文本)
Composer(构造器)
请求构造顾名思义就是咱们能够模拟请求,也就是说咱们能够借助Fiddler的Composer 在不改动开发环境实际代码的状况下修改请求中的参数值而且方便的从新调用一次该请求,而后相比较2次请求响应有何具体不一样。任何一个请求参数只要是合法的取值再次调用后都会有相应的响应,那么你想要的任意一个合法请求组合天然也可以按照你的意愿构造出来,而后再次调用以及查看返回数据。
将该请求鼠标左键单击拖入Fiddler右侧Request Builder标签内并修改原请求参数OutPutType=JSON为OutPu tType=XML,而后点击Execute按钮再次触发调用请求

双击此次请求包在Inspectors标签下查看返回数据为XML格式,而JSON格式一栏为空:
对一个从新载入的页面进行抓包,若是包的条目过多而你须要关注的就那么几项的话,可使用Fiddler的过滤器Filters进行抓包,那么抓包时只会抓取你但愿抓到的那些包。切换到Filters标签勾选Use filter,以便激活过滤器,这样下面的各类过滤方式就能够进行选择了。

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

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