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

Python POST请求,无需重新加载页面,python,post,python-requests,Python,Post,Python Requests,我正在尝试使用python的请求模块登录到一个网页 以下是场景: 输入用户名密码并单击提交后,将获得响应网页,用户必须回答安全问题 所以 POST请求1-提交用户名、密码 答复1-包含安全问题的页面 这一部分很直截了当 但是下一步,为了提交安全问题的答案,我必须提出另一个post请求——为此我必须再次重新加载页面。但一旦我重新加载,我最终会返回初始登录页面(带有用户名和密码字段) 有解决办法吗 编辑:我正在使用requests.Session()对象来执行所有请求 这是密码 s = reques

我正在尝试使用python的请求模块登录到一个网页

以下是场景: 输入用户名密码并单击提交后,将获得响应网页,用户必须回答安全问题

所以

POST请求1-提交用户名、密码

答复1-包含安全问题的页面

这一部分很直截了当

但是下一步,为了提交安全问题的答案,我必须提出另一个post请求——为此我必须再次重新加载页面。但一旦我重新加载,我最终会返回初始登录页面(带有用户名和密码字段)

有解决办法吗

编辑:我正在使用
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)

您是否检查了登录页面是否向您发送了会话ID?通常它们存储在HTTP cookies中


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

您应该使用会话来保存登录后从服务器获得的cookie

s = requests.Session()
s.post('first url')
s.post('second url')

请参阅此处的文档和示例:

您的代码在哪里?您是否使用相同的
会话
?登录的结果很可能是一个cookie和重定向url。尝试在浏览器中运行整个登录操作,并捕获该页面上的网络流量(在Firefox或Chrome中,您可以在开发工具页面-F12-)中执行此操作。检查捕获的流量中的每个请求,然后尝试相应地自动化。如果我是正确的,那么操作顺序应该是:发布登录数据,获取响应,解析auth cookie的响应,使用包含cookie的新post请求跟随重定向。在您的示例中,尝试连接到目标网站而不禁用证书检查将导致错误,因为该网站的ssl证书CNAME无效(可能是自签名的或伪造的)。在向网站发送任何其他内容之前,您可能希望验证响应代码是否为200或更高。为什么-1?我认为我的回答有道理!很可能,这更适合作为注释。是的,我一直在使用
requests.Session()
,但它似乎不起作用。那么,除非您提供代码,否则很难告诉您任何具体的信息