写点什么

Fiddler(一) - Fiddler 简介

  • 2022 年 10 月 05 日
    安徽
  • 本文字数:1341 字

    阅读完需:约 4 分钟

Fiddler(一) - Fiddler简介

一、为什么选择 Fiddler 作为抓包工具?

  抓包工具有很多,小到最常用的 web 调试工具 firebug,达到通用的强大的抓包工具 wireshark。为什么使用 fiddler?原因如下:


  • Firebug虽然可以抓包,但是对于分析 http 请求的详细信息,不够强大。模拟 http 请求的功能也不够,且 firebug 常常是需要“无刷新修改”,如果刷新了页面,所有的修改都不会保存。

  • Wireshark是通用的抓包工具,但是比较庞大,对于只需要抓取 http 请求的应用来说,似乎有些大材小用。

  • Httpwatch也是比较常用的http抓包工具,但是只支持 IE 和 firefox 浏览器(其他浏览器可能会有相应的插件),对于想要调试 chrome 浏览器的 http 请求,似乎稍显无力,而 Fiddler2 是一个使用本地 127.0.0.1:8888 的 HTTP 代理,任何能够设置 HTTP 代理为 127.0.0.1:8888 的浏览器和应用程序都可以使用 Fiddler。

二、什么是 Fiddler?

  Fiddler是位于客户端和服务器端的 HTTP 代理,也是目前最常用的 http 抓包工具之一 。它能够记录客户端和服务器之间的所有 HTTP 请求,可以针对特定的 HTTP 请求,分析请求数据、设置断点、调试 web 应用、修改请求的数据,甚至可以修改服务器返回的数据,功能非常强大,是 web 调试的利器。


既然是代理,也就是说:客户端的所有请求都要先经过Fiddler,然后转发到相应的服务器,反之,服务器端的所有响应,也都会先经过Fiddler然后发送到客户端,基于这个原因,Fiddler支持所有可以设置 http 代理为127.0.0.1:8888的浏览器和应用程序。使用了 Fiddler 之后,web 客户端和服务器的请求如下所示:



  Fiddler作为系统代理,当启用 Fiddler 时,IE 的 PROXY 设定会变成 127.0.0.1:8888,因此如果你的浏览器在开启fiddler之后没有设置相应的代理,则fiddler是无法捕获到 HTTP 请求的。如下是启动 Fiddler 之后,IE 浏览器的代理设置:


三、Fiddler 使用界面简介

  Fiddler 主界面的布局如下:



  主界面中主要包括四个常用的块:


  • Fiddler 的菜单栏。包括捕获 http 请求,停止捕获请求,保存 http 请求,载入本地 session、设置捕获规则等功能。

  • Fiddler 的工具栏。包括 Fiddler 针对当前 view 的操作(暂停,清除 session,decode 模式、清除缓存等)。

  • web Session 面板。主要是 Fiddler 抓取到的每条 http 请求(每一条称为一个 session),主要包含了请求的 url,协议,状态码,body 等信息  详细的字段含义如下图所示:

  • 详情和数据统计面板。针对每条 http 请求的具体统计(例如发送/接受字节数,发送/接收时间,还有粗略统计世界各地访问该服务器所花费的时间)和数据包分析。如 inspector 面板下,提供 headers、textview、hexview,Raw 等多种方式查看单条 http 请求的请求报文的信息。

  •   而 composer 面板下,则可以模拟向相应的服务器发送数据的过程(不错,这就是灌水机器人的基本原理,也可以是部分 http flood 的一种方式)。

  •   也可以粘贴一次请求的 raw http headers,达到模拟请求的目的:

  •   Filter标签则可以设置Fiddler的过滤规则,来达到过滤 http 请求的目的。最简单如:过滤内网 http 请求而只抓取 internet 的 http 请求,或则过滤相应域名的 http 请求。Fiddler 的过滤器非常强大,可以过滤特定 http 状态码的请求,可以过滤特定请求类型的 http 请求(如 css 请求,image 请求,js 请求等),可以过滤请求报文大于或则小于指定大小(byte)的请求。更多的过滤器规则需要一步一步去挖掘。

发布于: 刚刚阅读数: 4
用户头像

No Silver Bullet 2021.07.09 加入

岂曰无衣 与子同袍

评论

发布
暂无评论
Fiddler(一) - Fiddler简介_fiddler_No Silver Bullet_InfoQ写作社区