1

我试图打开这个website,并使用Python中的requests库访问仪表板信息。这是网页浏览,但问题是我无法登录。我尝试了一堆不同的方法来发布我的登录凭证,但到目前为止没有任何工作。无法使用Python中的请求库登录

网站 - 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。我知道如何创建永久性会话,但如果您可以帮助我在网站上登录,会很感激。

回答

1

首先,如果需要身份验证,并且必须为进一步的请求维护会话,则requests.session对象是预期的方式。

这涉及到创建会话对象并使用它发送您的POST请求。

会话= requests.session() R = session.post(URL,数据=有效载荷)

你将有另一个问题是,你不发送相同的有效载荷为您的浏览器将(或者,更重要的是,因为服务器期望),这就是内部服务器错误所指示的。

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

enter image description here

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