使用python自动登录网站

时间:2017-08-07 11:56:10

标签: python-2.7 web-scraping autologin

我是python的新手,我尝试自动登录网站,然后尝试下载文件。

我尝试过以下方法但无法登录。

方法

'r'

在此处填写您的详细信息以发布到登录表单。

val intent = Intent(this, Page2::class.java)
startActivity(intent)

使用'使用'确保会话上下文在使用后关闭。

import requests

我将非常感谢任何帮助,我使用的是python 2.7

2 个答案:

答案 0 :(得分:0)

我假设你有正确的网址提交表格。我从该网站注意到的一件事是

<input type="text" name="USERNAME" id="username" title="please enter your username here" class="input" style="width: 14em;">

我不确定他们是如何编写服务器端代码的,但您可以尝试使用name属性包含所有大写字符而不是id属性, 所以你的负载变成: updated like below 更新,表单中仍然有一个最后隐藏的字段,也许你应该包含它(url包含option值,但它不在POST请求中,服务器端将无法识别它,你还应该包括用户代理字符串,以防万一:

payload = {
    'USERNAME': 'xxxxxx',
    'PASSWORD': 'xxxxxxx',
    'option': 'login'
}
headers = {'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36'}
def test():
  with requests.Session() as s:
      p = s.post('https://service.rl360.com/scripts/customer.cgi?option=login',data=payload)

答案 1 :(得分:0)

首先,您没有给出错误/结果的任何指示。你能详细说明它的回归/说什么吗?这可能会进一步说明问题,但我认为你的第二个请求(对myAccount.php)只是说“未经授权”。

你必须记住,HTTP请求是完全无状态的,如果你发出两个请求,第二个请求对第一个请求一无所知......除非使用cookie。

从我所知道的,仅仅因为你可能已经在第一个请求上正确认证了,对myAccount.php的第二个请求对第一个认证请求没有任何概念。

您发出的第一个请求可能会返回某种cookie或令牌,表明您现在已经过身份验证。然后,您需要在下一次对经过身份验证的URL的请求中包含该令牌,以便服务器知道您可以继续。

尝试在p中转储完整的回复,以查看已返回的内容。您也可以使用开发人员工具在Chrome中执行此操作 - &gt;网络选项卡。勾选Preserve Log,然后手动登录该站点。然后回过头看看对你的POST的反应 - 希望你会看到一些东西,表明你现在已经过身份验证。然后,您需要在下一个请求中复制它。

相关问题