python保持session和cookies以及header带参数访问站点

[python] 2024-03-28 圈点474

摘要:python保持session和cookies以及header带参数访问站点

设置session并取session示例,设置和取session的代码自己实现:

session = requests.Session()
session.get('http://www.xoxxoo.com/session/setss/abc/123')
response = session.get("http://www.xoxxoo.com/session")
print(type(response))               # <class 'requests.models.Response'>
print(response.text)                # {"cookies":{"abc":"123"}}


在headers中带参数访问站点实例

s = requests.Session()
s.auth = ('user', 'pass')
s.headers.update({'x-test': 'true'})
# both 'x-test' and 'x-test2' are sent
s.get('http://www.xoxxoo.com/headers', headers={'x-test2': 'true'})


任何传递给请求方法的字典都会与已设置会话层数据合并。方法层的参数覆盖会话的参数。


注意,就算使用了同一会话,方法级别的参数也不会被跨请求保持。下面的例子只会和第一个请求发送 cookie ,而非第二个:

s = requests.Session()
r = s.get('http://www.xoxxoo.com/cookies', cookies={'from-my': 'browser'})
print(r.text)
# '{"cookies": {"from-my": "browser"}}'
r = s.get('http://www.xoxxoo.com/cookies')
print(r.text)
# '{"cookies": {}}'


所以如上方法可以是手动为会话添加 cookie,就使用 Cookie utility 函数 来操纵 Session.cookies。


会话还可以用作前后文管理器:

with requests.Session() as s:
    s.get('http://www.xoxxoo.com/cookies/set/sessioncookie/123456789')


这样就能确保 with 区块退出后会话能被关闭,即使发生了异常也一样


从字典参数中移除一个值有时会想省略字典参数中一些会话层的键。要做到这一点,只需简单地在方法层参数中将那个键的值设置为 None ,那个键就会被自动省略掉。






session  cookies  header  

感谢反馈,已提交成功,审核后即会显示