小编典典

使用请求模块,如何处理请求响应中的“ set-cookie”?

python

我试图打开登录页面(GET),获取网络服务器提供的cookie,然后提交用户名和密码对以登录网站(POST)。

看着这个Stackoverflow问题/答案,我认为我会做以下事情:

import requests
import cookielib


URL1 = 'login prompt page'
URL2 = 'login submission URL'
jar = cookielib.CookieJar()

r = requests.get(URL1, cookies=jar)
r2 = requests.post(URL2, cookies=jar, data="username and password data payload")

但是,标头中r有一个set-cookie,但该jar对象中没有改变。实际上,jar链接问题的回答将表明没有内容被填充。

我在代码中通过使用标头字典来解决此问题,并在执行GET或POST之后使用此set-cookie标头处理:

headers['Cookie'] = r.headers['set-cookie']

然后在请求方法中传递标头。这是正确的,还是有更好的方法来应用set-cookie


阅读 438

收藏
2021-01-20

共1个答案

小编典典

忽略cookie罐,让我们requests为您处理cookie。改用会话对象,它将保留cookie并将其发送回服务器:

with requests.Session() as s:
    r = s.get(URL1)
    r = s.post(URL2, data="username and password data payload")
2021-01-20