(爬蟲學習筆記4)Cookies基本理解(Cookies的概述、屬性結構、與爬蟲關係的基本理解)

一、Cookies 概述:

​ HTTP有一個特點,叫做“無狀態”。HTTP無狀態是指HTTP協議對事務處理是沒有記憶力的,也就是說服務器不知道客戶端是什麼狀態,服務器不會記錄用戶的信息(簡單來說就是,如果沒有”Cookies“,用戶每一次打開同一個網站都要進行登錄操作,如果有了“Cookies”,用戶只需要在第一次打開網站時進行登錄操作,之後在一段時間內,再次訪問此網站時就不需要進行登錄操作了)。

​ 這時候保持HTTP連接狀態的技術就出現了,它們分別是”會話“和”Cookies“,其中“會話”在服務器端,“Cookies”在客戶端。“Cookies”會將用戶登錄信息存儲在本地,當用戶打開瀏覽器與服務器建立起會話時,瀏覽器會自動將“Cookies”信息發送給服務器,服務器通過識別“Cookies”信息並鑑定出是哪個用戶,然後判斷登陸狀態並返回對應的迴應。

二、Cookies 屬性結構:

在這裏插入圖片描述

可以看到,這一個整體(Cookies)裏有很多條目,其中每個條目可以稱爲“Cookie”。它有如下幾個屬性:

  • Name( 名稱 ):該 Cookie 的名稱。一旦創建,該名稱便不可修改。
  • Value( 值 ):該 Cookie 的值。如果值爲 Unicode 字符,需要爲字符編碼。如果值爲二進制數據,則需要使用 BASE64 編碼。
  • Domain( 域 ):可以訪問該 Cookie 的域名。例如:如果設置爲 “zhihu.com” ,則所有以 “zhihu.com” 結尾的域名都可以訪問該 Cookie 。
  • Max Age( 過期/最長時間 ):該 Cookie 失效的時間,單位爲秒,也常和 Expires 一起使用,通過它可以計算出其有效時間。Max Age如果爲整數,則該 Cookie 在 Max Age 秒之後失效。如果爲負數,則關閉瀏覽器時 Cookie 即失效,瀏覽器也不會以任何形式保存該 Cookie。
  • Path( 路徑 ):該 Cookie 的使用路徑。如果設置爲 / path / ,只有路徑爲 / path / 的頁面可以訪問該 Cookie。如果設置爲 / ,則本域名下的所有頁面都可以訪問該 Cookie。
  • Size 字段( 大小 ):此 Cookie 的大小。
  • HTTP 字段( HttpOnly ):Cookie 的 HttpOnly 屬性。若此屬性爲 true,則只有在 HTTP 頭中會帶有此 Cookie,而不能通過 document.cookie 來訪問此 Cookie。
  • Secure:該 Cookie 是否僅被使用安全協議傳輸。安全協議有 HTTPS 和 SSL 等,在網絡上傳輸數據之前先將數據加密。默認爲 false 。

三、Cookies 與爬蟲關係的基本理解:

​ Cookies 保持會話的原理:客戶端第一次請求服務器時,服務器會返回一個響應頭中帶有 ‘Set-Cookie’ 字段的響應給客戶端,用來標記用戶,客戶端瀏覽器會把 Cookie 保存起來,當瀏覽器再一次請求該網站時,瀏覽器會把此 Cookies 放到請求頭一起提交給服務器,Cookies 攜帶了會話 ID 信息,服務器檢查該 Cookies 即可找到對應的會話是什麼,然後再判斷會話來以此辨認用戶狀態,如果會話中的某些設置登錄狀態的變量是有效的,那就證明用戶處於登錄狀態,此時返回只有登錄之後才能查看的網頁內容,瀏覽器再進一步解析便可以看到了。

​ 我們可以認爲 Cookies 裏面保存了登錄需要的憑證,有了它,只需要再下次請求攜帶 Cookie 發送請求而不必重新輸入用戶名、密碼等信息重新登錄了。

​ 因此在爬蟲中,有時候處理需要登錄才能訪問的頁面時,我們一般會直接將登錄成功後獲取的 Cookies 放在請求頭裏直接請求(前提是 Cookies 沒有),而不必重新模擬登錄。

所有內容全部引自《python3 網絡爬蟲開發實戰(人民郵電出版社)》,此筆記僅用於學習交流。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章