Fiddler是位于客户端和服务端之间的HTTP代理,也是目前最常用的用抓包工具之一。
它能够:
- 监控浏览器所有的HTTP/HTTPS流量
- 查看/分析请求内容细节
- 测试网站的性能
- 解密HTTPS的web会话
- 伪造客户端请求和服务器响应
- 全局/局部断点功能
- 第三方插件
使用场景:
- 接口测试、线上环境调试、web性能分析
- 判断前后端bug、开发环境hosts配置
- mock、弱网断网测试
fiddler工作(抓包)原理
敲黑板!划重点!!
为了更好的使用fiddler(当然也包括其他抓包工具),请关闭windows防火墙,360全家桶,腾讯管家等软件。
安装及配置
Fiddler for mac
其实,mac系统中,用Charles更好,此处推荐参考:
Fiddler for windows
环境:win10 + 火狐浏览器
安装
下载
点击https://www.telerik.com/download/fiddler链接下载。
当点击下载后,会进入下载页面自动下载,如果自动下载失败,点击如下图的中的链接。
安装
- 双击本地的可执行文件(如果遇到用户账户控制,点击
是
即可),选择I Agree
的。
-
选择安装位置并点击
Install
后, 会进入安装步骤(遇到弹窗或者浏览器弹窗,叉掉即可)
-
然后点击
Close
完成安装。
- 需要注意的是,fiddler在安装成功后并不会自动的在桌面添加快捷方式,但你可以进入安装目录将可执行文件发送到桌面快捷方式/固定到任务栏/添加到开始菜单都随你。
- 当你启动fiddler之后,可能会提示如下图的warning,翻译成中文就是: Windows 使用了隔离技术, 阻止被 只有调用本地代理的传统软件和Edge浏览器 抓包。 请使用:工具条里面的WinConfig 去允许抓包。看不懂没关系,我们点击
No
即可。
- (如果是第一次打开)是否选择发送匿名的使用和配置信息,使fiddler更完善,根据你的选择了。
Fiddler代理配置
安装成功后,我们打开fiddler配置一下代理设置,这也是一个最常用的配置操作。
菜单栏
选择Tools
下的Options
。
- 选择
Connections
,fiddler监听的端口默认是8888
,如果该端口与你其他应用的端口冲突,你也可以自定义1024~65536
范围内的任意端口,然后勾选作为系统代理。
完事!
火狐浏览器代理设置
这里以火狐浏览器为例来设置代理。
- 火狐浏览器菜单栏右上角点击设置,然后点击
选项
。
- 下拉选择在
网络设置
中选择设置
。
- 如下图,选择
手动代理设置
。端口保持跟fiddler的代理端口保持一致,完事点击确定即可。
此时火狐浏览器发送的请求自动走fiddler的代理。
测试
当配置完毕fiddler和浏览器的代理后,在浏览器地址栏访问http://www.neeo.cc:6001/
此时,我们在fiddler中已经能发现成功的监听到了相关请求了。
快速上手
fiddler面板
如下图。
一般的,我们可以将fiddler的面板分为5部分:
-
菜单栏:关于fiddler的设置相关。
Rules
关于规则的设置,比如隐藏建立通道的连接,隐藏304的连接,隐藏关于图片的连接。
-
工具栏:关于请求的常用的工具,从左到右依次是:
WinConfig
是关于windows的配置,用的较少,这里可以忽略掉。Set Comments
会话图标,当你选中一个连接,点击该按钮可以设置选中连接的备注信息。当你在导出会话时,可以看到这个备注信息,可以提醒别的别人关于这个连接的备注。Replay
重放请求,当你选中一个链接,点击Replay
按钮,fiddler可以重新向该连接发送请求。Remove
也就是那个×
按钮,清除,清除所有连接,清除所有图片连接,清除非200请求等等。Go
用于断点模式。Stream
流模式(可选模式),fiddler默认是缓冲模式,也就是服务器将所有的结果返回给fiddler,fiddler再一次性将结果展示,如无特殊情况不选择使用流模式。Decode
对请求做解码。Keep
保持会话的数量。Any Process
选择监听的程序,点击该按钮左边的加号,拖到想要监听的应用上去,比如拖到火狐浏览器上去,此时,fiddler只会监听火狐浏览器的请求。Find
查找和过滤请求。Save
保存.saz
结尾的会话到本地。- 截图,截取当前桌面,可以保存到本地。
- 计时器,呃,就是个计时器,我们看下一个吧!
Browse
,当你选中一个请求后,可以点击下拉选择打开到指定浏览器,算是快捷方式吧。Clear Cache
清除IE浏览器缓存。TextWizard
编码解码工具。比如将剪贴板的内容编码为base64格式,也可以提供加密、url编码等等功能。Tearoff
将辅助工具单独分离为小窗。MSDN Search
微软开发者网络,参见维基百科。Online
关于本机的相关信息,比如网卡信息,IP等。
-
监控面板(会话列表):fiddler监听的每条http请求(每一条称为一个session),主要包含了:
#
请求的顺序,从1开始,按照页面加载请求的顺序递增。Result
响应状态码。Protocol
请求使用的协议,如HTTP/HTTPS/FTP
等。Host
请求地址的域名(主机名)。URL
请求服务器的路径和文件名,如果是get请求,也包括参数。Body
响应体大小,单位是bytes
。Caching
缓存。Content-Type
响应内容的Content-Type
。Process
请求所在系统的应用进程/进程ID。Comments
用户通过脚本或者右键添加的备注信息。Custom
用户可以通过脚本设置的自定义值。
除了这些默认的字段,也可以手动添加一些自定义的,后面会讲到。
-
命令行(QuickEexec):提供了很多快捷命令方式,比如过滤(标记)出响应体大于指定字节的请求,就可以在命令行中输入
>100
然后回车,这是过滤响应体大于100字节的请求。更多参见官网
我们无需记住所有的选项,只需要记得一些常用的用法即可。
会话列表添加字段
在会话列表中,可以自定义的添加一些字段。
在会话列表的title,鼠标右键,选择Customize columns
。
然后选择合适想要添加的字段。
PS:这个用处不大。
那我们如何想要在这个会话列表中展示域名对应的IP该如何做呢?
- 菜单栏选择
Rules
中的Customize Rules
。
- 再打开的编辑器中:
- 第一步,
Ctrl + F
搜索static function Main()
。 - 第二步,如下图,将
FiddlerObject.UI.lvSessions.AddBoundColumn("ServerIP", 120, "X-HostIP");
填写进去,然后Ctrl + S
保存即可。
- 第一步,
FiddlerObject.UI.lvSessions.AddBoundColumn("ServerIP", 120, "X-HostIP");
// 注意, ServerIP 是在会话列表中显示的字段名,可以自定义
- 现在,在会话列表中就可以看到新增的一个字段了。
PS:拖动字段名字可以移动位置。
see also:https://blog.csdn.net/mlgglm/article/details/42678205
statistics选项卡:
- request count:请求数,表示该session总共发起来多少个请求
- Bytes sent:发送请求的字节数,包括请求头和请求体
- Bytes received:接收的字节数,包括响应头和响应体
- ClientConnected:客户端连接的时间
- ClientBeginRequest:客户端开始发送请求的时间
- GotRequestHeaders:获取请求头文件的时间
- ClientDoneRequest:客户端完成请求的时间
- Determine Gateway:确定网关使用的时间
- DNS Lookup:查找DNS使用的时间
- TCP/IP Connect:tcp/ip连接使用的时间
- HTTPS Handshake:HTTP握手使用的时间
- ServerConnected:服务连接发生的时间