Fiddler测试文章

04.Fiddler主界面SessionList区介绍

2016-06-29  本文已影响316人  OliverGao

在之前的几篇文章中,我们学会了Fiddler的基本原理和抓取手机流量的设置,我们已经能够在Fiddler上看到五颜六色的报文在欢快的跑动了。在之前的第一讲中我们大体介绍了Fiddler主界面的几个组成部分,接下来的几篇教程我们主要来介绍一下各个功能的简单的操作和实用的快捷键,今天我们先学习的是花花绿绿的报文跑动着的SessionList区。

Session是什么?

对HTTP协议有些许了解的同学应该知道,一个完整的HTTP会话是由Request和Response两部分组成的,客户端向服务器发出请求(Request),服务器针对性的给出回应(Response),他们总是成对出现的,在Fiddler中我们把这样的一对消息称做一个Session。一个Session的生命周期大体可以分成四个部分:

SessionList中的表头

SessionList的表头区和大部分列表的功能一致,决定了各个内容的显示顺序,在边界拖动可以更改显示大小,点击表头还可以将所有内容按照该列排序,我们先看看常见的表头及其内容含义:

#

显示Session编号和当前Session状态/类型,编号是按照Request到达Fiddler的顺序记录的,清空全部后从新从1计数,否则从当前最大值开始计数,只要是经过了Fiddler的流量均会被计数,故部分被脚本隐藏的项会导致看起来列表中的编号不连贯,这并不会产生任何的问题。编号是Fiddler赋予给每一个Session的,与客户端和服务器的交互无关。

除了编号以外,每个Session还会匹配一个图标来标示当前session的状态和类型,这里有一张表简述了各种状态及其图标:



Result

Result列显示的是Response中的状态码,也就是HTTP协议中的Response Status Code。如前文所说在没有收到Response Header之前,这个项会用横杠表示。常见的状态码如下:

Protocol

显示当前Session使用的Protocol类型,通常为HTTP或HTTPS。

Host

Host列显示当前访问网站的HOST,即“HTTP://”或“HTTPS://”与第一个“/”之间的部分,DNS根据HOST会把请求转发给不同的IP地址。

URL

URL列显示访问请求URL除HOST之外的部分

Body

Body列显示ResponseBody的大小(字节为单位),这里的大小是仅包含ResponseBody的大小而不包含ResponseHeader,如果需要统计流量是需要把Header也计入的,我们可以通过自定义列的方法来实现这个需求,在后续几期中会介绍,请持续关注哦。

Caching

Caching列显示的是缓存相关的有效性信息,缓存实际上就是本地对服务器信息的存储,如果本地缓存是有效的,服务器就不用再传输一份已节省网络流量,缓存的基本处理流程如下:

简单了解下服务器再验证的实现:缓存要问问服务器,牛奶已经过期了,到底还能不能喝。我说错了,是文档,不是牛奶。HTTP中,使用两个请求请首部来完成这个功能:If-Modified-Sice和If-None-Match。为啥又要两个首部来完成这个功能了?答案还是因为历史的原因。一开始使用 If-Modified-Sice:<date>首部,date是上一次缓存牛奶时,响应中Last-Modified首部的值。客户端拿着这个值,问服务器,这段时间内这个牛奶你有没有修改过?服务器看了看这个牛奶的修改时间,如果没有修改过,会返回一个304 Not Modified的响应;如果修改过,把最新的牛奶返回给客户端。后来,人们发现这样有问题,因为就算修改时间变化了,文档也不一定发生改变!于是乎,就有了 If-None-Match:<tag>首部,tag是上一次缓存文档时,响应中Etag的值,Etag是一种唯一标识资源的方式,就像java中的hashcode,如果hashcode不一样,那么两个对象肯定不一样!

缓存部分内容节选自HTTP协议:缓存,作者:夕水溪下

Content-Type

Content-Type是ResponseHeader中的一个关键字段,用来标示该Response的类型,客户端在收到Response后可以根据不同的类型做不同的处理。

Process

Process列显示触发该请求的进程,仅对PC机的流量生效,远程代理流量是无法显示进程信息的

Remark

Remark列显示用户对该Session做的备注,主要用于将给他人展示时使用,点击快捷工具栏中的Remark可以快速添加备注信息

SessionList的上下文菜单

上下文菜单即鼠标右键菜单,在选中一条或若干条Session记录后(Ctrl可间隔选中,Shift可以选中一片,空白区域拖动也可完成选中操作),右键可以打开,菜单是可以通过FiddlerScript扩展的,或者随版本变化,可能造成每个人的上下文菜单不尽相同,我们来看看他们的用途:


SessionList中常用的快捷键

下面来整理下使用过程中会经常接触到的快捷键:

快捷键 对应操作
空格 选中焦点Session
CTRL+A 全选Sessions
ESC 取消Session的选择
CTRL+I 反选
CTRL+X 删除全部Session
Delete 删除选中的Sessions
Shift+Delete 删除未选中的Sessions
R 重新触发当前的请求
Shift+R 重新触发当前的请求若干次(所有Reissue类的快捷键都可以和Shift配合,比如E,U,V)
U 无条件重新触发当前请求,忽略本地缓存信息
E 编辑后重新触发当前请求
P 定位到当前请求的父请求(通过Referer Header决定)
C 定位到当前请求的子请求(通过Referer Header或者重定向Location决定 Header)
D 选中全部有相同URL,Method,Status Code的Sessions
ALT+回车 查看当前Session的属性(尽在选中一个Session时有效)
Shift+回车 在新的窗口中查看当前Session的观察器
Backspace 选中上一次选中的Session
Insert 标记当前Session红色字体加粗
CTRL+1到CTRL+6 各种标记颜色
M 针对当前Session添加Comment
Alt+鼠标单击 选中全部和当前列一致的Sessions
F2 解锁为可编辑状态(具体使用在后续Inspectors章节中介绍)
Ctrl+U 复制当前Session的URL部分
上一篇 下一篇

猜你喜欢

热点阅读