python爬蟲之---------------cookie和session

cookie

1. cookie的由來:

大家都知道HTTP協議是無狀態的。

無狀態:是每次請求都是獨立的,它的執行情況和結果與前面的請求和之後的請求都無直接關係,它不會受前面的請求響應情況直接影響,也不會直接影響後面的請求響應情況。

用一句有意思的話來描述: 人生若只如初見,對服務器來說,每次的請求都是全新的。

狀態:客戶端和服務器在某次會話中產生的數據,那無狀態的就以爲這些數據不會被保留。會話中產生的數據又是我們需要保存的,也就是說要“保持狀態”。因此cookie就是在這樣一個場景下誕生。

2. 什麼是cookie

cookie:指一段小信息,它是服務器發送出來存儲在瀏覽器上的一組 組 鍵值對,下次訪問服務器時瀏覽器會自動攜帶這些 鍵值對,以便服務器提取有用信息。

3. cookie的原理

cookie的工作原理是:由服務器產生內容,瀏覽器收到請求後保存在本地;當瀏覽器再次訪問時,瀏覽器會自動帶上cookie,這樣服務器就能通過cookie的內容來判斷這個是“誰”了。

session

1. session的由來

cookie雖然在一定程度上解決了“保持狀態”的需求,但是由於cookie本身最大支持4096字節,以及cookie本身保存在客戶端,可能被攔截或竊取,因此就需要有一種新的東西,它能支持更多的字節,並且他保存在服務器,有較高的安全性。這就是session。

問題來了,基於HTTP協議的無狀態特徵,服務器根本就不知道訪問者是“誰”。那麼上述的cookie就起到橋接的作用。

我們可以給每個客戶端的cookie分配一個唯一的id,這樣用戶在訪問時,通過cookie,服務器就知道來的人是“誰”。然後我們再根據不同的cookie的id,在服務器上保存一段時間的私密資料,如“賬號密碼”等等。

總結而言:cookie彌補了HTTP無狀態的不足,讓服務器知道來的人是“誰”;但是cookie以文本的形式保存在本地,自身安全性較差;所以我們就通過cookie識別不同的用戶,對應的在session裏保存私密的信息以及超過4096字節的文本。

cookie和session其實是共通性的東西,不限於語言和框架

2. session的生命週期

session 存儲在服務器端,一般爲了防止在服務器的內存中(爲了高速存取),sessinon 在用戶訪問第一次訪問服務器時創建,需要注意只有訪問JSP、servlet等程序時纔會創建 session,只訪問HTML、image等靜態資源並不會創建session,可調用 request.getSession(true)強制生成session。

cookie 和session 的區別:

  1. cookie數據存放在客戶的瀏覽器上,session數據放在服務。
  2. cookie不是很安全,別人可以分析存放在本地的cookie並欺騙cookie, 考慮到安全應當使用session。
  3. session會在一定時間內保存在服務器上。當訪問增多,會比較佔用你服務器的性能,考慮到減輕服務器性能方面,應當使用cookie。
  4. 單個cookie保存的數據不能超過 4K,很多瀏覽器都限制一個站點最多保存20個 cookie。

在這裏插入圖片描述

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