爬蟲cookies詳解

2021-08-20 05:25:55 字數 1630 閱讀 6064

cookie,有時也用其複數形式 cookies,指某些**為了辨別使用者身份、進行 session 跟蹤而儲存在使用者本地終端上的資料(通常經過加密)。定義於 rfc2109 和 2965 中的都已廢棄,最新取代的規範是 rfc6265[1]。cookie其實就是瀏覽器快取。

會話cookie:沒有設定expires(是個時間戳)的,瀏覽器(session)關閉後,就自動失效

網域名稱的劃分:每乙個點劃分為乙個網域名稱,網域名稱從後向前一次為頂級、一級、二級等。

非頂級網域名稱,如二級網域名稱或者**網域名稱,設定的cookie的domain只能為頂級網域名稱或者二級網域名稱或者**網域名稱本身,不能設定其他二級網域名稱的cookie,否則cookie無法生成。

頂級網域名稱只能設定domain為頂級網域名稱,不能設定為二級網域名稱或者**網域名稱,否則cookie無法生成。

二級網域名稱能讀取設定了domain為頂級網域名稱或者自身的cookie,不能讀取其他二級網域名稱domain的cookie。所以要想cookie在多個二級網域名稱中共享,需要設定domain為頂級網域名稱,這樣就可以在所有二級網域名稱裡面或者到這個cookie的值了。

頂級網域名稱只能獲取到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,這裡大家做好了解就行了,碰到這種情況知道有這麼個情況就行,一般我們需要關注的很少。

我們做爬蟲重點關注name和value。

以任何方式,如瀏覽器、selenium、封包方式等,獲得對應的cookies

將cookies儲存,可以是在記憶體、檔案、資料庫等

在你想要應用已有的cookie的 專案 中,已各種方式:檔案、資料庫、網路等,獲取到對應的cookie,然後進行設定,接著就可以訪問對應的資源了

實際應用:

1. 有幾台專門的伺服器,進行登入操作,所有賬號儲存在資料庫,由這些專門登入的伺服器進行登入操作,登入成功後,儲存cookies到資料庫

2. 有專門的應用伺服器,從資料庫讀取cookies,進行相應的業務操作,這種伺服器不處理登入操作

ps:

1. cookie的應用,必須是伺服器支援不同的session可以使用同乙個cookie

2. expires是乙個客戶端和伺服器的君子約定,瀏覽器檢測到失效了,就不會讀取這個cookie,大部分**都不會檢測這個cookie失效,部分要求嚴格的**是會檢測的,和伺服器時間進行比對,判斷是否失效。

3. cookie都是由伺服器設定的,你客戶端設定沒意義,伺服器不會進行驗證,通過response的headers中set-cookie設定

留在最後的話:並不是所有**都適合儲存cookies進行登入,怎麼檢查哪些**可以使用儲存cookies進行登入呢?我們可以在瀏覽器中進行登入操作,登入成功後,關閉瀏覽器,然後重新開啟瀏覽器以後訪問此**,看看是否處於登入狀態,如果是登入狀態,那麼這個**很大程度上是可以使用cookies進行訪問操作的。

爬蟲 中 Cookies的處理

儲存客戶端的相關狀態手動處理 在抓包工具中捕獲cookie,將其封裝在headers中 應用場景 cookie沒有有效時長且不是動態變化 自動處理 使用session機制 使用場景 動態變化的cookie session物件 該物件和requests模組用法幾乎一致.如果在請求的過程中產生了cook...

Cookies的Expires屬性詳解

response.cookies cookiename expires中expires的屬性如下 response.cookies cookiename expires 1 表示網頁顯示之後過期 response.cookies cookiename expires 0 立即過期 response....

Python3爬蟲連續獲取Cookies的方法

第一次獲取cookies headers url response requests.get url cookies response.cookies.get dict print cookies 第二次獲取cookies 跳過ssl驗證證書 import ssl 設定忽略ssl驗證 宣告乙個coo...