Python爬蟲番外篇之Cookie和Session
作者:python成長之路
文章來自博客園
原文鏈接:http://www.cnblogs.com/zhaof/p/7211253.html
關於cookie和session估計很多程序員面試的時候都會被問到,這兩個概念在寫web以及爬蟲中都會涉及,並且兩者可能很多人直接回答也不好說的特別清楚,所以整理這樣一篇文章,也幫助自己加深理解
什麼是Cookie
其實簡單的說就是當用戶通過http協議訪問一個伺服器的時候,這個伺服器會將一些Name/Value鍵值對返回給客戶端瀏覽器,並將這些數據加上一些限制條件。在條件符合時,這個用戶下次再訪問伺服器的時候,數據又被完整的帶給伺服器。
因為http是一種無狀態協議,用戶首次訪問web站點的時候,伺服器對用戶一無所知。而Cookie就像是伺服器給每個來訪問的用戶貼的標籤,而這些標籤就是對來訪問的客戶端的獨有的身份的一個標識,這裡就如同每個人的身份證一樣,帶著你的個人信息。而當一個客戶端第一次連接過來的時候,服務端就會給他打一個標籤,這裡就如同給你發了一個身份證,當你下載帶著這個身份證來的時候,伺服器就知道你是誰了。所以Cookie是存在客戶端的,這裡其實就是在你的瀏覽器中。
Cookie中包含了一個由名字=值(name = value)這樣的信息構成的任意列表,通過Set-Cookie或Set-Cookie2 HTTP響應(擴展)首部將其貼到客戶端身上。如下圖例子所示:
其實這裡有一個非常典型的應用,就是關於你登錄很多網站的賬號信息,你讓記住密碼之後,一段時間內,不需要輸入密碼,每次都是登錄狀態
Cookie的分類
這裡Cookie主要分為兩種:
會話Cookie:不設置過期時間,保存在瀏覽器的內存中,關閉瀏覽器,Cookie便被銷毀
普通Cookie:設置了過期時間,保存在硬碟上
Cookie屬性
因為最開始的cookie是網景公司定義的,後來又有了RFC版本所以當前的Cookie有兩個版本:Version 0 Version 1 他們有兩種設置響應頭的標識,分別是:Set-Cookie和Set-Cookie2,這也造成了一些屬性的不同,這裡需要注意:常用的為Version 0
Version 0的屬性
NAME = Value :鍵值對設置要保存的Name/Value,這裡的name不能喝其他屬性的名字一樣
Expires:過期時間
Domain:生成該Cookie的域名
Path: 該Cookie是在當前的哪個路徑下生成
Secure:如果設置了這個屬性,那麼只會在SSH連接時才會回傳該Cookie
Version 1的屬性
Name=VALUE:鍵值對設置要保存的Name/Value,這裡的name不能喝其他屬性的名字一樣
Comment:主是想,用於說明該Cookie有什麼用途
CommentURL:該伺服器為此COokie提供URI注釋
Discard:是否在回話結束丟棄該Cookie,默認為false
Domain:生成該Cookie的域名
Max-Age:最大失效時間,與Version 0不同的是這裡設置的是在多少秒後失效
Path:該Cookie是在當前的哪個路徑下生成
Port:該 Cookie 在什麼埠下可以回傳服務端,如果有多個埠,以逗號隔開
Secure:如果設置了這個屬性,那麼只會在SSH連接時才會回傳該Cookie
關於Session
上面我們知道了Cookie可以讓伺服器端跟蹤每個客戶端的訪問,但是每次客戶端的訪問都必須傳回這些 Cookie,如果 Cookie 很多,這無形地增加了客戶端與服務端的數據傳輸量,而 Session 的出現正是為了解決這個問題。
同一個客戶端每次和服務端交互時,不需要每次都傳回所有的Cookie值,而是只要傳回一個ID這個ID是客戶端第一次訪問伺服器的時候生成的,而且每個客戶端是唯一的。這樣每個客戶端就有了一個唯一的ID,客戶端只要傳回這個ID就行了,這個ID通常是NANE為JSESIONID的一個Cookie。所以Session其實是利用Cookie進行信息處理的。
cookie和session的共同之處在於:cookie和session都是用來跟蹤瀏覽器用戶身份的會話方式。
cookie 和session的區別是:cookie數據保存在客戶端,session數據保存在伺服器端。
cookie不是很安全,別人可以分析存放在本地的COOKIE並進行COOKIE欺騙,如果主要考慮到安全應當使用session,當然也沒有絕對的安全,只是相對cookie,session更加安全
session會在一定時間內保存在伺服器上。當訪問增多,會比較佔用你伺服器的性能,如果主要考慮到減輕伺服器性能方面,應當使用COOKIE
cookie和session各有優缺點,所以將登陸信息等重要信息存放為SESSION;其他信息如果需要保留,可以放在COOKIE中
「勤工儉學計劃」,給你一個真正0元學習IT技術的機會!
http://www.ujiuye.com/zt/qgjx/?wt.bd=fq37300j
找工作太難?不是你不行,我們來幫你!
http://www.ujiuye.com/zt/jyfc/?wt.bd=fq37300j
交流群:345648424


※hibernate之映射文件VS映射註解
※最小生成樹之Prim演算法和Kruskal演算法
※殺馬特——曾經自詡「貴族」,如今被人消費
TAG:IT優就業 |
※Fragment 番外篇——TabLayout+ViewPager+Fragment
※The Weeknd和Bella Hadid又分手了!北美意難忘番外篇?
※Snake Eyes 將成為《G.I. Joe》系列電影番外篇主角
※華為P20登頂DxOMark Mobile榜單的故事——番外篇
※flowers新刊推出海街diary番外篇和香蕉魚插圖日曆
※flowers新刊推出「海街diary」番外篇和「香蕉魚」插圖的2019日曆
※《偶像大師》番外篇《偶像大師 SideM 有理由mini》完結
※轉帖:CC機設番外篇 重裝轟鳴 一騎當千!SHF 蝙蝠摩托 Bat Pod
※造型特輯 | 番外篇 :澳門95後潮搭 Supreme。
※「BigBang」「新聞」190627 Ds house 第十五集及金澤一日游番外篇,26日上線啦??
※強森發ins:"速激"番外篇殺青!
※吉田秋生「海街diary」最終第9捲髮售,收錄番外篇
※<>里最火點心之番外篇:蛋黃酥
※假面騎士時王確定是decade番外篇,王小明失憶的原因找到了
※Switch第八世代《寶可夢》情報都在這!——「寶可夢」故事番外篇
※2018年VR/AR十大關鍵詞(番外篇):移動AR
※陰陽師不止遊戲BUG滿天飛,番外篇的BUG也是一籮筐啊
※LIAO家早餐桌#番外篇-花未謝,我已等到你,男人的早餐
※「速激」系列番外篇來襲,強森&斯坦森重拳出擊!相愛相殺。
※CEO日記——番外篇 我是話外音