一、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和cookiesession:是會話過程中,伺服器用來記錄特定使用者會話的資訊
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...