Fiddler 工具浅析
Fiddler 是位于客户端和服务器端的 HTTP 代理,也是目前最常用的 HTTP 抓包工具之一。(Mac OS 建议采用 Charles)
它可以记录客户端和服务器之间的所有 HTTP 请求,并可以针对特定的 HTTP 请求,分析请求数据、设置断点、调试 web 应用、修改请求的数据,甚至可以修改服务器返回的数据,功能非常强大,是 web 调试和网络请求分析的利器。
Fiddler 作为一个代理,自然客户端的所有请求都会先经过它,再转发给相应的服务器。反之,服务器端的所有响应,也都会先经过 Fiddler 然后发送给客户端。所以,Fiddler 支持所有可以设置 HTTP 代理为 127.0.0.1:8888 的浏览器和应用程序。
Fiddler 界面解析
我们不妨直接看到 Fiddler 的界面,可以看到很多不错的东西。
这里是大概的主界面,由于内容涵盖还是比较多,所以我们分块解析。
Web Session 面板区域
web session 面板区域主要包含了每条 HTTP 请求(每一条称为 session),主要包含了请求的 url,状态码,body 等信息。
-
#
HTTP Request 的顺序,从 1 开始,按照页面加载请求的顺序递增。其中序列号列中一般还有图标,代表不同的响应类型。具体类型包括:
Result
HTTP 响应的状态。状态码解析请参考专业的 HTTP 书籍。Protocol
请求使用的协议,如 HTTP/HTTPS/FTP 等。Host
请求地址域名。URL
请求的服务器路径和文件名,也包括 GET 参数。Body
请求的大小,单位为 byte。Caching
请求的缓存过期时间或缓存控制 header 等值。Content-Type
请求响应的类型(Content-Type)Process
发出此请求的进程及进程 ID。Comments
用户通过脚本或者右键菜单给此 session 增加的备注。Custom
用户可以通过脚本设置的自定义值。
详情和数据面板区域
该区域基本是我们必须关注的点,我们可以在这个区域看到每条 HTTP 请求的具体数据统计和数据包分析。其中的 inspector 面板下的数据往往最受我们的重视。
-
inspector
这里可以看到我们请求的诸多数据,由于时间关系,我们也就仅拿出其中的 Header 部分做讲解,其他部分同理。
上面的 Header 中包含了我们常见的请求头,比如客户端的设备相关信息、Cookies、连接状态。
下面是我们的响应头 Header,同时也包含了响应时间、过期时间、响应格式、数据包大小、连接状态等。
-
Composer
我们经常在做一些接口测试的需要做一些骚操作,比如上传文件等,这个完全不像 GET 请求那般可以直接带上我们的参数在浏览器访问。这时候我们又不想去写一个脚本。好伙计,Composer 正好满足了我们的需求。
正如截图中样式,我们可以设置请求方式、请求地址,参数、甚至是上传文件等,这一些请求我们都可以模拟。
不得不感叹,确实黑科技。
一些其他菜单说明
-
Filters 强大的过滤机制
Fiddler 支持域名过滤,只需要在 Filters 里面设置即可。
过滤条件涵盖非常广泛,比如过滤特定 HTTP 状态码的请求、特定请求类型的 HTTP 请求等,更多的过滤方式还需要大家自己去挖掘。
-
选择抓取区域
可以选择是否支持 HTTPS,选择是否抓取所有进程的请求,还是仅仅浏览器的请求,抑或是仅仅远程设备的请求,功能都是非常强大的。
一些必备的处理
-
对于 Web 抓包
要想抓包到相应的数据,必须设置浏览器代理为 127.0.0.1:8888,否则无法捕获到 HTTP 请求。
对于 HTTPS 的支持
默认情况下,Fiddler 是不支持直接查看 HTTPS 请求的,我们必须在设备上安装它的证书。
这里姑且直接以抓取 Android 手机的 HTTPS 请求做示例。
-
首先设置 Fiddler。打开工具栏 => Tools => Fiddler Options => HTTPS
-
导出证书到手机。
直接在手机端安装。
在手机上安装证书这个操作,太多机型了,都不太一样,姑且大家自行百度。