爬蟲cookies詳解

cookies簡介

cookie是什麼?

Cookie,有時也用其複數形式 Cookies,指某些網站爲了辨別用戶身份、進行 session 跟蹤而儲存在用戶本地終端上的數據(一般通過加密)。定義於 RFC2109 和 2965 中的都已廢棄,最新取代的規範是 RFC6265[1]。Cookie其實就是瀏覽器緩存。數據庫

cookie的生命週期

  1. 會話cookie:沒有設置expires(是個時間戳)的,瀏覽器(session)關閉後,就自動失效
  2. 持久cookie:設置了expires的,根據設置的失效時間決定(expires時間是能夠進行修改的, 可是不少網站會作防止修改的設置)

cookie具備的屬性

  • name:爲一個cookie的名稱。
  • value:爲一個cookie的值。
  • domain:爲能夠訪問此cookie的域名,譬如www.baidu.com:baidu.com就是頂級域名

域名的劃分:http://aaa.bbb.secode.first.com,每個點劃分爲一個域名,域名從後向前一次爲頂級、一級、二級等瀏覽器

  1. 非頂級域名,如二級域名或者三級域名,設置的cookie的domain只能爲頂級域名或者二級域名或者三級域名自己,不能設置其餘二級域名的cookie,不然cookie沒法生成。
  2. 頂級域名只能設置domain爲頂級域名,不能設置爲二級域名或者三級域名,不然cookie沒法生成。
  3. 二級域名能讀取設置了domain爲頂級域名或者自身的cookie,不能讀取其餘二級域名domain的cookie。因此要想cookie在多個二級域名中共享,須要設置domain爲頂級域名,這樣就能夠在全部二級域名裏面或者到這個cookie的值了。
  4. 頂級域名只能獲取到domain設置爲頂級域名的cookie,其餘domain設置爲二級域名的沒法獲取。

總結一下:域名具備繼承性,只能使用其自身或其父輩的域名,不能使用其子域名或者兄弟域名。例如:
a.b.c.d.com
a.b.x.d.com
c可使用domain爲d.com或者c.d.com的域名cookie,不能使用x.d.com的域名或者b.c.d.com,這裏你們作好了解就好了,碰到這種狀況知道有這麼個狀況就行,通常咱們須要關注的不多。緩存

  • path:爲能夠訪問此cookie的頁面路徑。 好比www.jianshu.com/u/680e0e38ddc9,path就是/u/680e0e38ddc9,那麼只有/u/680e0e38ddc9路徑下的頁面能夠讀取此cookie。
  • expires/Max-Age :爲此cookie超時時間。若設置其值爲一個時間(一個時間戳),那麼當到達此時間後,此cookie失效。
    不設置的話默認值是Session,意思是cookie會和session一塊兒失效。
    當瀏覽器關閉(不是瀏覽器標籤頁,而是整個瀏覽器) 後,此cookie失效。
  • Size: 此cookie大小。
  • http: cookie的httponly屬性。若此屬性爲true,則只有在http請求頭中會帶有此cookie的信息,
    而不能經過document.cookie來訪問此cookie。
  • secure : boolean型,默認爲false,設置是否只能經過https來傳遞此cookie

咱們作爬蟲重點關注name和value。服務器

cookie應用

  1. 以任何方式,如瀏覽器、selenium、封包方式等,得到對應的cookies
  2. 將cookies保存,能夠是在內存、文件、數據庫等
  3. 在你想要應用已有的cookie的 項目 中,已各類方式:文件、數據庫、網絡等,獲取到對應的cookie,而後進行設置,接着就能夠訪問對應的資源了

實際應用:微信

  1. 有幾臺專門的服務器,進行登陸操做,全部帳號保存在數據庫,由這些專門登陸的服務器進行登陸操做,登陸成功後,保存cookies到數據庫
  2. 有專門的應用服務器,從數據庫讀取cookies,進行相應的業務操做,這種服務器不處理登陸操做

PS:cookie

  1. cookie的應用,必須是服務器支持不一樣的session可使用同一個cookie
  2. expires是一個客戶端和服務器的君子約定,瀏覽器檢測到失效了,就不會讀取這個cookie,大部分網站都不會檢測這個cookie失效,部分要求嚴格的網站是會檢測的,和服務器時間進行比對,判斷是否失效。
  3. cookie都是由服務器設置的,你客戶端設置沒意義,服務器不會進行驗證,經過response的headers中set-cookie設置

留在最後的話:並非全部網站都適合保存cookies進行登陸,怎麼檢查哪些網站可使用保存cookies進行登陸呢?咱們能夠在瀏覽器中進行登陸操做,登陸成功後,關閉瀏覽器,而後從新打開瀏覽器之後訪問此網站,看看是否處於登陸狀態,若是是登陸狀態,那麼這個網站很大程度上是可使用cookies進行訪問操做的。網絡


若是你以爲個人文章還能夠,能夠關注個人微信公衆號,查看更多實戰文章:Python爬蟲實戰之路
也能夠掃描下面二維碼,添加個人微信公衆號session

公衆號

讚揚碼

相關文章
相關標籤/搜索