请求与相应基本要素
请求(request)分类
Get请求:获取数据(从服务器获取数据)
网址中含?的请求是get请求。
POST请求:提交数据(提交数据给服务器)
Cookie和session作用:用户在一段时间不使用网站,再次访问,之前的信息依然存在。
Cookie:服务器在计算机上存储的信息。
Cookie的目的就是提供有关您访问网站的信息,在随后的访问服务器使用。
Cookie是有有效时间的。
请求术语
(1)Accept 接收数据类型 */* 可接受所有类型
(2)Accept-Language 接受语言 zh-CN 接受中文 en-US 美国英文
(3)User-Agent(UA 用户代理) 当前操作系统和浏览器内核版本
(4)Accept-Encoding 浏览器支持的编码类型(压缩方式)支持compress 和gzip类型。
gzip,deflate
gzip是一种数据格式,默认且目前仅使用deflate算法压缩data部分;
deflate是一种压缩算法,是huffman编码的一种加强。
(5)Connection 连接情况
Keep-Alive 完成本次请求后保持TCP连接不释放
Close 完成请求直接关闭
(6)referer 发起请求源地址(追踪从哪个网站访问到本网站)
(7)host:主机地址或域名。
(8)protocol:这个是协议类型,如http、https
(9)url:请求的路径
(10)body:该条请求产生的数据大小
(11)caching:缓存相关HTTP 1.1: 引入了Cache-Control响应头参数以给站长们更多控制网站内容的权力,同时弥补了Expires的局限.
max-age:设置缓存最大的有效时间(比如:60s).
s-maxage:类似于max-age,但是它只用于公享缓存.
Public:响应会被缓存,并且在多用户间共享。正常情况, 如果要求 HTTP 认证,响应会自动设置为 private.
Private:响应只能够作为私有的缓存,不能再用户间共享。
no-cache:响应不会被缓存,而是实时向服务器端请求资源。既可以保障缓存的效率,又能保证安全。
no-store:在任何条件下,响应都不会被缓存,并且不会被写入到客户端的磁盘里,这也是基于安全考虑的某些敏感的响应才会使用这个。
must-revalidate:响应在特定条件下会被重用,以满足接下来的请求,但是它必须到服务器端去验证它是不是仍然是最新的。
proxy-revalidate:类似于 must-revalidate,但不适用于代理缓存.
(12)content-type:请求响应的类型(application/x-www-form-urlencoded: form:表单; application/json: JSON字符串;multipart/form-data:常见的POST数据提交方式,一般在上传文件时使用.使用表单上传文件时必须让form的enctype等于这个值; text/xml: XML格式;text/html:HTML格式; text/plain: 纯文本格式; image/gif: gif图片格式
(13)process:客户端类型
Response(响应) 正常响应和异常响应。
HTTP协议通过响应的状态码来定义。
--1xx 信息响应类,表示接收到请求并且继续处理
--2xx 一般是服务器接受成功,对数据进行处理 200,请求ok;
- --3xx 重定向 针对请求,服务器可执行多种操作。服务器可根据申请人 (user-agent) 选择一项操作,或提供操作列表供申请人选择。
--4xx 一般是请求地址有问题 404 ,找不到服务器 403 ,没有权限找到服务器
--5xx 一般是服务器本身的错误
Fiddle应用
参考链接: https://www.cnblogs.com/miantest/p/7289694.html
https://www.jianshu.com/p/690eb9bebe3c
https://www.cnblogs.com/yoyoketang/tag/fiddler/
- 开始使用时,确保确保Capture Traffic是开启的(安装后是默认开启的),勾选File->Capture Traffic,也可以直接点击Fiddler界面左下角的图标开启和关闭抓包。
- 左侧区域所有字段含义:
#:顺序号,按照抓包的顺序从1递增
Result:HTTP状态码 200,请求ok; 502,服务器收到无效响应
Protocol:请求使用的协议,如HTTP/HTTPS/FTP等
HOST:请求地址的主机名或域名
URL:请求资源的位置
Body:请求大小
Caching:请求的缓存过期时间或者缓存控制值
Content-Type:请求响应的类型(application/x-www-form-urlencoded:form:表单; application/json: JSON字符串;multipart/form-data:常见的POST数据提交方式,一般在上传文件时使用.使用表单上传文件时必须让form的enctype等于这个值; text/xml: XML格式;text/html:HTML格式; text/plain: 纯文本格式; image/gif: gif图片格式)
Process:发送此请求的进程ID
Comments:备注
Custom:自定义值
3.右侧区字段域含义
Ps:每个Fiddler抓取到的数据包都会在该列表中展示,点击具体的一条数据包可以在右侧菜单点击Insepector查看详细内容。主要分为请求(即客户端发出的数据)和响应(服务器返回的数据)两部分。
安装常见问题:
Fiddler对https抓包时,提示"HTTPS decryption is disabled."
原因: 没有启用 https 解密
解决方法1:
(1)设置抓取PC端浏览器的HTTPS协议包:
点击报错处或者【Tools】->【Options】->【HTTPS】,勾上如下图的选项
出现下面的弹框选择“yes”信任,出现安装证书选择yes
以百度为例讲解右侧字段:
用fiddler抓取百度:启动在fiddler的情况下,打开百度网页(数据太多可以按cril+a全选,再按delete键清空左侧数据).然后在fiddler左侧区域找到host为baidu.com的网址(可以检查输入框元素的值是否为fiddler,判断是否选择正确),选中该网址.
Header(请求头)页面元素(Inspector模块): 包括Request和Response两个部分.Request是客户端发出去的数据,Response是服务端返回过来的数据,这两块区域功能差不多
HTTP Request Header部分
Get请求:可以再最前面查看时get还是post请求
协议:HTTP/1.1:
1.1版本协议和1.0版本协议区别
HTTP/1.0协议使用非持久连接,即在非持久连接下,一个tcp连接只传输一个Web对象,;HTTP/1.1默认使用持久连接(然而,HTTP/1.1协议的客户机和服务器可以配置成使用非持久连接)。
Client 头域:
Accept:浏览器端能接受的数据类型,包括text/html,application/xhtml+xml, image/jxr,*/*(所有类型)
Accept-Encoding:压缩方法(编码类型),包括gzip, deflate,
Accept-Language: 语言类型(zh-CN:中文)
User-Agent: 客户端操作系统和浏览器内核版本(Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko )
X-Requested-With: XMLHttpRequest(以用来判断客户端的请求是Ajax请求还是还是传统请求,两种请求在请求的Header不同,Ajax 异步请求比传统的同步请求多了一个头参数.'xmlhttprequest' 表示ajax请求)
COOKIE头域:最重要的header,将Cookie的值发送给HTTP服务器
Miscellaneous头域: 提供了request的上下文信息的服务器,告诉服务器我是从哪个链接过来的。有些统计数据需要用到此头域。比如从我的主页上链接到统计服务器那里,该服务器就能够从HTTP Referer中统计出每天有多少用户点击我主页上的链接访问他的网站。
Transport 头域:
Connection:当网页打开完成后,客户端和服务器之间用于传输HTTP数据的TCP连接是否关闭。keep-alive表示不会关闭,客户端再次访问这个服务器上的网页,会继续使用这一条已经建立的连接;close表示关闭,客户端再次访问这个服务器上的网页,需要重新建立连接。
HOST:主机名或域名,若没有指定端口,表示使用默认端口80.
HTTP Response Header:继续以百度为例
协议:HTTP/1.1
状态码:200
Cache头域:
Date: Wed, 03 Apr 2019 02:35:12 GMT:生成消息的具体时间和日期
Vary: Accept-Encoding: 告诉代理服务器缓存两种版本的资源:压缩和非压缩,保障数据传播正确性
Cookie/Login 头域:把cookie发送到客户端
Entity头域:
Content-Encoding: gzip 压缩方式
Content-Length: 78 正文长度
Content-Type: text/html 响应类型(text/html: HTML格式)
Miscellaneous 头域:指明HTTP服务器的软件信息
Server:指明HTTP服务器的软件信息
X-Powered-By:表明网站是用什么技术开发的
X-AspNet-Version:如果网站是用Asp/Net开发的,这个header用来表明Asp/Net的版本
Security头域:
Strict-Transport-Security: max-age=172800
HTTP Strict Transport Security(通常简称为HSTS)是一个安全功能,它告诉浏览器只能通过HTTPS访问当前资源,而不是HTTP
max-age=<expire-time>:设置在浏览器收到这个请求后的<expire-time>秒的时间内凡是访问这个域名下的请求都使用
includeSubDomains: 如果这个可选的参数被指定,那么说明此规则也适用于该网站的所有子域名
Inspector模块其它部分
TextView:显示请求或响应的数据。
WebForms:请求部分以表单形式显示所有的请求参数和参数值;响应部分与TextView内容是一样的。
Auth:显示认证信息,如Authorization
Cookies:显示所有cookies
Raw:显示Headers和Body数据
JSON:若请求或响应数据是json格式,以json形式显示请求或响应内容
XML:若请求或响应数据是xml格式,以xml形式显示请求或响应内容