我在使用python请求登录到this站点上的帐户时遇到问题。 登录页面是www.utahrealestate.com/auth/login。 登录凭证帖子转到www.utahrealestate.com/auth/authenticate。在
这是我尝试登录的过程(r是一个请求会话):
>>> login = r.post('http://www.utahrealestate.com/auth/authenticate', data={'login':'my_login','pass':'my_password'})
>>> login.text
u'{"error":"Username or password was invalid. Please try again or click on \\"Reset it\\" above to reset your password."}'
我知道登录凭据是正确的。我还知道这些字段名为login和pass,只是页面生成一些数字组合并将其附加到每个字段名中,但只有在我检查浏览器中的元素时才会这样做。在我的终端中,这些字段被简单地命名为login和pass。在
使用requests和BeautifulSoup,以下是我的终端中的登录元素:
^{pr2}$在浏览器中检查元素时如下所示:
<input id="login" type="text" tabindex="1" name="login_666832525">
password元素的构造类似,只是它的名称为:“pass”,其数字组合与末尾附加的登录字段相同。表单中似乎没有隐藏字段。 每次在浏览器中刷新页面时,字段名(login#############################。在
我假设我的登录问题源于我无法从字段名中复制数字。所以,我尝试在请求.get头来镜像我浏览器中的一个,但它似乎没有重现编号字段名。它与某种会话cookie相关吗?也许是我看到的那个小甜饼?或者这和字段名无关吗?在
编辑:
我发现了一个post请求,它在登录页面的get请求之后自动发送(posts to auth/登录.form/). 对这个post请求的响应提供了附加在字段名称后面的数字。然而,即使在将数字串传递给字段名之后,我仍然无法继续。在
form_id = u'418622340'
loginauth_post = r.post('http://www.utahrealestate.com/auth/authenticate/', headers=authpost_header, data={'login_'+form_id: 'my_login', 'pass_'+form_id: 'my_pass'})
我能解决这个问题。显然,我需要获取登录页面,然后向auth发送初始post请求/登录.form/使用通过获取登录页面提供的cookie。它使用需要附加到字段名称后的id号进行响应。然后,使用相同的cookie发送一个post请求进行身份验证。诀窍似乎是在头中包含了'X-NewRelic-ID'和'X-Requested-With'参数。在
试着写:
相关问题 更多 >
编程相关推荐