Fiddler PowerToy-第一部分:HTTP 调试
作者:Eric Lawrence
Microsoft Corporation
January2005
软件要求:
Microsoft Internet Explorer
Microsoft .NET Framework
Microsoft Fiddler PowerToy
概述:本文将介绍您在开发和测web应用程序和客户端时如何去使用Microsoft Fiddler HTTP调试器。
内容:
Fiddler简介
开始Fiddler
使用fiddler
使用fiddler进行性能测试
使用fiddler测试
扩展Fiddler
总结
简介
您对IE怎么与您的web应用程序通信感到疑惑吗?当想去跟踪它们怎么通信,您遇到困难吗?您对cookie的发送、网页下载的缓存内容感到好奇吗?
Fiddler能帮助我们回答象上面这样的问题更多的问题。Fiddler是一种可以记录您电脑和internet之间的http通信的http调试代理。Fiddler允许您察看全部的http通信,设置断点和篡改进出的数据。Fiddler比NetMon和其他网络调试器更容易使用。
Fiddler含有一个简单而且强大的基于Microsoft Jscript.NET脚本事件的子系统,该子系统灵活性高,能够支持大批量的http调试任务。
开始Fiddler
安装
Fiddler要求windows2000及更高版本操作系统,大于10M的磁盘空间
首先确定您已经安转了.net framework version 1.1
下载从http://www.fiddlertool.com中下载fiddler
成功安装后,您可以在IE工具栏中找到 图标
如果不能找到图标,可以右键IE工具栏并选择“自定义”,您也可以通过开始菜单打开它
运行fiddler
启动fiddler后,fiddler将自动注册为Microsoft Windows Internet Services(WinInet)代理,HTTP层将被IE、microsoft office等微软其他产品所使用。您可以通过查看ProxySettings对话框来检查fiddle是否正确截取请求。在IE中”工具”——“internet选项”——“连接”——“局域网(LAN)设置”——“高级”可以打开 ProxySettings对话框
图1 :IE的ProxySettings对话框
作为系统代理,在到达目标服务器之前,所有来自WinInet的HTTP请求都必须流经Fiddler。同样,所有返回给客户端程序的HTTP 响应也得流经Fiddler。
图2 :HTTP通信流图
在关闭fiddler后,它将自动注销对系统的代理。
使用Fiddler
界面预览
Fiddler的操作界面主要包括一个http会话列表和三个主要用来显示所选会话的相关信息的页签。
图3:Fiddler用户使用界面
上图中左边是一个HTTP会话列表
右边是几个页签,常用的三个页签如下:
(performance)Statistics:显示所选会话的统计信息
(session)Inspector:允许您查看和修改请求和响应
Request builder:允许您手动更改一个HTTP请求
使用fiddler进行性能测试
HTTP统计视图
通过陈列出所有的HTTP通信量,Fiddler可以很容易的向您展示哪些文件生成了您当前请求的页面。使用Statistics页签,用户可以通过选择多个会话来得来这几个会话的总的信息统计,比如多个请求和传输的字节数。
图4 :statistics视图
另外,通过在会话列表中显示HTTP头信息,用户可以查看页面是否丢失了允许客户端或代理缓存的HTTP Expiration头信息。如果一个响应不包含Expires或缓存控制头信息,这个响应也许不能被客户端缓存。
图5:HTTP Expiration列
使用Fiddler进行调试
对于HTTP的请求和响应,Fiddler支持断点调试.当到达调试位置时或者是HTTP请求或响应匹配我们制定的调试目的的时候,Fiddler能够暂停HTTP通信并且允许用户编辑。Fiddler的这项功能对于安全测试和一般性的功能测试是很有用的,因为请求或者相应的代码路径都能够被使用。
图6:会话的Inspector检查视图
用户可以在Request Builder页签中手动添加一个HTTP请求,也可以从会话列表中拖动一个会话到Request Builder页签中,以便再次执行请求。
扩展Fiddler
使用.net framework的Fiddler是可扩展的。两种主要的扩展机制是:用户规则和Inspectors
使用脚本规则扩展Fiddler
Fiddler支持允许用户能够自动修改HTTP请求和响应的Jscript.NET事件处理引擎。该引擎能够在用户界面中修改会话的可视化外观,来使错误更见显眼或者完全从列表中移除用户不感兴趣的会话
下面的示例代码展示,当COOKIES被加载的时候,使UI变成紫红色。
static function OnBeforeRequest(oSession:Fiddler.Session)
{
if (oSession.oRequest.headers.Exists("Cookie")){
oSession["ui-color"] = "purple";
oSession["ui-bold"] = "cookie";
}
}
可以通过打开Fiddler,选择”Rules”——“Customize Rules…”,将打开一个文件文件,可以在这个文本文件中修改代码来定制用户想要的UI设置。
通过增加Inspectors来扩展Fiddler
用户可以添加用任何.net语言编写的Inspector对象。RequestInspectors和ResponseInspectors提供一个格式特定并且不是很专业的HTTP请求和响应试图
Inspectors可以使只读[RO]或者是可读写[RW]的。如果是可读写的,则可以在服务端或客户段接收到HTTP请求/相应时,修改它。
默认情况下,Fiddler提供下列的Inspectors:
Request Inspectors
[RW]Headers-显示请求的头信息和状态信息
[RW]TextView-在一个文本框中显示请求体
[RW]HexView-在一个十六进制视图中显示请求体
[RO]XML-按照xml dom 树形式显示请求体
Response Inspectors
[RW]Transformer-移除GZip、DEFLATE和CHUNKED编码进行简单的调试
[RW]Headers-显示响应的头信息和状态信息
[RW]TextView-在一个文本框中显示响应体
[RW]HexView-在一个十六进制视图中显示响应体
[RO]ImageView-已图片的形式显示响应体,支持所有.net图片格式
[RO]XML-按照xml dom 树形式显示响应体
[RO]Privacy—如果P3P语法存在,则在响应的头信息中说明P3P
总结
我们已经大致了解下了Fiddler.对此,您应该知道怎样去安装Fiddler,怎样去查看一个HTTP会话集的统计信息和怎样去查看HTTP会话原始的通信。
下一部分,我们将使用Fiddler高级功能来调试客户端/服务端怎么相互通信
Eric Lawrence 是IE团队的一个项目经理。在进入微软之前,Eric在dot-com担任web开发人员。