为什么要选择 Fiddler 2

作为 RIA 工程师，在日常工作中调试各种页面内 BUG 已经是家常便饭，随着 AJAX 技术的盛行，现在出现了众多值得称道调试的工具：

  1. 分析 DOM 结构、CSS 及 Javascript 调试：FireBug(Firefox)，IE WebDeveloper(IE)、Microsoft Script Editor 等
  2. 网络抓包工具：HttpWacth(强力推荐，V6.0+ 已经同时支持 IE 和 Firefox)、HttpFox(Firefox)，Http Analyzer V4 等

有了这些工具，我们能够方便的调试代码，但是，有时候我们仍然会略感不足，想一下，在你的工作中有没有出现这样的情形：

  1. 由于开发周期短，页面构建完成后，如果等后台开发工程师套好页面且完成各接口的开发，我们再启动工作，那么项目必然无法如期完成。就算他们加班加点做完，谁敢保证不是问题一大堆。

    为了解决这个问题，很多时候，我采取的办法是，先约定好接口（包括接口地址、输入参数和输出格式），然后自己在本地装个 Apache，搭建一个 Demo 页进行开发。

    Demo 使用静态页面即可。接口当然也可以写死输出格式，比如 PHP 里一个 echo 即可，但根据不同的输出格式，每次都得修改一下模拟的接口并传到服务器，虽然不难但是很繁琐，经常让我火大。如果不是不得已，谁会选择这样做呢？

  2. 项目后期测试期间或者上线后，必然会有很多离奇，甚至可以说是灵异的 BUG，是开发期间在无法预期的。有的 BUG 需要后台开发工程师配合，但我们并不肯定那样改就一定能解决问题，对于配合熟练的团队或者小的团队来说，这可能不是太麻烦。反之，可能是一件很恐怖的事情，沟通所带来的成本并不像你想象的那么简单。

    如果这时候我们能够无需太多额外工作，就可以修改 HTML 页面或者接口，用最真实的环境来调试就好了。

HttpWatch 虽然可以抓到每个 HTTP 请求的全部数据，但无法修改返回的数据；Firebug 可以修改 HTML/CSS，但是一刷新就没了，尤其是调试接口，无论返回数据对错，Firebug 也无可奈何。而 Fiddler2 正好弥补了这个不足：

关于 Fiddler

Fiddler 是一个 HTTP 调试代理，它能够记录所有的你电脑和互联网之间的 HTTP 通讯，Fiddler 也可以让你检查所有的 HTTP 通讯，设置断点，以及修改所有的“进出”的数据（指 Cookie/HTML/JS/CSS 等文件，这些都可以让任意修改）。

Fiddler 作为系统代理，当启用 Fiddler 时，IE 的 PROXY 设定会变成 127.0.0.1:8888。所有的来自微软互联网服务（WinInet）的 HTTP 请求在到达目标 Web 服务器之前都会经过 Fiddler，同样的，所有的 HTTP 响应都会在返回客户端浏览器之前经过 Fiddler。

下面是 Fiddler 的工作原理示意图：

当你启动了 Fiddler，程序将会把自己作为一个 WinInet 的系统代理中去。你可以通过检查 IE 的代理设置对话框来验证 Fiddler 是正确地截取了 Web 请求。查看方法：点击 IE Internet 选项，连接，局域网设置，最后点击高级。

Fiddler 集成了一个强大的事件驱动脚本系统，让你能使用任何 .Net 语言来扩展它。


安装运行 Fiddler

安装 Fiddler

下载地址

请将所需版本的文件右键另存到本地：

Fiddler 2.2.2.0 正式版 (约 500K)

Fiddler 2.x Beta 版

Fiddler 2 扩展列表

Fiddler 1.3 版 (仅需 .Net Framework v1.0)

系统需求

  1. Windows 2000/XP/2003/Vista，需要安装 Microsoft .NET Framework v2.0 或更高版本
  2. 10 MB 以上磁盘剩余空间
  3. 主频 800mhz 处理器 (推荐 2.4G 及以上)
  4. 128 MB 内存 (推荐 512MB 以上)

变更历史

Fiddler 2 变更历史

Fiddler 1 变更历史

安装过程

  1. 双击 Fiddler2 安装程序图标进行安装

  2. 授权协议

  3. 选择安装目录

  4. 完成安装

运行 Fiddler

  1. 开始菜单 -> 程序，双击 Fiddler 图标

  2. IE 工具栏上点击 Fiddler 图标 [image] （如果没有，请右键点击 IE 工具栏，选择自定义命令栏 -> 添加删除图标，来增加该按钮）

  3. Firefox 下配置 Fiddler 支持

    Firefox 需要手动设置代理，才能支持 Fiddler 支持，配置方式——主菜单：工具 -> 选项 -> 高级 -> 网络 -> 连接 -> 设置...，选择手动设置代理，设置 HTTP 代理为：127.0.0.1，端口：8888，如图：

    如果在 Firefox 下无需再使用 Fiddler，需要将代理配置修改为默认值，否则关闭 Fiddler 后将无法正常访问网络。

    如果觉得每次修改配置麻烦，可以使用 Firefox 扩展：FoxyProxy


Fiddler2 主界面

  • 菜单栏
  • 工具栏
  • Web Sessions 面板
  • 主页签

    · Statistics 页签

    · Inspectors 页签

    · AutoResponder 页签

    · Request Builder 页签

    · Filters 页签

    · Timeline 页签

  • QuickExec
  • 状态栏
  • Fiddler 选项


Fiddler2 主菜单

六个主菜单分别是：

