學習資料:https://blog.csdn.net/qq_38441692/article/details/84781033
一,cookie和session的區別
cookie在客戶的瀏覽器上,session存在服務器上
cookie是不安全的,且有失效時間
session是在cookie的基礎上,服務端設置session時會向瀏覽器發送設置一個設置cookie的請求,這個cookie包括session的id當訪問服務端時帶上這個session_id就可以獲取到用戶保存在服務端對應的session
二,爬蟲處理cookie和session
帶上cookie和session的好處:
帶上cookie和session的弊端:
不需要cookie的時候盡量不要用
三,處理session,cookie請求
1,cookie請求方式
1.1 直接使用瀏覽器抓包到的現有的cookie進行訪問網站:
放在header字典里面
header={
"User-Agent":"Mozilla/5.0 (X11; Ubuntu; Linu…) Gecko/20100101 Firefox/64.0",
"Cookie":"csrftoken=JfnuMOvgMGZTxtCjvgfZ…6246vb2; username=chengyangkj",
}
r=request.get(url,headers=header)
當然也可以在發送get請求時加上cookies的字典參數:
Cookie="csrftoken=JfnuMOvgMGZTxtCjvgfZ…6246vb2; username=chengyangkj"
但是接受的參數是字典類型的,這就需要我們適用字符串分割方法把cookie字符串轉為字典形式:
Cookie="csrftoken=JfnuMOvgMGZTxtCjvgfZ…6246vb2; username=chengyangkj"
cookies={i.split("=")[1]:i.split("=")[1] for i in Cookie.split("; ")}
#先使用for循環遍歷Cookie以”; “(分號和空格)分開的列表 再分別獲取i以等號分割的列表的[0] [1] 位置填入 字典鍵 和值的位置
r=request.get(url,headers=header,cookies=cookies)
適用於cookie過期時間比較長的網站
2.session請求方式
request提供了一個一個叫做session的類,來實現客戶端和服務端的會話保持
使用方法:
實例化一個session對象
讓session發送get或post請求
再使用session訪問只有登錄之后才能訪問的網站,這時候session會自動帶上服務器保存在其中的信息進行訪問
session=request.session() #實例化session對象
response=session.get(url,header) #使用session對象發送get請求 就能獲取服務端設置的session對象、
————————————————
版權聲明:本文為CSDN博主「蔣程揚」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/qq_38441692/java/article/details/84781033