无法使用Python中的请求库登录

2024-06-16 15:01:45 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图打开这个website,并使用python中的requests库访问仪表板的信息。这是一种网络垃圾,但问题是我无法登录。我尝试了很多不同的方法来发布我的登录凭证,但是到目前为止没有任何效果。在

网站-https://www.handy.com/login

登录HTML-<input autofocus="autofocus" class="string email required" id="user_session_email" name="user_session[email]" required="required" size="50" type="email">

密码HTML-<input class="password required" id="user_session_password" name="user_session[password]" required="required" size="50" type="password">

代码:

首先,我尝试使用用户名和密码的name属性

import requests
url = "https://www.handy.com/login"
payload = {"user_session[email]": "email or username", "user_session[password]": "password"}
r = requests.post(url, data=payload)
print r.status_code
print r.reason

也尝试使用username and password的id属性,但问题是相同的。状态代码是500,原因是Internal Server Error。我知道如何创建持久性会话,但如果你能帮助我登录网站,将不胜感激。在


Tags: namehttpscomid网站emailsessionhtml
1条回答
网友
1楼 · 发布于 2024-06-16 15:01:45

首先,当需要身份验证并且必须为进一步的请求维护会话时请求.会话对象是这样做的预期方式。在

这包括创建一个session对象并使用它发送POST请求。在

会话=请求.会话() r=会话.post(url,data=有效负载)

另一个问题是,您发送的有效负载与浏览器不同(或者,更重要的是,正如服务器期望的那样),这就是内部服务器错误所指示的。在

如果您使用的是Firefox,您可以使用Ctrl-Shift-Q打开网络监视器窗口,选择浏览器发送登录详细信息时发出的POST请求,然后转到“params”选项卡,您将看到如下内容:

enter image description here

因此,您首先需要做的是使用session对象向登录页面发出GET请求。从您刚刚收到的这个请求的HTML中,您需要解析authenticity_token。然后,您可以使用此令牌以及电子邮件和密码发出对站点进行身份验证的POST请求。在

相关问题 更多 >