requests.session 狀態進行狀態保持:
requests中的session類能夠自動處理發送請求獲取響應過程中產生的cookie。進而達到狀態保持的目的
request.session 的作用以及應用場景:
作用: 自動處理cookie,既下次請求會帶上前一次的cookie
應用場景: 自動處理連續多次請求過程中產生的cookie
request.session 的使用方法:
session實例在請求了一個網站后,對方服務器設置在本地的cookie會保存在session中,下一次使用session請求對方服務器的時候,會帶上前一次的cookie
示例代碼:
# coding=utf-8 import requests def login(): """ 用request.session模擬登錄一個網站,然后進行后續的操作 """ # 實例session session = requests.session() session.headers = { 'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36' } url1 = 'https://github.com/login' # 發送請求,獲取響應 res1 = session.get(url1).content.decode() # 登錄 url2 = 'https://github.com/session' # 組裝form表單的數據 data = { 'commit': '登入', 'authenticity_token': 'ivl8Ho7Ty2um4HnvcOySEwO4s2Vr \/ +iWBOzaeXFU0xQLcW6t17eZvNsDY7 \/ 4NkgB3eGXJoUGvCh814kduD8cOQ ==', 'login': 'zs', 'password': '123456', 'trusted_device': 'webauthn - support: supported', 'webauthn - iuvpaa - support': 'unsupported', 'return_to': '', 'allow_signup': '', 'client_id': '', 'integration': '', 'required_field_1b99': '', 'timestamp': '1612536784033', 'timestamp_secret': '1df9e1f53fd5f59d35b19eda9849947e332a0676d74eca272521e3f4afb24c49' } session.post(url2, data=data) if __name__ == '__main__': login()
