Python網絡爬蟲之-HTTP協議原理
1. 爬蟲之http基本原理
- URI(統一資源表示符)中包含(URL<統一資源定位符>/URN<統一資源名稱>)
- HTTP(超文本傳輸協議)/HTTPS(安全套接層上的超文本傳輸協議/Hyper Text Protocol over Security Socket Layer)
差異性:
HTTP: 未進行ssl協議進行加密廣泛使用的是http1.1協議
HTTPS: 增加了ssl加密協議在傳輸方面有了提升也增加了CA證書整明網站真實性可靠性使用https(http2.0)。
2. 瀏覽器解析概述
1. 基礎概念:
1. Ctrl+Shift+I 打開開發者模式
2. Client請求Server時通過Request(請求)-->Response(響應)
主要Network模塊及該模塊下的文件請求屬性
1. General(常規)
Request URL: #請求url(統一資源定位符)
Request Method: #提交方式(GET/POST/HEAD/more..)
Status Code: #請求狀態碼(200 OK/304/more...)
Remote Address: #目標IP
Referrer Policy: #規則設置
2. Response Headers(響應頭部)
HTTP/1.1 200 OK 響應狀態及協議版本號
Server: 目標服務器信息
Date: Sun, 10 Nov 2019 07:31:07 GMT #服務器時間
Content-Type: text/html; charset=UTF-8 #文本類型及編碼格式
Transfer-Encoding: chunked #傳輸編碼
Connection: keep-alive #連接狀態
Expires: Thu, 19 Nov 1981 08:52:00 GMT #響應過期時間
Cache-Control: no-store, no-cache, must-revalidate #控制緩存
Pragma: no-cache #http/1.1之前版本的歷史遺留字段,僅作爲與http的向後兼容而定義。
Vary: Cookie #也是一個做緩存的東東,佔時沒做深入瞭解
X-Pingback: wordpress網站真實路徑
Content-Encoding: gzip #響應內容編碼類型
3. Request Headers(請求頭部)
GET /5465.html HTTP/1.1
Host: 主機
Connection: keep-alive #連接狀態
Cache-Control: max-age=0 #控制緩存
DNT: 1 #禁止跟蹤
Upgrade-Insecure-Requests: 1
User-Agent: #用戶使用的什麼代理(瀏覽器)
Sec-Fetch-Mode: navigate
Sec-Fetch-User: ?1
Accept: #支持頁面類型
Sec-Fetch-Site: same-origin #秒取站點
Referer: https://cuiqingcai.com/5052.html #告訴服務器該網頁是從哪個頁面鏈接過來的
Accept-Encoding: gzip, deflate, br #請求格式
Accept-Language: zh-CN,zh;q=0.9 #支持的語言
Cookie: cookie記錄值
Cookie技術
1. 對於Cookie工作過程這裏需要提及(會話保持)服務端會設置set-cookie 時間給客戶端\
服務端與客戶端之間必須共同協作才能保持兩者之間會話連通性\
若不然C/S兩者Client cookie 將會斷開則需從新請求cookie。
2. **常見誤區**
在談論會話機制的時候,常常聽到這樣一種誤解“只要關閉瀏覽器,會話就消失了”,這種理解是錯誤的。\
可以想象一下會員卡的例子,除非顧客主動對店家提出銷卡,否則店家絕對不會輕易刪除顧客的資料。\
對會話來說,也是一樣,除非程序通知服務器刪除一個會話,否則服務器會一直保留。\
比如,程序一般都是在我們做註銷操作時纔去刪除會話。
但是當我們關閉瀏覽器時,瀏覽器不會主動在關閉之前通知服務器它將要關閉,所以服務器根本不會有機會知道瀏覽器已經關閉。\
之所以會有這種錯覺,是因爲大部分會話機制都使用會話Cookie來保存會話ID信息,\
而關閉瀏覽器後Cookies就消失了,再次連接服務器時,也就無法找到原來的會話了。\
如果服務器設置的Cookies保存到硬盤上,或者使用某種手段改寫瀏覽器發出的HTTP請求頭,把原來的Cookies發送給服務器,\
則再次打開瀏覽器,仍然能夠找到原來的會話 ID,依舊還是可以保持登錄狀態的。
而且恰恰是由於關閉瀏覽器不會導致會話被刪除,這就需要服務器爲會話設置一個失效時間,\
當距離客戶端上一次使用會話的時間超過這個失效時間時,\
服務器就可以認爲客戶端已經停止了活動,纔會把會話刪除以節省存儲空間。