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()