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系統自定義參數,用于實現與服務端的交互