python中requests模擬登錄的三種方式(攜帶cookie/session進行請求網(wǎng)站)
一,cookie和session的區(qū)別
cookie在客戶的瀏覽器上,session存在服務(wù)器上cookie是不安全的,且有失效時間session是在cookie的基礎(chǔ)上,服務(wù)端設(shè)置session時會向瀏覽器發(fā)送設(shè)置一個設(shè)置cookie的請求,這個cookie包括session的id當(dāng)訪問服務(wù)端時帶上這個session_id就可以獲取到用戶保存在服務(wù)端對應(yīng)的session
二,爬蟲處理cookie和session
帶上cookie和session的好處:能夠請求到登錄后的界面
帶上cookie和session的弊端:一個cookie和session往往和一個用戶對應(yīng),訪問太快容易被服務(wù)器檢測出來爬蟲
不需要cookie的時候盡量不要用
三,處理session,cookie請求
1,cookie請求方式
1.1 直接使用瀏覽器抓包到的現(xiàn)有的cookie進行訪問網(wǎng)站: 放在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)
當(dāng)然也可以在發(fā)送get請求時加上cookies的字典參數(shù):
Cookie='csrftoken=JfnuMOvgMGZTxtCjvgfZ…6246vb2; username=chengyangkj'
但是接受的參數(shù)是字典類型的,這就需要我們適用字符串分割方法把cookie字符串轉(zhuǎn)為字典形式:
Cookie='csrftoken=JfnuMOvgMGZTxtCjvgfZ…6246vb2; username=chengyangkj'cookies={i.split('=')[1]:i.split('=')[1] for i in Cookie.split('; ')} #先使用for循環(huán)遍歷Cookie以”; “(分號和空格)分開的列表 再分別獲取i以等號分割的列表的[0] [1] 位置填入 字典鍵 和值的位置r=request.get(url,headers=header,cookies=cookies)
適用于cookie過期時間比較長的網(wǎng)站
2.session請求方式request提供了一個一個叫做session的類,來實現(xiàn)客戶端和服務(wù)端的會話保持 使用方法:1.實例化一個session對象2.讓session發(fā)送get或post請求3.再使用session訪問只有登錄之后才能訪問的網(wǎng)站,這時候session會自動帶上服務(wù)器保存在其中的信息進行訪問
session=request.session() #實例化session對象response=session.get(url,header) #使用session對象發(fā)送get請求 就能獲取服務(wù)端設(shè)置的session對象
到此這篇關(guān)于python中requests模擬登錄的三種方式(攜帶cookie/session進行請求網(wǎng)站)的文章就介紹到這了,更多相關(guān)python requests模擬登錄 內(nèi)容請搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!
相關(guān)文章:
1. 如何用python開發(fā)Zeroc Ice應(yīng)用2. ASP錯誤捕獲的幾種常規(guī)處理方式3. python 用遞歸實現(xiàn)通用爬蟲解析器4. npm下載慢或下載失敗問題解決的三種方法5. python軟件測試Jmeter性能測試JDBC Request(結(jié)合數(shù)據(jù)庫)的使用詳解6. .NET 中配置從xml轉(zhuǎn)向json方法示例詳解7. ASP編碼必備的8條原則8. python基于opencv批量生成驗證碼的示例9. python用pyecharts實現(xiàn)地圖數(shù)據(jù)可視化10. 使用Spry輕松將XML數(shù)據(jù)顯示到HTML頁的方法
