1. 程式人生 > 程式設計 >python中requests模擬登入的三種方式(攜帶cookie/session進行請求網站)

python中requests模擬登入的三種方式(攜帶cookie/session進行請求網站)

一,cookie和session的區別

cookie在客戶的瀏覽器上,session存在伺服器上
cookie是不安全的,且有失效時間
session是在cookie的基礎上,服務端設定session時會向瀏覽器傳送設定一個設定cookie的請求,這個cookie包括session的id當訪問服務端時帶上這個session_id就可以獲取到使用者儲存在服務端對應的session

二,爬蟲處理cookie和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的類,來實現客戶端和服務端的會話保持
使用方法:
1.例項化一個session物件
2.讓session傳送get或post請求
3.再使用session訪問只有登入之後才能訪問的網站,這時候session會自動帶上伺服器儲存在其中的資訊進行訪問

session=request.session() #例項化session物件
response=session.get(url,header) #使用session物件傳送get請求 就能獲取服務端設定的session物件

到此這篇關於python中requests模擬登入的三種方式(攜帶cookie/session進行請求網站)的文章就介紹到這了,更多相關python requests模擬登入 內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!