向请求会话添加cookie

时间:2020-07-02 13:03:05

标签: python session cookies

我要启动requests.Session()并添加一个cookie,然后再开始第一个请求。我希望有一个Cookie参数或类似的方法

def session_start()
    self.session = requests.Session(cookies=['session-id', 'xxx'])

def req1():
    self.session.get('example.org')

def req2():
    self.session.get('example2.org')

但是这行不通,我只能在cookies方法中提供.get()。我是否需要在session_start()中执行“虚拟请求”,或者在开始实际请求之前是否可以准备cookie?

2 个答案:

答案 0 :(得分:0)

来自documentation

但是请注意,即使使用会话,方法级参数也不会在请求中保留。此示例仅发送带有第一个请求的cookie,而不发送第二个请求:

s = requests.Session()

r = s.get('https://httpbin.org/cookies', cookies={'from-my': 'browser'})
print(r.text)
# '{"cookies": {"from-my": "browser"}}'

r = s.get('https://httpbin.org/cookies')
print(r.text)
# '{"cookies": {}}'

答案 1 :(得分:0)

因此会话对象将保留 url 请求自己设置的任何 cookie,但是如果您提供 cookie 作为参数,它不会在下一个请求中保留。

您可以从文档中手动添加仍然存在的 cookie: “如果您想手动将 cookie 添加到您的会话,请使用 Cookie 实用程序函数来操作 Session.cookies。” https://requests.readthedocs.io/en/master/user/advanced/#session-objects

关于如何操作 cookie 的链接:https://requests.readthedocs.io/en/master/api/#api-cookies