requests---session簡介


  http協議是無狀態的,也就是每個請求都是獨立的。那么登錄后的一系列動作,都需要用cookie來驗證身份是否是登錄狀態,為了高效的管理會話,保持會話,於是就有了session

 

session簡介

  session是一種管理用戶狀態和信息的機制,與cookies的不同的是,session的數據是保存在服務器端。說的明白點就是session相當於一個虛擬的瀏覽器,在這個瀏覽器上處於一種保持登錄的狀態。

 

session登錄

格式:

# session 用法
 |  Basic Usage::
 |  
 |    >>> import requests
 |    >>> s = requests.Session()
 |    >>> s.get('https://httpbin.org/get')
 |    <Response [200]>
 |  
 |  Or as a context manager::
 |  
 |    >>> with requests.Session() as s:
 |    >>>     s.get('https://httpbin.org/get')
 |    <Response [200]>

1.舉個例子,模擬百度登錄場景

2.查看登錄后百度賬號的cookies值,經過觀察發現是由”BAIDUID“和"BDUSS"

3.導入requests模塊,使用session()函數

4.攜帶cookies進行請求,通過返回內容,判斷是否登錄成功。

# coding:utf-8
import requests
# 保持登錄狀態
s = requests.session()
url = 'https://www.baidu.com/'
# 請求頭
headers = {
     "User-Agent":"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.81 Safari/537.36"
}
r = s.post(url,headers=headers)
# 查看的cookies值
cooks = {
    "BDUSS":"xxxxxxx",
    "BAIDUID":"XXXXXXXX"
}
# 添加登錄所攜帶的cookies
c = requests.cookies.RequestsCookieJar()
c.set("BDUSS",cooks["BDUSS"])
c.set("BAIDUID",cooks["BAIDUID"])
s.cookies.update(c)
# 判斷是否登錄成功
r2 = s.get(url,headers=headers)
if '我在誰身旁' in r2.text:
    print('登錄成功')
else:
    print("登錄失敗")

執行結果:

登錄成功

這個時候就可以做一些登錄過后的操作。

session模擬瀏覽器,瀏覽器中登錄狀態,只要瀏覽器不退出,就可以繼續做其他的操作

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM