python cookie和session及其運用

2021-10-06 16:26:08 字數 2990 閱讀 4306

一、cookie及其用法

cookie是使用者登入後響應資訊(response headers)中的資料。是伺服器為了標記使用者,儲存在使用者本地的資料。裡面儲存了使用者的登入資訊,具有一定的時效性,會失效。

response [200]:意味著伺服器接收到並響應了登入請求,登入成功。

提取cookie:

cookie = response.cookies

呼叫cookie:

comment = requests.post(url_comment,headers=headers,data=data_comment,cookies=cookie)

二、session及其用法

[外鏈轉存失敗,源站可能有防盜煉機制,建議將儲存下來直接上傳(img-ayi6awq0-1590902439200)(en-resource://database/2389:0)]

會話:用瀏覽器上網到關閉瀏覽器的過程

session:是會話過程中,伺服器用來記錄特定使用者會話的資訊

session和cookie

cookie中儲存著session的編碼資訊,session中又儲存了cookie的資訊。

當瀏覽器第一次訪問購物網頁時,伺服器會返回set cookie的字段給瀏覽器,而瀏覽器會把cookie儲存到本地。

等瀏覽器第二次訪問這個購物網頁時,就會帶著cookie去請求,而因為cookie裡帶有會話的編碼資訊,伺服器立馬就能辨認出這個使用者,同時返回和這個使用者相關的特定編碼的session。

import requests

session = requests.session()

#用requests.session()建立session物件,相當於建立了乙個特定的會話,幫我們自動保持了cookie。

url_login = ''

headers =

data_login =

session.post(url_login,headers=headers,data=data_login)

url_comment = ''

data_comment =

comment = session.post(url_comment,headers=headers,data=data_comment)

print(comment)

三、儲存和讀取cookie

requestscookiejar是cookie物件的類,

cookie本身的內容有點像乙個列表,裡面又有點像字典的鍵與值。

儲存cookie:

將cookiejar轉換成字串後儲存為檔案形式。

讀取cookie:

[外鏈轉存失敗,源站可能有防盜煉機制,建議將儲存下來直接上傳(img-2mlrefgj-1590902439206)(en-resource://database/2393:0)]

四、優化

cookie存在過期問題:

cookie是否過期,可以通過最後的狀態碼是否等於200來判斷。在**裡新增條件判斷,如果cookie過期,重新獲取新的cookie。

import requests

import json

session = requests.session()

headers =

def cookie_read(): # cookie讀取。

cookie_txt = open('cookie_kaikeba.txt', 'r')

cookie_dict = json.loads(cookie_txt.read())

cookie = requests.utils.cookiejar_from_dict(cookie_dict)

return (cookie)

def sign_in():

url_login = ''

data_login =

session.post(url_login, headers=headers, data=data_login)

# cookie儲存。

cookie_dict = requests.utils.dict_from_cookiejar(session.cookies)

cookie_str = json.dumps(cookie_dict)

f = open('cookie_kaikeba.txt', 'w')

f.write(cookie_str)

f.close()

url_comment = ''

data_comment =

return (session.post(url_comment, headers=headers, data=data_comment))

try:

session.cookies = cookie_read()

except filenotfounderror:

sign_in()

session.cookies = cookie_read()

num = write_message()

if num.status_code == 200:

print('成功啦!')

else:

sign_in()

session.cookies = cookie_read()

num = write_message()

http協議

計算機之所以需要cookie和session,是因為http協議是無狀態的協議。

無狀態:一旦瀏覽器和伺服器之間的請求和響應完畢後,兩者會立馬斷開連線,恢復成無狀態。

影響:伺服器永遠無法辨認,也記不住使用者的資訊。

cookie不僅僅能實現自動登入,因為它本身攜帶了session的編碼資訊,**還能根據cookie,記錄你的瀏覽足跡,從而知道你的偏好,只要再加以推薦演算法,就可以實現給你推送定製化的內容。

讓python cookie支援特殊字元

先對cookie做下簡單的介紹 cookie的作用 tcp協議能夠通過三次握手建立連線。client傳送的多次請求能夠通過控制代碼維護同乙個連線。可是http協議是一種無狀態的協議。對於瀏覽器傳送的多次請求,server是無法區分是不是同乙個瀏覽器傳送的。這樣就須要使用額外的資料維護會話。服務端收到...

python cookie反爬處理的實現

cookies的處理 作用儲存客戶端的相關狀態 在爬蟲中如果遇到了cookie的反爬如何處理?手動處理 在抓包工具中捕獲cookie,將其封裝在headyfjelvers中 應用場景 cookie沒有有效時程式設計客棧長且不是動態變化 自動處理 使用session機制 使用場景 動態變化的cooki...

OC語言description方法和sel

一 description方法 description方法包括類方法和物件方法。nsobject 類所包含 一 基本知識 description 物件方法 使用nslog和 輸出某個物件時,會呼叫物件的 description 方法,並拿到返回值進行輸出。description 類方法 使用nslo...