反骨仔

一个业余的 .NET Core 攻城狮

0%

08 Fiddle 使用技巧

8.1 Fiddler 和其它抓包软件的比较

与 Fiddler 同类的抓包软件还有 Charles 、Firebug 、Wireshark、HTTPWatch 等。

优势:

  1. Fiddler 可以通过 FiddlerScript 写脚本来扩展功能,Charles 则不能
  2. 使用 Charles 要付费 ,Fiddler 可免费使用
  3. Charles 是跨平台的(Windows 、Mac 、Linux),Fiddler 现在同样也是跨平台的了( Windows 、 Mac、Linux)。
  4. HTTPWatch 也是比较常见的 HTTP 抓包工具 ,但是只支持 IE 和 Firefox 浏览器 ,而且不能修改 HTTP 包
  5. Wireshark 支持更多的协议,主要是用来监昕 TCP/IP 协议,直接与网卡进行数据报文交互
    • 如果用 Wireshark 来监控 HTTP 协议, 就有点大材小用,而且不方便

8.2 Fiddler 抓不到包应该怎么解决

如果 Fiddler 不能捕获数据包,可以尝试:

  1. 先确定是 HTTP 包抓不到,还是 HTTPS 包抓不到
    • 如果只是 HTTPS 包抓不到,说明是证书的问题,需要重新安装证书
  2. 检查浏览器的 HTTP 代理设置是否正确,或者换个浏览器试试
  3. 检查 Fiddler 的捕获开关是否打开
  4. 检查过滤的设置
  5. 确定是否是捕获 Localhost 的流量

8.3 如何找到想抓的包

启动 Fiddler, Web Sessions 列表就会抓到很多 HTTP 请求,我们需要找的 HTTP 请求被淹没其中。

我们在抓包之前,可以先把 Web Sessions 列表清空,然后再操作,这样 Web Sessions 中抓到的 HTTP 请求就会少很多。

有以下几种方法可以清空 Web Session 列表。

  1. 第一种方法:Fiddler 菜单栏上有一个 × 图标,单击小箭头后会看到“ Remove all“,选项,选此即可以清空 Web Session 列表 。
  2. 第二种方法:单击 Web Session 列表中的任何一个 HTTP 请求,并按快捷键【 CTRL+X 】。
  3. 第三种方法:在 QuickExec 命令行工具中输入命令“ cls ”,按回车键,也可以清空 Web Sessions 列表。

抓到自己想要的包后,应该让 Fiddler 暂停抓包,这样就不会因为抓到一些不相干的包而被干扰了。

8.4 Fiddler 异常退出后无法上网

电脑意外死机,Fiddler 异常退出后会导致电脑无法上网。原因是 Fiddler 异常退出后,没有注销代理,系统的代理仍然是 127.0.0.1 ,端口号是 8888 。

解决的办法是重新启动 Fiddler 再关闭,这样浏览器就能上网了。

8.5 Fiddler 排序

Fiddler 中的 Web Session 默认是按照序号排序的,可能某种误操作会让 Web Session 按照别的标准排序,导致用户找不到抓的包。

我们可以单击“序号”的列名,重新按照序号来排序。

image-20210109012316668

8.6 Fiddler 中查询会话

在菜单栏中单击 Edit -> Find Sessions ,或者用快捷键【Ctrl + F】打开“ Find Sessions”的对话框,输入关键宇查询你要的会话。查询到的会话会以黄色显示。

image-20210116161624258

image-20210109012505357

【注意】汉字或者特殊字符很可能查询不到,因为在 HTTP 请求中,汉字或者特殊字符被转义了。

8.7 Fiddler 中保存抓到的包

有些时候我们 需要把会话保存下来,以便发给别人或者以后去分析。保存会话的步骤如下:

  1. 选择你想保存的会话,然后单击 File -> Save -> Selected Sessions。保存后的文件后缀名是 .saz。文件中会保存完整的 HTTP 请求和 HTTP 响应;
  2. 双击 .saz 文件,或者单击 Fiddler 菜单栏中的 File -> Load Archive,就能打开 . saz 文件。

8.8 Fiddler 中编辑会话

默认的情况下,Fiddler 中的 Session 是不能编辑的。

选择一个 Session,用鼠标右键选择“ Unlock For Editing"(快捷键是【F2】),这样就可以在 Inspectors 的 Raw 模式下编辑 HTTP 请求和 HTTP 响应 。

8.9 过滤会活

每次启动 Fiddler,打开一个网页,都能看到几十个会话,看得人眼花缭乱。这时候我们可以使用 Filter 的功能来过滤,使网页只显示自己想要的 HTTP 请求。

在 Fiddler 中找到 Filters 选项卡,选中“ Use Filters ”,就可以启动过滤功能。

Filters 的 Actions 中,我们可以保存好当前的过滤配置,也可以加载己经保存好的过滤配置。

image-20210109012835497

8.10 常用快捷键

Fiddler 中的 Web Sessions 是我们用得最多的地方。通常我们必须选择 Web Sessions 中的 Session,然后做其他的操作。

image-20210109012912926

image-20210109013025365

8.11 QuickExec 命令行的使用

Fiddler 的左下角有一个命令行工具叫作 QuickExec,允许你直接输入命令。

image-20210109013056752

常见的命令:

help 打开官方的使用页面介绍,所有的命令都会列出来
cls 清屏(【Ctrl+X】快捷键也可以清屏)
select 选择会话的命令
?.png 用来选择 .png 后缀的图片
bpu 截获 request

还可以用“ urlreplace www.tank-dev.com www.tank-demo.com ”替换掉 host

我们最初发送给 A 站点的 HTTP 请求,都被 Fiddler 转发到 B 站点,而在浏览器中毫无感觉 。 测试或者 debug 过程中经常会有这种需求。

8.12 Fiddler 比较会话的不同

如果需要比较两个 Session 的内容的不同,我们可以使用 Windiff 工具。具体操作步骤如下 。

  1. 下载 WinDiff
  2. 在 Fiddler 中设置 Compare 工具为 WinDiff。启动 Fiddler ,在菜单栏中单击 Tools -> Fiddler Options ,在 Tools 选项卡中选择 WinDiff 的路径

image-20210116162321980

image-20210109013633172

  1. 选中两个会话,用鼠标右键选择 Compare ,就可以使用 WinDiff 来比较两个会话的不同了

image-20210109013656273

8.13 Fiddler 插件

Fiddler 的插件下载地址是:http://www.telerik.com/fiddler/add-ons

8.13.1 JavaScript Formatter

从服务器返回来的 JavaScript 代码都没有格式化 。 利用 Java Script Formatter 插件可以格式化 JavaScript 代码,增加可读性。

安装好 Java Script Formatter 插件后,在 Fiddler 中选择一个 Session,用鼠标右键选择“ Make JavaScript Pretty ”,就可以格式化 JavaScript 代码了。

image-20210109013828261

选择很多图片的会话后,Gallery 插件可以显示这些图片的缩略图。

假如所有的插件都不能满足你的需求,那么你只能自己开发插件了 。

image-20210109013939527

参考

  • 《HTTP抓包实战》