0X01 HTTP
HTTP是一个应用层的面向对象的协议。
0X02 抓包工具
Wireshark、burpsuite、Fiddler
0X03 POST请求
POST /user/avatar/srote HTTP/1.1 第一部分(请求行)
Host: www.mozhe.cn 第二部分(请求消息报头)
User-Agent: Mozilla/5.0 (windows NT 10.0; WOW64; rv:46.0) Gecko/20100101 Firefox/46.0
Accept: text/html,Application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
DNT: 1
Referer: https://www.mozhe.cn/user/avatar
Cookie: mozhe-xsrf-token=eyJpdiI6IkxwOUU2NGlQR3NhUU1odlwvTXM0YVlBPT0iLCJ2YWx1ZSI6IjMwNDdmMFphUkZmz_s=eyJpdiI6InBENmJXdFRycDhKMlQ3OVdKbmp2Vmc9PSIsInZhbHVlIjoiMzk5UzE5ODBtZVd4bW5Tc0QzSTNKWlJ0Y2hOR2lLQVRUOVVcL1wvQXZCeEJrPSIsIm1hYyI6ImRhYzRmOWMyNDU2MGI4OGZmY2NjNzE5NGJlMGQyN2JmMTNlM2Y0OTEzZDc0NjUzYmRhM2QwYWYxMzQyMjg1YjkifQ%3D%3D
Connection: close
Content-Type: multipart/form-data; boundary=---------------------------323151133724701
Content-Length: 2708
-----------------------------323151133724701 第三部分 (请求正文)
Content-Disposition: form-data; name="preToken"
PRS_05beb1c1369f5ca46415d2988435b683
-----------------------------323151133724701
Content-Disposition: form-data; name="_token"
ET7Ab50w7Wf72sBqs5ZYGQsAR8vEyo7rxSkob5xq
-----------------------------323151133724701
Content-Disposition: form-data; name="avatar_src"
-----------------------------323151133724701
Content-Disposition: form-data; name="avatar_data"
{"x":166.9,"y":7.400000000000001,"height":59.20000000000001,"width":59.20000000000001,"rotate":0}
-----------------------------323151133724701
Content-Disposition: form-data; name="avatar_file"; filename="411HW)F{5D4R7I@HZZ@72YG.png"
Content-Type: image/png
‰PNG
0X04 GET请求
请求报文首部信息
GET /dmtfd/180_112_/t016581d5fc716f4ac7.jpg HTTP/1.1
Host: p0.so.qhimg.com
Connection: keep-alive
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36
Accept: image/webp,image/*,*/*;q=0.8
Accept-Encoding: gzip, deflate, sdch
Accept-Language: zh-CN,zh;q=0.8
响应报文的首部信息
HTTP/1.1 200 OK
Expires: Sat, 06 Nov 2027 10:42:27 GMT
Date: Wed, 08 Nov 2017 10:42:27 GMT
Server: Nginx
Content-Type: image/jpeg
Content-Length: 7269
Last-Modified: Fri, 28 Jul 2017 10:07:37 GMT
Cache-Control: max-age=315360000
Access-Control-Allow-Origin: *
Accept-Ranges: bytes
X-Varnish: 4001337919 3116603350
Via: 1.1 varnish
X-Varnish-Hits: 156271
X-Varnish-Cache: HIT
Age: 1
X-Cache: HIT from cache.51cdn.com
X-Via: 1.1 fjqzwt234:8 (Cdn Cache Server V2.0), 1.1 PSbjsjqwtpy148:5 (Cdn Cache Server V2.0)
Connection: keep-alive
0X05 字段含义
当浏览器向Web服务器发出请求时,它向服务器传递了一个数据块,也就是请求信息,HTTP请求信息由3部分组成:
请求行 URI协议/版本
请求头(Request Header)
请求正文
GET
请求获取Request-URI所标识的资源
POST
传输实体主体
HEAD
请求获取由Request-URI 所标识的资源的响应消息报头,不返回报文主体部分。用于确认URI的有效性及资源更新的日期时间等
PUT
用来传输文件,像FTP协议的文件上传一样,要求在请求报文的主体中包含文件内容,
然后保存到请求URI指定的位置
DELETE
请求服务器删除Request-URI所标识的资源
OPTIONS
用来查询针对请求URI指定的资源支持的方法
TRACE
请求服务器回送收到的请求信息,用于测试和诊断。让Web服务器端将之前的请求通信环回给客户端的方法
CONNECT
要求在代理服务器通信时建立隧道,实现用隧道协议进行TCP通信。主要使用SSL和TLS协议把数据进行加密传输
Host
表示请求的资源的主机(域名)和端口号
User-Agent
包含发出请求的用户信息
Accept:text/html,application/xhtml+xml,application/xml;q=0.9,/;q=0.8
意思:浏览器支持的 MIME 类型分别是 text/html、application/xhtml+xml、application/xml 和 /,优先顺序是它们从左到右的排列顺序。
Accept表示浏览器支持的 MIME 类型;
MIME是多功能 Internet 邮件扩充服务
text/html,application/xhtml+xml,application/xml
都是 MIME 类型,也可以称为媒体类型和内容类型,斜杠前面的是 type(类型),斜杠后面的是 subtype(子类型);type 指定大的范围,subtype 是 type 中范围更明确的类型,即大类中的小类。
Text:用于标准化地表示的文本信息,文本消息可以是多种字符集和或者多种格式的;
text/html表示 html 文档;
Application:用于传输应用程序数据或者二进制数据;
application/xhtml+xml表示 xhtml 文档;
application/xml表示 xml 文档。
Accept-Language:告知服务器支持的语言类型
zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3 zh-cn表示简体中文;zh 表示中文; q是权重系数,范围 0 =< q <= 1,q 值越大,请求越倾向于获得其";"之前的类型表示的内容,若没有指定 q 值,则默认为1,若被赋值为0,则用于提醒服务器哪些是浏览器不接受的内容类型。
Accept-Encoding: 指定浏览器可以支持的web服务器返回内容压缩编码类型
意思:浏览器支持的压缩编码是 gzip 和 deflate。
gzip :GNU zip 的缩写,它是一个 GNU 自由软件的文件压缩程序,也经常用来表示 gzip 这种文件格式。
deflate:同时使用了 LZ77 算法与哈夫曼编码(Huffman Coding)的一个无损数据压缩算法。
User-Agent: 告知当前访问者的情况
User-Agent(用户代理),简称 UA,它是一个特殊字符串头,使得服务器能够识别客户端使用的操作系统及版本、CPU 类型、浏览器及版本、浏览器渲染引擎、浏览器语言、浏览器插件等。
Mozilla/5.0:Mozilla 是浏览器名,版本是 5.0;
compatible(兼容的)表示平台是兼容模式;
Referer: 标识当前请求的发起页面
告诉服务器我是从哪个页面链接过来的。
Origin:用来标识本次请求的发起源(只用于POST)
Cookie:会把保存在该请求域名下的所有cookie值一起发送给web服务器。
X-Forwarded-For: 1.2.3.4
Connection: Keep-Alive 表示客户端与服务器连接类型;
Keep-Alive:表示持久连接;
close:指的是服务器发送给客户端后属于关闭状态
0X06 GET和POST区别
get方法向服务器获取资源:GET/dmtfd/180_112_/t016581d5fc716f4ac7.jpg HTTP/1.1
POST方法要求被请求服务器接收附在请求后面的数据,常用于提交表单
常用于取回数据,post用于提交数据
GET方式时Request body 部分为空。
POST方式则可利用URL及Request body发送请求
请求正文:
get:请求正文为空
post:http请求正文中才有信息,通常为web系统自定义参数,用于实现与服务端的交互