因為網絡安全往往需要一門腳本語言的支援,不然隻能用着别人的工具。是以決定從學習編寫一隻爬蟲開始,來入門python掌握一門腳本語言,學習爬蟲,當然與http協定離不了關系,是以先分析一下http的工作流程
HTTP協定
1.什麼是HTTP
http協定是超文本傳輸協定,它定義了浏覽器和伺服器之間的通信規則,http有兩個程式實作,一個用戶端程式,一個伺服器程式,從層次結構上來看屬于應用層的協定,使用tcp作為它的支撐運輸協定,并且是一種無狀态協定,以此來降低伺服器的負荷
2.工作原理
HTTP:用戶端與伺服器端建立連接配接 -————用戶端送出請求封包———— 伺服器端發出應答封包
HTTPS:現在大多數頁面使用HTTPS來進行資料的交流,因為HTTP封包都是明文的,一旦目标截取資料包,很有可能得到使用者的賬号密碼
過程: 主機向伺服器發送請求,想要建立連接配接—————伺服器向主機傳回一個公鑰(公鑰需要到認證中心申請,是以許多做黑産的頁面隻能使用http)——————主機收到公鑰後,利用公鑰對自己的請求封包進行加密——————伺服器收到後利用自己的私鑰進行解密
3.http請求
包括 請求行 請求頭 請求内容
請求方式有get、post、put、delet等等
這裡主要說下最常見的兩種get和post post可以承載更多的發送資訊
post請求
如圖---------在百度 搜尋123 後抓取到如上圖的資料包
POST:請求方式以及使用的HTTP的版本
URI:統一資源辨別符(注意URI和URL是兩種不同的概念,但是可以把它當作url來了解,下面是對于兩者差別的詳細講解)
https://www.jianshu.com/p/ba15d066f777
Request Version:版本資訊
Request Method:請求方法
Host:表示向哪一台主機發送請求
Accept:告訴浏覽器我可以接收哪些資料類型
Accept-Encoding:告訴浏覽器,支援的壓縮格式
User-Agent:客戶機使用的浏覽器以及版本資訊
Cache Control:緩存控制
Connection:告訴伺服器請求完後是斷開還是保持連接配接
Content-Length:我可以接收的資料的長度
Full-Request URI:所請求的完整的URI
HTTP Request :HTTP請求的進度
Response in frame 請求的幀
request請求
Request URI 以及請求的内容
Request path 所請求的路徑
Referer:表示的含義是你是從哪個頁面來到此頁面的,伺服器往往通過referer來防盜鍊
Cookie:http往往是種無狀态協定,是以大部分頁面使用cookies來對使用者進行表示,進而實作登入功能
(這裡出了點問題,因為現在的頁面大都是https的包,導緻我抓不到幾個資料包,唉)
4.http響應
響應同樣也包括 響應行 響應頭 響應内容
Sever:伺服器資訊
Last-modified:上一次修改時間
狀态碼含義以及常見的狀态碼:我們可以通過狀态碼得到此次請求是否成功
1XX 表示資訊 如
2XX 表示請求成功
3XX 表示重定向
4XX 表示問題在用戶端
5XX 表示問題在伺服器端
幾個常見的狀态碼
- 200 OK 請求成功(其後是對GET和POST請求的應答文檔。)
- 302 Found 所請求的頁面已經臨時轉移至新的url
- 400 Bad Request
- 403 Forbidden 對被請求頁面的通路被禁止
- 404 Not Found伺服器無法找到被請求的頁面。
-
500 Internal Server Error
請求未完成。伺服器遇到不可預知的情況。
-
502 Bad Gateway
請求未完成。伺服器從上遊伺服器收到一個無效的響應。
-
504 Gateway Timeout
網關逾時。
在抓取資料包時,發現wireshark不能夠抓取https的資料包
然而現在頁面大多數都是https,唉