文件(File)

  1. Capture Traffic ——启用捕获功能，快捷键 F12

    此功能的开启/关闭状态，程序安装后默认是开启的。可以在 Fiddler 底部状态栏最左侧看到： （开启状态）、 [image] （关闭状态）

    也可以通过鼠标点击状态栏该图标来进行切换。

  2. Load Archive... ——载入本地保存的 Session 压缩包
  3. Save ——保存
    • All Sessions... ——保存捕获到的全部 Session 到压缩包
    • Selected Sessions

      · in ArchiveZip... ——保存当前选定的 Session 为压缩包

      · in Visual Studio Web Test... ——保存当前选定的 Session 为 Visual Studio Web Test

      · in Text... ——保存当前选定的 Session为文本

      · in Text (Headers only)... ——保存当前选定的 Session 为文本（仅 Header）

    • Request

      · Entire Request... ——保存当前选定的 Session 整个请求（包括 Header）

      · Request Body... ——保存当前选定的 Session 请求的内容（不包括 Header）

    • Response

      · Entire Response... ——保存当前选定的 Session 整个响应（包括 Header）

      · Response Body... ——保存当前选定的 Session 响应的内容（不包括 Header）

  4. Properties ——当前选择 Session 的属性

    包括 Session 状态、响应包的大小，客户端服务器信息（如进程、端口、传输字节数、TTLB、客户端IP、服务器IP、TTFB等），请求各环节的时间情况、WinINET 缓存信息等。如下图：

    TTFB (Time-to-First-Byte) 是指：从第一个请求发出到测试工具接收到服务器应答数据的第一个字节之间的平均时间。

    TTLB (Time-to-Last-Byte) 是指：从第一个请求发出到测试工具接收到服务器应答数据的最后一个字节之间的平均时间。

  5. Exit ——退出 Fiddler

编辑(Edit)

  1. Copy ——复制
    • Session ——复制整个 Session 到剪贴板，快捷键 Ctrl + C
    • Just Url ——复制 Session 的 URL 到剪贴板，快捷键 Ctrl + U
    • Headers Only ——复制 Session 的 Header 到剪贴板，快捷键 Ctrl + Shift + C
    • Full Summary ——复制 Session 全部摘要到剪贴板
    • Terse Summary ——复制 Session 简单摘要到剪贴板，快捷键 Ctrl + Shift + T
  2. Remove ——移除
    • Selected Sessions ——移除所选的 Session，快捷键 Delete
    • Unselected Sessions ——移除未选择的 Session，快捷键 Shift + Delete
    • All Sessions ——移除所有 Session，快捷键 Ctrl + X
  3. Select All ——选择所有 Session
  4. Mark
    • Red ——将选择的 Session 标为红色粗体，快捷键 Ctrl + 1
    • Blue ——将选择的 Session 标为蓝色粗体，快捷键 Ctrl + 2
    • Gold ——将选择的 Session 标为金色粗体，快捷键 Ctrl + 3
    • Green ——将选择的 Session 标为绿色粗体，快捷键 Ctrl + 4
    • Orange ——将选择的 Session 标为橙色粗体，快捷键 Ctrl + 5
    • Purple ——将选择的 Session 标为紫色粗体，快捷键 Ctrl + 6
    • Unmark ——去除颜色加粗标记，快捷键 Ctrl + 0
  5. Find Session... ——退出 Fiddler

规则(Rules)

  1. Hide Image Requests ——隐藏图片请求
  2. Hide HTTPS CONNECTs ——隐藏 HTTPS 连接
  3. Automatic Breakpoints ——自动设置断点
    • Before Requests ——在请求前设置断点，快捷键 F11
    • After Response ——在响应后设置断点，快捷键 Alt + F11
    • Disabled ——不自动设置断点，快捷键 Shift + F11
    • Ignore Images ——自动设置断点时忽略图片
  4. Customize Rules... ——自定义规则
  5. Require Proxy Authentication ——需要代理密码验证
  6. Apply GZIP Encoding ——应用 GZIP 压缩
  7. Remove All Encoding ——移除所有编码
  8. Hide 304s ——隐藏所有状态为 304(无变更) 的请求
  9. Request Japanese Content ——请求日文内容
  10. User-Agents ——选择用户 Web 客户端代理类型，包括了目前主流的浏览器
  11. Performance ——性能
    • Simulate Modem speeds ——模拟调制解调器速度
    • Disable Caching ——禁止缓存
    • Show Time-to-Last-Byte ——显示 TTLB
    • Show Response Timestamp ——显示响应时间戳

工具(Tools)

  1. Fiddler Options... ——Fiddler 选项
  2. WinINET Options... ——IE 浏览器 WinINET 选项
  3. Clear WinINET Cache ——清除 WinINET 缓存，快捷键 Ctrl + Shift + X
  4. Clear WinINET Cookies ——清除 WinINET 缓存
  5. Text Encode/Decode... ——文本编码/解码，快捷键 Ctrl + E

    可以进行文本的 Base64 编码/解码、UrlEnccode/UrlDecode、十六进制编码、转 JS 字符串、HTML 编码/解码、UTF-7 编码/解码

  6. Compare Sessions ——使用 Microsoft Windiff.exe 对比选择的 Session，快捷键 Ctrl + W
  7. Reset Script ——重置脚本
  8. Sandbox ——沙箱 http://www.fiddler2.com/sandbox/
  9. View IE Cache ——查看 IE 缓存文件夹

视图(View)

  1. Squish Session List ——收缩/展开 Session 列表，快捷键 F6

    也可以使用 Web Session 面板的按钮，详见 Web Sessions 面板介绍

  2. Stacked Layout ——切换面板布局
  3. Statistics ——Statistics 页签，快捷键 F7
  4. Inspector ——Inspector 页签，快捷键 F8
  5. Builder ——Request Builder 页签，快捷键 F9
  6. Minimize to Tray ——缩小为任务栏图标，快捷键 Ctrl + M
  7. Stay on Top ——保持在其他窗口前端
  8. AutoScroll Session List ——自动滚动 Session 列表
  9. Refresh ——刷新，快捷键 F5

帮助(Help)

  1. Fiddler Help ——Fiddler 在线帮助
  2. Fiddler Community Discussions ——Fiddler 社区在线讨论
  3. HTTP References ——在线 HTTP 参考，包括各种 HTTP 响应状态码
  4. Check for Updates... ——检查更新
  5. Send Feedback... ——发送回馈
  6. About Fiddler ——关于 Fiddler


