我正在尝试使用python的请求模块登录网页。
以下是该方案: 输入用户名密码并单击“提交”后,将获取响应网页,用户必须回答安全问题。
所以,
POST请求1 - 提交用户名,密码
回复1 - 包含安全问题的页面
这部分非常简单。
但是对于下一步,为了提交安全问题的答案,我将不得不再发一个帖子请求 - 我将不得不重新加载页面。但是一旦我重新加载,我最终会回到初始登录页面(使用用户名和密码字段)。
是否有解决方法?
编辑:我正在使用requests.Session()
对象来执行所有请求
这是代码
s = requests.Session()
login = {'username': username, 'password': password}
url = 'https://login.xyz.com'
r = s.post(url, data=login)
# r.url is also https://login.xyz.com
answers = {'question1': answer1, 'question2': answer2}
r = s.post(url, data=answers)
答案 0 :(得分:2)
您应该使用Session来保存您在登录后从服务器获得的cookie。
s = requests.Session()
s.post('first url')
s.post('second url')
请参阅此处的文档和示例:http://docs.python-requests.org/en/master/user/advanced/
答案 1 :(得分:1)
您是否检查过登录页面是否向您发送了一些sessionId?通常它们存储在HTTP cookie中。
在这种情况下,您应该在第二个帖子请求中发送它们。