fiddler简介与抓包原理

在做接口测试的时候,经常需要验证发送的消息是否正确,或者在出现问题的时候定位问题,就需要用到抓包工具。

一、常见抓包方式

  1. 浏览器开发者工具(F12)- 操作简单,但刷新页面,修改不保存
  2. Fiddler - 基于代理抓应用层的数据包,http/https
  3. Wireshark - 可以抓底层的包 TCP/UDP
    Fiddler优点:
    易用性
    可断点
    可改包
    可扩展
    跨平台

Fiddler 下载地址 :https://www.telerik.com/download/fiddler

二、fiddler简介与原理

Fiddler是一款HTTP协议调试代理工具,它能够抓取记录本机所有HTTP(S)请求,分析请求&返回数据、设置断点、调试web应用、修改进出fiddler的数据(cookie,html,js,css),模拟客户端和服务器的交互,完成一系列Mock测试。

Fiddler是以代理web服务器的形式工作的,它使用代理地址:127.0.0.1,端口:8888。使用了Fiddler之后,web客户端和服务器的请求如下所示:
fiddler简介与抓包原理
fiddler相当于一个中间人,例媒人

注:使用Fiddler的话,需要先设置浏览器的代理地址,才可以抓取到浏览器的数据包。而很方便的是在你启动该工具后,它就已经自动帮你设置好了浏览器的代理了,当关闭后,它又将浏览器代理还原了。当然如果发现没有自动设置浏览器代理的话,那就得自己动手去浏览器进行设置代理操作了。(可自行百度每个浏览器是如何设置代理的),反正一定要设置相应的代理,否则fiddler是无法捕获到HTTP请求的。

三、fiddler主界面简介

fiddler简介与抓包原理

主界面中主要包括四个常用的块:
fiddler简介与抓包原理

1.Fiddler的菜单栏,上图红色部分。包括捕获/停止/保存http请求,载入本地session、设置捕获规则等功能。

2.Fiddler的工具栏,上图黄色部分。包括Fiddler针对当前view的操作(暂停,清除session,decode模式、清除缓存等)。

3.web Session面板,上图蓝色区域,主要是Fiddler抓取到的每条http请求(每一条称为一个session),主要包含了请求的url,协议,状态码,body等信息,详细的字段含义如下图所示:
左边web session面板的字段及图标含义如下:

名称 含义
# 抓取HTTP Request的顺序,从1开始,以此递增
Result HTTP状态码
Protocol 请求使用的协议,如HTTP/HTTPS/FTP等
Host 请求地址的主机名
URL 请求资源的位置
Body 该请求的大小
Caching 请求的缓存过期时间或者缓存控制值
Content-Type 请求响应的类型
Process 发送此请求的进程:进程ID
Comments 允许用户为此回话添加备注
Custom 允许用户设置自定义值

fiddler简介与抓包原理
fiddler简介与抓包原理
该表来源于博客:http://blog.csdn.net/qq_21445563/article/details/51017605

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

Statistics
关于HTTP请求的性能(例如发送/接受字节数,发送/接收时间,还有粗略统计世界各地访问该服务器所花费的时间)以及数据分析。

Inspectors
用于查看会话的内容,上半部分是请求的内容,下半部分是响应的内容,提供headers、textview、hexview,Raw等多种方式查看单条http请求的请求报文的信息。

AutoResponder
可用于拦截某一请求,即按自己添加的指定规则重定向到本地的资源或Fiddler资源,从而代替服务器响应。

composer面板
允许自定义请求发送到服务器,可以手动创建一个新的请求,也可以在会话表中,拖拽一个现有的请求

Parsed模式下你只需要提供简单的URLS地址即可(如下图,也可以在RequestBody定制一些属性,如模拟浏览器User-Agent)
fiddler简介与抓包原理

fiddler简介与抓包原理

Filter标签
设置Fiddler的过滤规则,来达到过滤http请求的目的。Fiddler的过滤器非常强大,可以过滤特定http状态码的请求,可以过滤特定请求类型的http请求(如css请求,image请求,js请求等),可以过滤请求报文大于或则小于指定大小(byte)的请求。如下图所示,勾选左上角的Use Filters开启过滤器。
fiddler简介与抓包原理

这里有两个最常用的过滤条件:Zone和Host
1、Zone 指定只显示内网(Intranet)或互联网(Internet)的内容,如下图所示:
fiddler简介与抓包原理
2、Host 指定显示某个域名下的会话:
fiddler简介与抓包原理
如果框框为黄色(如图),表示修改未生效,点击红圈里的文字即可

Timeline
请求响应时间
在左侧会话窗口点击一个或多个(同时按下 Ctrl 键),Timeline 便会显示指定内容从服务端传输到客户端的时间:
fiddler简介与抓包原理

Capture Traffic
Fiddler想要抓到数据包,要确保Capture Traffic是开启,在File –> Capture Traffic。开启后在左下角会有显示,当然也可以直接点击左下角的图标来关闭/开启抓包功能。如下图:
fiddler简介与抓包原理