Fiddler2 工具栏

完整工具栏如下图：

如果工具栏被关闭，可以通过如下方式开启：

主菜单 Tools -> Fiddler Options... -> Appearance -> Show Fiddler Toolbar，打勾确认即可。

下面逐一讲解各按钮的用途：

  1. Comment ——给选定的 Session 增加一个备注，添加后会显示在 Web Sessions 面板的 Comments 字段中
  2. Reissue ——重新请求选定的 Session
  3. Remove
    • All ——移除所有 Session，快捷键 Ctrl + X
    • Remove Images ——移除所有图片请求 Session
    • Remove CONNECTs ——移除所有 HTTPS 请求 Session
    • Remove non-200s ——移除所有 HTTP 状态不是 200 的 Session
  4. Resume All ——继续所有此刻在断点被停止的 Session
  5. Streaming ——开启流模式（Streaming Mode），此模式开启的时候，所有断点都被忽略，所有 HTTP 响应都流化。

    关于流模式，请点击这里。

  6. Find ——按条件查找 Session

  7. Save ——保存选定的 Session
  8. Lunch IE ——在 IE 中加载选定的 Session URL，如果没选择，就打开 about:blank
  9. Clear Cache ——清空缓存
  10. Encoder ——文本编码/解码，与菜单 Tools -> Text Encode/Decode... 相同，快捷键 Ctrl + E
  11. Tearoff ——将页签浮动
  12. MSDN Search ——在 MSDN 上查找指定关键字
  13. Help ——打开在线帮助
  14. × ——隐藏工具栏


Fiddler2 Web Session 面板

完整工具栏如下图：

