Fiddler(二) - 使用 Fiddler 做抓包分析
一、前言
在前期博文<<Fiddler(一) - Fiddler简介>>中已经介绍了 Fiddler 的原理和软件界面。本文主要针对Fiddler
的抓包抓取并处理 HTTP 请求。
二、抓包分析
抓包是 Fiddler 的最基本的应用,以本博客为例,启动 Fiddler 之后,在浏览器中输入http://blog.csdn.net/sunhuaqiang1键入回车之后,在 Fiddler 的 web session 界面捕获到的 HTTP 请求如下图所示:
各字段的详细说明已经解释过,这里不再说明。需要注意的是 #号列中的图标,每种图标代表不同的相应类型,具体的类型包括:
另外,注意请求的 host 字段。可以看到有来自多个www.csdn.net
的子域名的响应,说明在大型网站的架构中,大多需要多个子域名,这些子域名可能是单独用于缓存静态资源的,也可能是专门负责媒体资源的,或者是专门负责数据统计的(如 pingback)。
右键单击其中的一条请求。可以选择的操作有:save(保存请求的报文信息,可以是请求报文,可以是响应报文)。例如,我们保存的一条请求头信息如下:
不仅是单条 session,Fiddler
还支持保存所有抓取到的 session(并支持导入),这对于抓取可疑请求然后保存,并在之后随时分析这些请求是很有帮助的。
如果想要重新发送某些请求,可以选中这些请求,然后点击工具栏中的 reply。就可以重新发送选中的这些请求。
三、指标分析
左键点击单条 HTTP 请求,可以在右侧的 tab 面板中看到如下信息:
3.1 Statistic
关于 HTTP 请求的性能和其他数据分析:
我们可以从中看出一些基本性能数据:如DNS
解析的时间消耗是 8ms,建立 TCP/IP 连接的时间消耗是 8ms 等等信息。
3.2 Inspectors
分为上下两个部分,上半部分是请求头部分,下半部分是响应头部分。对于每一部分,提供了多种不同格式查看每个请求和响应的内容。JPG 格式使用 ImageView 就可以看到图片,HTML/JS/CSS
使用 TextView 可以看到响应的内容。Raw 标签可以查看原始的符合 HTTP 标准的请求和响应头。
Auth 则可以查看授权Proxy-Authorization
和 Authorization
的相关信息。Cookies
标签可以看到请求的cookie
和响应的set-cookie
头信息。
3.3 AutoResponder
Fiddler
比较重要且比较强大的功能之一。可用于拦截某一请求,并重定向到本地的资源,或者使用 Fiddler 的内置响应。可用于调试服务器端代码而无需修改服务器端的代码和配置,因为拦截和重定向后,实际上访问的是本地的文件或者得到的是 Fiddler 的内置响应。
当勾选allow autoresponser
并设置相应的规则后(本例中的规则是将http://blog.csdn.net/sunhuaqiang1
的请求拦截到本地的文件 layout.html),如下图所示。
然后在浏览器中访问http://blog.csdn.net/ohmygirl,得到的结果会重定向到设置的页面中。这刚好是本地 layout.html 的内容,说明请求已经成功被拦截到本地.当然也可以使用 Fiddler 的内置响应。下图是 Fiddler 支持的拦截重定向的方式:
因此,如果要调试服务器的某个脚本文件,可以将该脚本拦截到本地,在本地修改完脚本之后,再修改服务器端的内容,这可以保证,尽量在真实的环境下去调试,从而最大限度的减少 bug 发生的可能性。
不仅是单个 url,Fiddler
支持多种 url 匹配的方式:
字符匹配 如 example 可以匹配 http://www.example.com 和 http://example.com.cn;
完全匹配 以 EXACT 开头表示完全匹配,如上边的例子 EXACT:http://blog.csdn.net/sunhuaqiang1
正则表达式匹配 以
regex:
开头,使用正则表达式来匹配 URL;如:regex:(?insx).*\.(css|js|PHP)$
表示匹配所有以 css,js,php 结尾的请求 url。
3.4 Composer
老版本的 fiddler 中叫request-builder
。顾名思义,可以构建相应的请求,有两种常用的方式构建请求:
Parsed 输入请求的 url 之后 executed 即可,也可以修改相应的头信息(如添加常用的 accept, host, referrer, cookie,cache-control 等头部)后 execute。这个功能的常见应用是:“刷票”(不是火车票!!),如刷新页面的访问量(基于道德和安全原因,如果你真去刷票,刷访问量,本博客概不负责)
Raw。使用 HTTP 头部信息构建 http 请求。与上类似,不多叙述。
3.5 Filter
Fiddler
另一个比较强大的功能。Fiddler
提供了多维度的过滤规则,足以满足日常开发调试的需求。如下图示:
过滤规则有:
host
和 zone 过滤。可以过滤只显示 intranet 或则 internet 的 HTTP 请求,也可以选择特定域名的 HTTP 请求。client process
:可以捕获指定进程的请求。
这对于调试单个应用的请求很有帮助。其他更多的设置可以参考 fiddler 的官方文档。
版权声明: 本文为 InfoQ 作者【No Silver Bullet】的原创文章。
原文链接:【http://xie.infoq.cn/article/cadedfd6620bb378c3714facd】。文章转载请联系作者。
评论