requests---session簡介

  http協議是無狀態的,也就是每一個請求都是獨立的。那麼登陸後的一系列動做,都須要用cookie來驗證身份是不是登陸狀態,爲了高效的管理會話,保持會話,因而就有了session瀏覽器

 

session簡介

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

 

session登陸

格式:cookie

# 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.舉個例子,模擬百度登陸場景session

2.查看登陸後百度帳號的cookies值,通過觀察發現是由」BAIDUID「和"BDUSS"函數

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

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

# 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("登陸失敗")

執行結果:

登陸成功

這個時候就能夠作一些登陸事後的操做。spa

session模擬瀏覽器,瀏覽器中登陸狀態,只要瀏覽器不退出,就能夠繼續作其餘的操做code

相關文章
相關標籤/搜索