额,这篇忘了是来自哪位作者的了。
whistle:1.14.6
这里以抓取浏览器数据包为例,分析抓取的数据。
Method:Connect,对应Host:Tunnel to意思是因为网络环境受限,客户端无法直接访问某些网络,所以只能通过代理服务器访问网络(客户端使用http connect请求代理服务器,代理服务器使用connect方法与目标服务器建立http tunnel),然后将内容转发给客户端,从宏观上看,客户端与服务器端就像建立了一条隧道一样。
GET:网址带参数。
POST:回车操作,提交。
比较常用的是:
clear:清除所有数据包
record:记录抓包结果
Filter:对抓取的数据包进行过滤。
Overview:关于HTTP请求性能和其他数据分析,比如DNS解析消耗时间、请求时间、响应时间。
Composer:可以构建响应的请求,也就是修改请求,查看页面返回什么。
Inspectors:分为上下两个部分,上半部分是请求头部分,下半部分是响应头部分。
请求头的内容如下:
Host:请求连接的主机名;
User-Agent:告诉服务器,我本地浏览器支持哪些内核浏览器
Accept:可接受的文件类型;
Accept-Language:可接受的返回数据的语言种类;
Accept-Encoding:可接受的纯文本之外的内容编码的类型;
Content-Type:内容数据的类型(Mini Type);
Content-Length:传输的内容长度;
Connection:指定该次请求回应结束后,如何处理连接;
Proxy-Connection:
Cache-Control:指定请求和响应遵循的缓存机制;
Pragma:防止页面被缓存,Pargma只有一个用法, 例如: Pragma: no-cache
Location:用于重定向接收者到一个新URL地址;
响应头的内容如下:
Accept-Ranges:
Cache-Control:指定请求和响应遵循的缓存机制;
Content-Type:内容数据的类型(Mini Type);
Date:表示发送HTTP消息的日期,即当前的GMT时间
Expires:内容数据被缓存的过期时间;
Last-Modified:服务器上保存内容的最后修订时间;
Server:指明HTTP服务器的软件信息;
Content-Length:传输的内容长度;
Content-Encoding:文档的编码方法,一般是压缩方式
Transfer-Encoding:用来改变报文格式
Age:表示HTTP接受请求操作响应的缓存时间;
(Status-Line):包括HTTP请求的状态码和HTTP版本信息;
Connection:指定该次请求回应结束后,如何处理连接;
Content-Language:内容数据的语言种类;
请求方法有多种, 各个方法的解释如下:
GET请求获取Request-URI所标识的资源
POST在Request-URI所标识的资源后附加新的数据
HEAD请求获取由Request-URI所标识的资源的响应消息报头
PUT请求服务器存储一个资源, 并用Request-URI作为其标识
DELETE请求服务器删除Request-URI所标识的资源
TRACE请求服务器回送收到的请求信息,主要用于测试或诊断
CONNECT保留将来使用
OPTIONS请求查询服务器的性能,或者查询与资源相关的选项和需求
应用举例:
GET方法在浏览器的地址栏中输入网址的方式访问网页时, 浏览器采用GET方法向服务器获取资源,eg:GET /form.html HTTP/1.1 (CRLF)
POST方法要求被请求服务器接受附在请求后面的数据, 常用于提交表单。
响应头中的HTTP状态码对应信息:
状态代码与状态描述:
1XX:指示信息——表示请求已经接受,继续处理;
2XX:成功——表示请求已经被成功接收、理解、接受;
3XX:重定向——要完成请求必须进行更进一步的操作;
4XX:客户端错误——请求有语法错误或请求无法实现;
5XX:服务器端错误——服务器未能实现合法的请求。
常用状态码以及状态描述:
200:客户端请求成功
400:Bad Request 客户端请求有语法错误,不能被服务器所理解
401:Unauthorized 请求未经授权,这个状态吗必须和WWW-Authenticate报头域一起使用
403:Forbidden 服务器收到请求,但是拒绝提供服务
404:Not Found 请求资源不存在,如输入了错误的URL
500:Internal Server Error 服务器发生不可预期的错误
502:Server Unavailable 服务器当前不能处理客户端的请求,一段时间后可能回复正常