Fiddler的简单使用
一、简介
1、简介
Fiddler是一个免费的Web调试代理,适用于任何浏览器,系统或平台。
2、特性
- 可定制的免费工具
可以使用FiddlerScript或任何.NET语言开发功能强大的扩展工具。
- Web会话操作
可以很简单的编辑Web会话:通过设置断点暂停会话处理(请求发送),而且可以修改请求/响应(可用于安全测试)。
- 性能测试
使用Fiddler可以一目了然地看到整个HTTP请求的所有数据、缓存和压缩等;也可以使用自定义规则标记例如”大于25kb未压缩的响应”来处理性能瓶颈。
- 安全测试
使用Fiddler可以修改Web应用程序请求、解密HTTPS请求;也可以通过配置来解密所有请求(traffic)或只解密特定的会话。
- HTTP/HTTPS流量记录
使用Fiddler可以记录计算机与Internet之间的所有HTTP(S)请求。
- Web调试
可以使用Fiddler来调试来自任何设备(PC、移动设备等)的请求,以确保在客户端和服务器之间传输合适的cookies、headers和cache。
二、配置
1、代理端口
通过Tools -- Options...
打开配置窗口,在Connections页签中可以设置代理端口:
2、配置Host
通过Tools -- HOSTS...
打开Host配置窗口,在文本区域中配置Host映射;配置方法与系统Host配置一致,只是此处配置仅在Fiddler工作时有效。
三、Fiddler功能简介
1、工具栏
- 添加注释
可以给选中的请求添加备注:
- 重发请求
将选中的请求重新发送,快捷键为R,Shift+Replay
可以重发指定次数的该请求:
- 移除会话
移除列表中全部会话或指定类型的会话,移除列表所有会话的快捷键为Ctrl+X
:
- 继续会话
继续当前被断点暂停的所有会话,如果只想继续单个会话需要先选中会话同时按Shift键:
- 切换工作模式
使用Stream按钮可以切换Fiddler的工作模式:流模式或缓冲模式,默认为缓冲模式。
流模式:实时将服务器数据返回到客户端;
缓冲模式:等待请求的所有数据准备好之后才将数据返回到客户端。
- 解码
使用Decode按钮可以决定是否开启解码功能,如果开启则会将所有请求解压以便查看。
- 设置保持会话
设置Fiddler保持会话的最大个数。
- 设置捕获请求的进程
可以使用此功能来指定Fiddler只捕获某个进程的请求,右键点击此按钮可以去掉过滤。
- 查找会话(请求)
可以在会话列表中查找指定的会话,并按指定的颜色高亮显示:
- 保存会话
使用Save按钮可以将当前会话保存为.saz
文件,之后可通过File
– Load Archive...
来加载保存的会话。
- 截屏与计时
截屏默认有5秒倒计时,同时按Shift键可立即截屏。
左键点击计时可控制计时的开时与结束,右键重置。
- 打开浏览器
使用指定的浏览器打开选中的请求,如果没有选中则只打开浏览器:
- 文本编码/解码
可以使用Fiddler的TextWizard工具对文本按指定的格式编码或解码:
- 分离详情视图
可以点击Tearoff按钮将详细信息视图以浮动窗口的形式展现:
2、状态栏
- 控制台
可以在控制台中执行类似cls
(清空列表)、help
(帮助)的命令:
- 是否捕获请求
点击可切换控制Fiddler是否捕获请求:
- 过滤会话
过滤会话列表中的请求:
- 请求断点
可以通过点击此处来设置发送请求前与响应前的断点。
- 选中请求/请求总数与URL
3、详情面板
- 数据统计
可以通过数据统计来分析请求的性能。
- 检查分析
可以通过Inspectors视图看到请求的Request及Response的详细信息。
- 自动响应
可以修改指定请求的响应,此功能可以用于调试修复线上的BUG:例如调试找到问题原因后,在AutoResponder中添加规则,将线上的某个JS文件用本地修改之后的文件替换,然后清缓存,此时浏览器会加载替换后的JS文件,之后即可在浏览器中验证。
选中请求后添加规则,在Rule Editor的第二个下拉框中选Find a file…:
修改文件内容:
重新刷新浏览器:
也可以直接使用Fiddler提供的响应,例如:404、502等。
- Web接口调试
可以在Composer视图下编辑请求方式及参数等,点击Execute发送请求;也可以直接在左侧会话例表中拖一个请求到Composer中,基于此请求做修改。
如果是POST请求,则需将请求参数写在Request Body中。
- 时间线
可选中一个或多个请求在Timeline视图中查看整个请求的时间,一般在性能分析时使用。
- Fiddler脚本
使用FiddlerScript可以增强Fiddler的功能,例如通过脚本来实现网络限速:
在OnBeforeRequest方法中增加oSession["request-trickle-delay"]="3000";
来实现将请求延迟3秒发送:
也可以在OnBeforeRequest方法中增加oSession["response-trickle-delay"]="3000";
将响应延迟3秒。