Python POST请求,无需重新加载页面

时间:2017-11-02 12:12:00

标签: python post python-requests

我正在尝试使用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)

2 个答案:

答案 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中。

在这种情况下,您应该在第二个帖子请求中发送它们。