requests庫入門-Session和cookie
阿新 • • 發佈:2019-01-24
1.為什麼需要Session和Cookie
我們知道HTTP是一種無狀態的響應。上一個請求和下一個請求沒有任何關係。但是現實過程中,需要這些請求之間有關係。例如,你在首頁登入,但是進入到列表頁就顯示沒有登入,點選一個數據提示你還需要登入。為了解決這樣問題,需要兩個機制,那就是Session 和 Cookie
2.Cookies機制原理
瀏覽器第一次傳送請求,沒有帶cookies,伺服器收到之後,在資料庫找,找到有相關許可權。伺服器就給出相應,並設定一個cookie。瀏覽器收到伺服器傳送過來的cookie,就開始解析cookie,並把這個cookie儲存到本地。這樣,以後瀏覽器每次傳送請求,都帶上cookie,伺服器會對cookie進行解析,傳送這個cookie是之前伺服器設定的cookie,伺服器就開始給瀏覽器傳送HTTP響應,這樣,一個完整的互動流程就走下來了。
在requests中是這樣實現cooie的:
傳送請求的時候帶上cookie
- cookies=dic(c='xxxx')
- requests.get(url,cookies=cookies)
- r = requests.get(url)
- r.cookies['cookiename']
首先瀏覽器傳送一個HTTP請求,伺服器端完成認證之後,會對這個會話進行儲存,也就是會儲存Session,這個可能存在服務上,可能存在資料庫或者redis上。伺服器給出一個響應,帶上cookies-session-id的資訊。瀏覽器拿到響應之後,也會儲存到本地,但是這個時候cookie很小,可能只有一個id。瀏覽器開始傳送HTTP請求,帶上cookie,伺服器上解析sessionid,給出HTTP響應。
4.Session和Cookie兩者的區別
1)、cookie資料存放在客戶的瀏覽器上,session資料放在伺服器上 2)、cookie不是很安全,別人可以分析存放在本地的COOKIE並進行COOKIE欺騙,考慮到安全應當使用session 3)、session會在一定時間內儲存在伺服器上。當訪問增多,會比較佔用你伺服器的效能,考慮到減輕伺服器效能方面,應當使用COOKIE 4)、單個cookie在客戶端的限制是3K,就是說一個站點在客戶端存放的COOKIE不能大於3K。