无法使用请求登录网站

时间:2016-07-12 12:29:13

标签: python python-3.x python-requests

首先,这是我的代码:

import requests

payload = {'name':'loginname',
        'password': 'loginpassword'}

requests.post('http://myurl/auth',data=payload,verify=False)
rl = requests.get('http://myurl/dashboard',verify=False)

print(rl.text)

我的问题:

我收到状态代码200,表示登录成功。 但是当我尝试访问受保护的页面http://myurl/dashboard时,我的输出不适合。它向我展示了登录的第一页,我不明白为什么。

我知道有很多这样的问题,但我研究了每个答案和文档,但我没有得到它。

任何帮助都会非常好。这让我感到很沮丧。提前谢谢!

1 个答案:

答案 0 :(得分:2)

您需要使用Session对象让requests跟踪您的Cookie,例如在requests.post登录操作后设置的登录Cookie。引用[那里的第一个例子:

s = requests.Session()

s.get('http://httpbin.org/cookies/set/sessioncookie/123456789')
r = s.get('http://httpbin.org/cookies')

print(r.text)
# '{"cookies": {"sessioncookie": "123456789"}}'

所以在你的情况下:

import requests

payload = {'name': 'loginname',
           'password': 'loginpassword'}

s = requests.Session()
r1 = s.post('http://myurl/auth', data=payload, verify=False)
if r1.status_code == 200:  # not necessary if you are sure it would login successfully
    r2 = s.get('http://myurl/dashboard', verify=False)