此列表显示所有 HTTP 请求的相关信息，从左到右各列分别代表：

  1. [#] —— HTTP Request 的顺序，从 1 开始，按照页面加载请求的顺序递增。
  2. [Result] —— HTTP 响应的状态，可以参考这里。
  3. [Protocol] —— 请求使用的协议（如 HTTP/HTTPS/FTP）
  4. [Host] —— 请求地址的域名
  5. [URL] —— 请求的服务器路径和文件名，也包括 GET 参数
  6. [BODY] —— 请求的大小，以 byte 为单位
  7. [Caching] —— 请求的缓存过期时间或缓存控制 header 等值
  8. [Content-Type] —— 请求响应的类型 (Content-Type)
  9. [Process] —— 发出此请求的 Windows 进程及进程 ID
  10. [Comments] —— 用户通过脚本或者右键菜单给此 session 增加的备注
  11. [Custom] —— 用户可以通过脚本设置的自定义值

Session 列表使用不同的颜色表示不同的 HTTP 状态（红色表示错误，黄色表示验证要求(authentication demands)），通讯类型（灰色表示 HTTPS 连接），响应类型（紫色表示 CSS，蓝色表示 HTML，绿色表示脚本，灰色表示图片）。

你可使用 FiddlerScript 来自定义 session 请求的文本颜色。

[#] 列中使用不同的图标表示不同响应类型：

  • —— 请求已被发送到服务器
  • —— 从服务器下载响应结果
  • —— 请求在断点处被暂停
  • —— 响应在断点处被暂停
  • —— 请求使用 HTTP HEAD 方法，响应没有内容
  • —— 请求使用 HTTP CONNECT 方法，使用 HTTPS 协议建立连接通道
  • —— 响应是 HTML 格式
  • —— 响应是图片格式
  • —— 响应是脚本文件
  • —— 响应是 CSS 文件
  • —— 响应是 XML 文件
  • —— 普通响应成功
  • —— 响应是 HTTP 300/301/302/303/307 转向
  • —— 响应是 HTTP 304 (无变更)，使用缓存文件
  • —— 响应需要客户端验证
  • —— 响应是服务器错误
  • —— 请求被客户端、Fiddler 或者服务器终止 (Aborted)

Web Sessions 右键菜单

下列菜单项已经在主菜单中有介绍：[View]AutoScroll Session List、[Edit]Copy、[Edit]Save、[Edit]Remove、[Edit]Mark、[Tools]Compare、[File]Properties，这里不再复述。

  1. Decode Selected Sessions —— 如果请求使用了 GZIP 压缩，就解码
  2. Comment... —— 给 Session 增加备注
  3. Replay
    • Reissue Requests —— 重新请求此地址
    • Reissue Unconditionally —— 无条件重新请求此地址
    • Revisit in IE —— 在 IE 中请求此地址，相当于工具栏的 Launch IE
  4. Select
    • Parent Request —— 选择当前 session 的父请求，比如图片的父请求就是嵌入它的页面
    • Child Requests —— 选择当前 session 的子请求，比如当前页面的子请求是页面内所有脚本、CSS、图片等
    • Duplicate Requests —— 选择全部相同地址的请求
  5. Clone Response —— 克隆 Session 响应
  6. Unlock For Editing —— 解锁当前 session 以编辑，只针对文本资源，比如 HTML/JS/CSS

Squish Session List

Web Sessions 面板右上角的按钮用于展开收缩 Web Session 面板，相当于主菜单 View -> Squish Session List

收起

展开


Fiddler2 主页签

  • Statistics 页签
  • Inspectors 页签
  • AutoResponder 页签
  • Request Builder 页签
  • Filters 页签
  • Timeline 页签


Fiddler2 Statistics 页签

完整页签如下图：

Statistics 页签显示当前用户选择的 Sessions 的汇总信息，包括：选择的 Sessions 总数、发送字节数、接收字节数、响应类型的汇总表、世界各地通过不同请求方式所需的时间等。

Statistics 页签底部图表

Show Chart 可以将汇总结果显示为一个饼状图，按照响应类型，在饼图中显示不同的比例和不同的色块，见上图。

Copy this chart 可以将该饼图复制到剪贴板，粘贴到图形处理软件或者 WORD 中。

Collapse Chart 收起饼图展示。


Fiddler2 Inspectors 页签

完整页签如下图：

Inspectors 页签允许你用多种不同格式查看每个请求和响应的内容。JPG 格式使用 ImageView 就可以看到图片，HTML/JS/CSS 使用 TextView 可以看到响应的内容。

Inspectors 页签分为上下两部分，上部显示的是发出的请求相关信息，下部显示的是接收的响应相关信息。

请求 (Request) 部分详解

  1. Headers —— 显示客户端发送到服务器的 HTTP 请求的 header，显示为一个分级视图，包含了 Web 客户端信息、Cookie、传输状态等
  2. Textview —— 显示 POST 请求的 body 部分为文本
  3. WebForms —— 显示请求的 GET 参数 和 POST body 内容，特别说明，这里 body 应该是 application/x-www-form-urlen-coded 格式
  4. HexView —— 用十六进制数据显示请求
  5. Auth —— 显示 header 中的 Proxy-Authorization 和 Authorization 信息
  6. Raw —— 将整个请求显示为纯文本
  7. XML —— 如果请求的 body 是 XML 格式，就是用分级的 XML 树来显示它

响应 (Response) 部分详解

  1. Transformer —— 显示响应的编码信息

    顶部的黄色提示文字表示，此请求为了提高性能，而做了编码或者压缩（例如 GZIP），需要转换后才能在 TextView 里正常浏览。点击该区域或者下面的 Remove HTTP Chunked Encoding 按钮，都能执行转换或者解压缩。如果该请求没编码/压缩是看不见此提示的。

    HTTP Compression 显示当前请求使用的编码方式

    • No Compression —— 无压缩
    • GZIP Encoding —— GZIP 压缩
    • DEFLATE Encoding —— DEFLATE 压缩
    • BZIP2 Encoding —— BZIP2 压缩

    对未编码压缩的请求，可以选择不同的模式，看 Entity Size 里显示压缩后有多大。从而根据这个决定是否需要采用这样的压缩技术来提升网站的性能。

  2. Headers —— 用分级视图显示响应的 header
  3. TextView —— 使用文本显示相应的 body
  4. ImageVies —— 如果请求是图片资源，显示响应的图片。

    左侧灰色区域会显示图片的大小、宽高、文件格式等信息，在下方还可以选择缩放模式：自动缩放、缩放以适应显示区域大小、无缩放

  5. HexView —— 用十六进制数据显示响应
  6. WebView —— 响应在 Web 浏览器中的预览效果
  7. Auth —— 显示响应 header 中的 Proxy-Authorization 和 Authorization 信息
  8. Caching —— 显示此请求的缓存信息
  9. Privacy —— 显示此请求的私密 (P3P) 信息
  10. Raw —— 将整个响应显示为纯文本
  11. XML —— 如果响应的 body 是 XML 格式，就是用分级的 XML 树来显示它


Fiddler2 AutoResponder 页签

完整页签如下图：

此功能启用后，可以将某一请求的响应结果替换成指定的资源，可以是本地文件，也可以是 Fiddler 内置的各种 HTTP 响应。主要用于临时拦截某一请求的响应，而无需修改服务器上的环境和代码，保证在最真实的环境中进行调试，也无需在 BUG 查找的时候就寻求相关部门的配合。

· 启用该功能，请将 Enable automatic responses 打勾。

· Permit passthrough for unmatched requests 表示允许未匹配到的请求正常响应。应该打勾才能让其他的请求继续；否则其他未匹配到的请求都会以 404 状态返回。

· 页签中间是一个列表，显示当前创建的匹配规则，左侧是匹配的条件，右侧是响应的结果。即：如果请求的地址包含左侧的字符串，那么就用右边设定的资源来替换来自服务器的响应。用 + 和 - 两个按键可以调整当前选择规则在列表中的位置。

· 页签底部是一个规则编辑器，可以进行编辑当前用户选择的匹配规则、保存编辑、删除此匹配规则等操作。

第一个 Combox 是匹配的条件，可以自行输入字符串，也可以选择 Fiddler 内置的三个正则（都是匹配图片的，没什么用）。Fiddler 支持几种匹配模式：

  1. String Literals —— 字符匹配

    这种模式将匹配指定的字符串，不存在大小写敏感。范例：

    *
    通配符，匹配任何地址，如： http://www.example.com/Path1/query=example
    EXAMPLE
    匹配 http://www.example.com/Path1/query=example
    path1/
    匹配 http://www.example.com/Path1/query=example
    query
    匹配 http://www.example.com/Path1/q=Query
  2. Exact Match —— 精确匹配

    这种模式一 EXACT: 开头，将严格匹配字符串，包括大小写。范例：

    EXACT:http://www.example.com/path
      匹配 http://www.example.com/path
    不匹配 http://www.example.com/Path（大小写不符）
    不匹配 http://www.example.com/path/q=Query（有多余字符串）
  3. Regular Expressions —— 正则表达式

    这种模式一 regex: 开头，使用正则表达式来匹配 session 的 URL。范例：

    regex:.*
    通配符，匹配任何地址，如 http://www.example.com/Path1/query=example

    regex:.*\.jpg —— 匹配包含 .JPG 的 URL
    匹配 http://www.example.com/Path1/query=foo.jpg&bar
    匹配 http://www.example.com/Path1/query=example.jpg

    regex:.*\.jpg$ —— 匹配 .jpg 结束的 URL
    不匹配 http://www.example.com/Path1/query=foo.jpg&bar（不是 .jpg 结尾）
      匹配 http://www.example.com/Path1/query=example.jpg

    regex:.*\.(jpg|gif|bmp)$ —— 匹配 .jpg 或 .gif 或 .bmp 结束的 URL
    不匹配 http://www.example.com/Path1/query=foo.bmp&bar（不是 .bmp 结尾）
      匹配 http://www.example.com/Path1/query=example.gif
    不匹配 http://www.example.com/Path1/query=example.Gif （是 .gif 结尾，但大小写不匹配）
      匹配 http://www.example.com/Path1/query=example.bmp

    regex:(?insx).*\.(jpg|gif|bmp)$ —— 匹配 .jpg 或 .gif 或 .bmp 结束的 URL，忽略大小写
    不匹配 http://www.example.com/Path1/query=foo.bmp&bar（不是 .bmp 结尾）
      匹配 http://www.example.com/Path1/query=example.gif
      匹配 http://www.example.com/Path1/query=example.Gif
      匹配 http://www.example.com/Path1/query=example.bmp

最后一个正则中的 ?insx 是正则表达式的语法，其中各字母的含义如下（详见：正则表达式选项）：

  • i —— 指定不区分大小写的匹配
  • m —— 指定多行模式。更改 ^ 和 $ 的含义，以使它们分别与任何行的开头和结尾匹配，而不只是与整个字符串的开头和结尾匹配。
  • n —— 指定唯一有效的捕获是显式命名或编号的 (?<name>…) 形式的组。这允许圆括号充当非捕获组，从而避免了由 (?:…) 导致的语法上的笨拙。
  • s —— 指定单行模式。更改句点字符 (.) 的含义，以使它与每个字符（而不是除 \n 之外的所有字符）匹配。
  • x —— 指定从模式中排除非转义空白并启用数字符号 (#) 后面的注释。（有关转义空白字符的列表，请参见字符转义。）请注意，空白永远不会从字符类中消除。

第二个 Combox 是响应的结果，可以选择：Fiddler 内置的 HTTP 200/204/302/303/304/307/401/403/404/407/502 等各种响应范例、*bpu 和 *bpafter（ 表示在此中断，关于 bpu 和 bpfater 见 QuickExec 命令参考）、本地文件 (Find a file...)。

Save 按钮是保存对此匹配规则的修改，Remove 按钮是删除此匹配规则。

增加匹配规则

  1. 点击 Add... 按钮，新增一条规则。

    此时会激活页签底部的 Rule Editor。如果你在 Web Sessions 面板里选择了一个 Session，则匹配规则是该 Session 的 URL，否则是 StringtoMatch[数字]。然后可以使用 Rule Editor 编辑它。

  2. 点击 Import... 按钮，导入在 Web Sessions 中保存下来的压缩包 (*.saz)。
  3. 在 Web Sessions 面板中选择你要捕获的请求，直接拖拽到 AutoResponder 的列表中。


Fiddler2 Request Builder 页签

完整页签如下图：

此功能可以用于手动发出一个 HTTP 请求（包含所有的 header 和请求 body），并分析响应结果。可以用来调试不同 Request 参数时响应是否正常。

· 将 Inspect Session 打勾后，就能发出请求，并自动切换到 Inspectors 页签查看响应结果。

· Float Window 可以将此页签浮动，剥离 Fiddler 主界面。

· 如果你要手动请求一个已经在 Web Sessions 面板中的请求，直接将它拖拽到 Request Builder 面板上，然后点击 Excute 即可；你也可以手动输入请求的全部信息。


Fiddler2 Filters 页签

Fiddler 的过滤器功能相当的强大，见下图：

下面我们一一加以说明：

  1. HOST —— HOST 过滤规则

    你可以在文本框中输入多个 HOST，多个之前用半角逗号或者回车分隔。

    • - No Host Filter - —— 无 HOST 过滤
    • Hide the following Hosts —— 隐藏如下 HOST
    • Show only the following Hosts —— 只显示如下 HOST
    • Flag the following Hosts —— 加粗显示如下 HOST
  2. Client Process —— 客户端进程过滤规则

    • Show only traffic from —— 你可以指定只捕获哪个 Windows 进程中的请求，右侧会列出当前所有的 Windows 进程
    • Show only Internet Explorer traffic —— 只显示 IE 发出的请求
    • Hide Windows RSS platform traffic —— 隐藏 Windows RSS 平台发出的请求
  3. Breakpoints —— 断点设置规则
    • Break request on HTTP POST —— 给所有 POST 请求设置断点
    • Break request on HTTP GET with QueryString —— 给所有带参数的 GET 请求设置断点
    • Break response on Content-Type —— 给特定的 Content-Type 设定断点
  4. Response Status Code —— 响应 HTTP 状态过滤规则
    • Hide success(202,204,206) —— 隐藏响应成功的 session (202,204,206)
    • Hide Authentication demands(401) —— 隐藏未经授权被拒绝的 session (401)
    • Hide redirects(300,301,302,303,307) —— 隐藏重定向的 session (300,301,302,303,307)
    • Hide Not Modified(304) —— 隐藏无变更的 session (304)
  5. Response Type and Size —— 响应类型和大小过滤规则

    • 设定响应类型过滤规则

      · Show all Content-Types —— 显示所有响应类型

      · Show only IMAGE/* —— 只显示图片

      · Show only HTML —— 只显示 HTML

      · Show only TEXT/CSS —— 只显示 CSS

      · Show only SCRIPTS —— 只显示脚本

      · Hide IMAGE/* —— 隐藏所有图片

    • Ignore smaller than ? KB —— 忽略小于指定大小的 session
    • Ignore larger than ? KB —— 忽略大于指定大小的 session
    • Block script files —— 阻止脚本文件，显示为 404
    • Block image files —— 阻止图片文件
    • Block SWF files —— 阻止 SWF 文件
    • Block CSS files —— 阻止 CSS 文件
  6. Request Headers —— 请求 header 过滤规则
    • Flag requests with header —— 标记带有特定 header 的请求
    • Delete request header —— 删除请求 header
    • Set request header —— 设置请求的 header
  7. Response Headers —— 响应 header 过滤规则
    • Flag responses that set cookies —— 标记会设置 cookie 的响应
    • Flag responses with header —— 标记带有特定 header 的响应
    • Delete responses header —— 删除响应 header
    • Set responses header —— 设置响应的 header
  8. Keep only the most recent ? sessions. —— 只保留最新的指定数量的 session


Fiddler2 Timeline 页签

完整页签如下图：

此列表显示在 Web Sessions 面板中选择的 session 请求到响应的时间表。横向是时间轴，以秒为单位；纵向是选择的 session 列表。

鼠标移到 Timeline 页签的某一 session 上，在 Timeline 页签底部会显示四个数据：

· Session 编号和 URL

· Session 的响应类型

· 发送的字节数

· 接收的字节数

关于请求的时间分析，HttpWatch 的时间线显得更为详尽和直观，不过它是收费的，且最新版本 6.0 + 也只支持 IE 和 Firefox。


Fiddler2 QuickExec 命令行

QuickExec 命令行如下图：

QuickExec 命令行允许你快速执行脚本命令，在 Fiddler 中使用快捷键 Alt + Q 可以快速将焦点设置到命令行。

如果当前在 Web Sessions 面板选择了一个 Session，可以使用快捷键 Ctrl + I 快速将 Session URL 直接插入到命令行当前光标处。

默认命令参考

以下列表中的命令只能确保在最新版本的 Fiddler 中才生效。

多数命令是存在本地 CustomRules.js 文件中，如果不是最新版 Fiddler，可能没有最新的命令。如果要得到最新的命令，要么删除你的 CustomRules.js，要么复制 SampleRules.js 的 ExecAction 到 CustomRules.js 中。

  1. ?sometext

    Fiddler 会高亮所有 URL 匹配问号后的字符的全部 session。按回车聚焦到匹配的 session 上。

    范例：

    ?searchtext
  2. >size

    选择响应尺寸大于指定大小的全部 session。按回车聚焦到匹配的 session 上。

    范例：

    >40000 （选择响应大于 40kb 的请求）
  3. <size

    选择响应尺寸大于指定大小的全部 session。按回车聚焦到匹配的 session 上。

    范例：

    <5k （选择响应小于 5kb 的请求）
  4. =status

    选择响应 HTTP 状态等于指定值的全部 session。按回车聚焦到匹配的 session 上。

    范例：

    =301 （选择 301 重定向的请求）
  5. @host

    选择包含指定 HOST 的全部 session。按回车聚焦到匹配的 session 上。

    范例：

    @msn.com （选择 www.msn.com、login.msn.com 等 session）
  6. bold sometext

    加粗显示 URL 包含指定字符的全部 session。

    范例：

    bold test.php （加粗显示 URL 中包含 test.php 的 Session

    bold （不带参数表示清空所有加粗显示的 Session）
  7. bpafter sometext

    中断 URL 包含指定字符的全部 session 响应。

    范例：

    bpafter test.php （中断 URL 中包含 test.php 的 Session

    bpafter （不带参数表示清空所有设置断点的 Session）
  8. bps

    中断 HTTP 响应状态为指定字符的全部 session 响应。

    范例：

    bps 404 （中断所有响应 404 的 Session

    bps （不带参数表示清空所有设置断点的 Session）
  9. bpv 或 bpm

    中断指定请求方式的全部 session 响应。

    范例：

    bpv POST （中断所有 POST 请求的 Session

    bpv （不带参数表示清空所有设置断点的 Session）
  10. bpu

    中断请求 URL 中包含指定字符的全部 session 响应。

    范例：

    bpu test.php （中断所有请求 URL 中包含指定字符的 Session

    bpu （不带参数表示清空所有设置断点的 Session）
  11. cls 或 clear

    清除所有 session

    范例：

    cls
  12. dump

    将所有 session 打包到 C 盘根目录下的一个 zip 压缩包中

    范例：

    dump
  13. g 或 go

    继续所有中断的 Session

    范例：

    g
  14. help

    用 IE 打开 QuickExec 在线帮助页

    范例：

    help
  15. hide

    将 Fiddler 隐藏到任务栏图标中

    范例：

    hide
  16. urlreplace

    将 URL 中的字符串替换成特定的字符串

    范例：

    urlreplace SeekStr ReplaceWithStr

    urlreplace （不带参数表示清空所有之前的设置）
  17. start

    将 Fiddler 为系统代理

    范例：

    start
  18. stop

    将 Fiddler 从系统代理注销

    范例：

    stop
  19. show

    将 Fiddler 从任务栏图标恢复为图形界面，此命令在命令行工具 ExecAction.exe 中使用

    范例：

    show
  20. slect

    选择响应类型 (Content-Type) 为指定字符的所有 session

    范例：

    slect image

    slect css

    select htm
  21. allbut 或 keeponly

    选择响应类型 (Content-Type) 不是指定字符的所有 session

    范例：

    allbut xml

    allbut java
  22. quit

    退出 Fiddler

    范例：

    quit

自定义命令

你可以通过编辑你的 FiddlerScript 来增加新命令。找到 OnExecAction 函数增加新命令。编辑方式：

  1. 主菜单 Rules -> Customize Rules...
  2. 安装插件 Syntax-Highlighting Addons（右键另存为），安装后会增加一个 FiddlerScript 页签，在这里可以直接编辑保存。

    如果安装了此插件，主菜单的菜单项也会使用 Fiddler 脚本编辑器打开。

    安装了此插件后，Inspectors 页签的响应部分也会增加一个 SyntaxView，用于高亮显示响应的body。

使用 ExecAction.exe 命令行工具

ExecAction.exe 是一个可以在批处理文件和单元测试中调用的命令行工具。它将命令行输入传递给 FiddlerScript 的 onExecAction 函数处理，跟在 Fiddler 的 QuickExec 命令行中一样。

ExecAction.exe 已经随 Fiddler 安装在 Fiddler 主程序同目录。

范例：

ExecAction SCRIPTPARAMETER

ExecAction "PARAM1 PARAM2"

ExecAction 执行后会把 %ERRORLEVEL% 设置为：

  1. 0 —— 如果成功
  2. 1 —— 如果参数数量不对（不是1）
  3. 2 —— 如果 Fiddler 窗口找不到


Fiddler2 状态栏

完整状态栏如下图：

此列表显示所有 HTTP 请求的相关信息，从左到右各列分别代表：

  1. 第一区块，显示的 Fiddler 是否处于捕捉状态， [image] （开启状态）、 [image] （关闭状态），可以用快捷键 F12 切换或者点击该区域。
  2. 第二区块，显示当前捕捉哪些进程的通讯。前提是被捕获的进程必须使用 HTTP 代理：127.0.0.1:8888
    • All Processes —— 捕获所有进程的请求
    • Web Browsers —— 捕获 Web 浏览器的请求，应该特指 IE
    • Non-Browser —— 捕获非 Web 浏览器的请求
    • Hide All —— 隐藏所有请求
  3. 第三区块，显示当前断点设置状态，通过鼠标点击切换。可以有三种：
    • —— 不设置断点
    • —— 所有请求在断点处被暂停
    • —— 所有响应在断点处被暂停
  4. 第四区块，显示当前共捕获了多少 session（如：300，表示共捕获了 300 个）。

    如果选择了 session，会显示共选择了多少 session 及 session 总数（如：10/300，表示当前选择 10 个 session，共 300 个 session）。

  5. 第五区块，描述当前状态。

    如果是刚打开 Fiddler，会显示什么时间加载了 CustomRules.js；如果选择了一个 Session，会显示该 Session 的 URL；如果在 QuickExec 命令行输入一个命令，就会显示命令相关信息。


Fiddler2 选项

Fiddler2 选项对话框，共有五个选项卡：

  1. General —— 常规

    此选项卡显示 Fiddler 的常规设置：

    • Check for updates on startup —— 程序启动时查找更新
    • Reuse connections to servers(improved performance) —— 重用到服务器的连接(提高性能)
    • Reuse client connections(improved performance) —— 重用客户端的连接(提高性能)
    • Show a message when HTTP protocol violations encountered —— 违背 HTTP 协议的时候显示消息提示
    • Allow remote computers to connect —— 允许远程电脑连接
    • Enable IPv6(if available) —— 启用 IPv6（如果可用）
    • Map socket to originating application —— 映射 socket 连接到原程序
    • Encrypt use AES256 when saving password-protected SAZ files(slow) —— 保存受密码保护的 session 到 SAZ(Session Archive ZIP) 文件时候使用 AES256 算法加密（很慢）
    • Automatically stream audio & video —— 音频和视频自动使用流模式
    • Fiddler 的 Windows 全局热键 —— 默认是 Ctrl + Alt + F，你可以设置成 Win + 任意键、Ctrl + Alt + 任意键、Ctrl + Shift + 任意键的组合
  2. HTTPS —— HTTPS 设置

    此选项卡显示 Fiddler 的 HTTPS 设置：

    • Capture HTTPS CONNECTs —— 捕获 HTTPS 连接
    • Decrypt HTTPS traffic —— HTTPS 请求解密
    • Ignore server certficate errors —— 忽略服务器端验证错误
    • Show data from RPASpy —— 显示来自 RPASpy 的数据（RPASpy 是 Fiddler 1.3 中用于查看 HTTPS 请求和响应 header 的插件，Fiddler2 已经集成了 RPASpy）
  3. Extensions —— 扩展

    此选项卡显示 Fiddler 的扩展设置：

    • Automatically reload script when changed —— 脚本发生变化时自动重载
    • Editor —— 脚本的编辑器
    • References —— 扩展所连接到的 dll 文件
    • Extensions —— 已经安装的扩展列表
    • Find more extensions... —— Fiddler 在线扩展列表页
  4. Connections —— 连接

    任何一款可以设置 HTTP 代理的软件都可以使用 Fiddler。请先确保主菜单 File -> Capture Traffic 功能开启了。此选项卡显示 Fiddler 的连接设置：

    • Act as system proxy on startup —— 脚本发生变化时自动重载
    • Chain to upstream gateway proxy —— 链到上行数据流网关代理
    • Show Gateway Info —— 显示上行数据流网关设置信息
    • Fiddler listens on port: —— Fiddler 监听的端口
    • Copy Browser Proxy Configuration URL —— 复制 Fiddler 本地代理配置文件 URL
    • IE showld bypass Fiddler for URLs that start with: —— 如果 URL 地址以下列地址开头，IE 会绕过 Fiddler
    • WinINET Connections —— WinINET 连接
    • Monitor all connections —— 监听所有连接
    • 连接列表
  5. Appearance —— 外观

    此选项卡显示 Fiddler 的外观设置：

    • Font size —— Web Sessions 面板字号选择，单位：磅
    • Hide Fiddler when minimized —— 最小化时隐藏 Fiddler
    • Use SmartScroll in Session List —— Session 列表使用智能滚动
    • Reset Session ID counter on Ctrl + X —— 按下 Ctrl + X 的时候自动重算 session ID
    • Show Fiddler Toolbar —— 显示 Fiddler 工具栏


Fiddler2 参考

  • 快捷键参考
  • 流模式


Fiddler2 快捷键参考

  1. System-wide —— Windows 系统级快捷键
    • Ctrl + Alt + F —— 激活 Fiddler 窗口
  2. App-wide —— Fiddler 快捷键
    • Alt + Q —— 光标聚焦到 QuickExec 命令行
    • Ctrl + F —— 查找 session 对话框
    • Ctrl + H —— 切换到 Inspector 页签的 Header 视图
    • Ctrl + T —— 切换到 Inspector 页签的文本视图
    • Ctrl + Up —— 选择上一个 session
    • Ctrl + Down —— 选择下一个 session
  3. Session List —— Session 列表
    • Ctrl + A —— 选择所有 session
    • Ctrl + X —— 清除 session 列表
    • R —— 重新请求
    • U —— 无条件重新请求
    • P —— 查找父请求（基于 reffer）
    • C —— 查找所有子 session（基于 reffer）
    • D —— 查找相同请求（基于 URL）
    • Ctrl + 1 或者 INS —— 标记当前选择 session 为红色
    • Ctrl + 2 —— 标记当前选择 session 为蓝色
    • Ctrl + 3 —— 标记当前选择 session 为黄色
    • Ctrl + 4 —— 标记当前选择 session 为绿色
    • Ctrl + 5 —— 标记当前选择 session 为橙色
    • Ctrl + 6 —— 标记当前选择 session 为紫色
    • Ctrl + 0 —— 去除颜色标记
  4. Header Inspector —— Inspector 页签 header 视图
    • Ctrl + C —— 复制当前请求的 header
    • Enter —— 编辑当前请求的 header。当 session 被暂停的时候，header 是可以被编辑的（显示为白色背景）
    • Delete —— 删除当前请求的 header
    • INSERT —— 增加一个新 header。不管你放在哪个组下都可以；分组只是为了阅读方便。
  5. TextView Inspector —— Inspector 页签文本视图
    • Ctrl + G —— 跳转到指定的行
    • F3 —— 查找下一个
  6. HexView Inspector —— Inspector 页签十六进制视图
    • Ctrl + G —— 跳到字节


Fiddler2 流模式 (Streaming Mode)

默认情况下，Fiddler 使用缓冲模式 (Buffering Mode) 操作绝大多数响应。在缓冲模式中，Fiddler 会在数据返回客户端之前完全的缓冲 HTTP(S) 响应。这让 Fiddler 用户可以在客户端接收到响应之前有机会修改响应。

流模式中，Fiddler 一旦从远程服务器拿到响应，会立即返回响应给客户端。这对较低网络时间设定来说是非常重要的，因为多数 Web 浏览器 (IE、Firefox 等) 都会在尚未完全下载 HTML 页的时候就开始解析它，并开始并行下载需要的资源 (如 CSS、JS 文件)，即使远程服务器还没完全传输该 HTML。某种意义上，这可能会带来略微的性能提升。

其他的一些场景下流模式也可能非常有用，尤其是访问 Internet 广播类站点时，该站点会使用一个永不结束的 MP3 数据流传递给客户端。一个音频流，从字面上说，应该是永远不会结束的，所以 Fiddler 尝试去完整的缓冲它几乎不可能。

自动流模式

Fiddler 会在哦动使用流模式处理 video/* 和 audio/* 类型响应。你可以开启或关闭这种自动处理，点击主菜单 Tools -> Fiddler Options 的常规选项卡，取消 “Automatically stream audio and video”的勾选。

启用流模式

你可以配置 Fiddler 使用流模式处理所有 HTTP(S) 响应。

在 Fiddler V2.2.2 或更高版本中，你可以点击 Fiddler 工具栏中的 Steaming 按钮。

早期的版本中，在 Timeline 页签，可以右键点击 timeline，选择 Enable Fiddler Streaming 选项。

流模式 Session 处理

流模式中，对响应设置的断点将不会被触发，对响应 header 和 body 的改变在客户端无法看到。


Fiddler2 FAQ

整理了一些 Fiddler2 使用中经常遇到的问题，供大家参考：

如何配置其他浏览器或者应用程序支持 Fiddler2？

Fiddler2 是一个使用本地 127.0.0.1:8888 的 HTTP 代理，任何能够设置 HTTP 代理为 127.0.0.1:8888 的浏览器和应用程序都可以使用 Fiddler2。

Fiddler2 启动后，微软的 Office 和 IE 会自动将 HTTP 代理设置为 127.0.0.1:8888，只要 Capture Traffic 功能开启就能正常使用。

根据微软官方说法，目前 IE、Google Chrome、Apple Safari 和 Opera 的最新版都支持自动设置代理启用 Fiddler2，不过 Opear 需要先启动 Fiddler 再启动 Opera。

自动代理设置的好处在于，Fiddler 打开和关闭的时候，顶多需要重新启动一下浏览器，不需要频繁地去手动修改 HTTP 代理。

其他浏览器和应用程序需要手动设置，将 HTTP 代理 IP 设置成 127.0.0.1，端口 8888。

再次强调，如果手动设置了该浏览器或者应用程序的 HTTP 代理后，一旦退出 Fiddler，就需要手动将该浏览器或者应用程序的 HTTP 代理还原，否则浏览器无法上网。

Fiddler2 是使用本地代理，那么我怎么看到 http://localhost 或者 http://127.0.0.1 的数据请求呢？

IE7 和 .Net Framework 都硬编码指定给 Localhost 发送请求不使用任何代理，因此 Fiddler2 也抓取不到。

如果你一定要抓取，可以使用你的机器名代替 Localhost，比如 http://machinename:8081/test.php，而不是 http://localhost:8081/test.php

更多信息请参考这里

我手动配置了程序的 HTTP 代理为 127.0.0.1:8888，为什么我还是抓不到请求数据？

检查一下如下两个地方：

1、状态栏第二区块的设置，是否当前设置屏蔽了你的软件，详细参考本手册中的状态栏专题。

2、Filters 页签，是否设置了只抓取哪个进程的请求，或其他过滤设置造成。

Fiddler 启动的时候出现了程序崩溃的错误信息

如果启动 Fiddler 的时候，你看见了如下的错误提示：

这种情况一般是你的 .Net Framework 安装不正确。你卸载掉重新安装一次 .Net 2.0 Framework，问题应该就能得以解决。


Fiddler2 官方视频

建议你右键另存到本地再播放。

  1. QuickStart Video —— Introduction to Fiddler (WMV; 8 min; 9mb)
  2. Video #1 —— Simple Request Tampering (WMV; 8 min; 9mb)
  3. Video #2 —— Using the Fiddler AutoResponder (WMV; 7 min; 10mb)
  4. Video #3 —— Performance Testing with Fiddler (WMV; 12 min; 16mb)
  5. Video #4 —— Using the QuickExec feature (WMV; 10 min; 17mb)
  6. Video #5 —— Replaying modified responses with AutoResponder (WMV; 3 min; 4mb)


Fiddler2 推荐文章

以下是网上搜索到的一些相关文章，因为是外链，不保证链接地址永久有效。

  1. [IE8修炼] HTTP 除错与分析的好棒手 - Fiddler2（繁）
  2. 如何直接调试线上页面的 JavaScript 和 CSS
  3. IE 下查看 header 的软件 Fiddler


Fiddler2 中文手册更新日志

  1. 2009年5月11日

    完成 Fiddler2 中文手册第一版的翻译。