我试图打开登录页面(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链接问题的回答将表明没有内容被填充。
r
set-cookie
jar
我在代码中通过使用标头字典来解决此问题,并在执行GET或POST之后使用此set-cookie标头处理:
headers['Cookie'] = r.headers['set-cookie']
然后在请求方法中传递标头。这是正确的,还是有更好的方法来应用set-cookie?
忽略cookie罐,让我们requests为您处理cookie。改用会话对象,它将保留cookie并将其发送回服务器:
requests
with requests.Session() as s: r = s.get(URL1) r = s.post(URL2, data="username and password data payload")