Python请求:使用POST和Cookies登录网站

时间:2016-12-27 19:04:26

标签: python post cookies python-requests

我尝试了几个小时,但似乎没有任何工作。我正在尝试登录网页下载一些数据。每次登录都需要一个新的cookie(PHPSESSID),因为它在浏览连接结束时到期。我尝试了以下方法:

import requests

payload = {'user':'myusername', 'password':'mypassword'}
url = 'blahblah.blah'

with requests.Session() as s:
    r = s.get(url)
    cookie = {'PHPSESSID': r.cookies['PHPSESSID']}
    r = s.post(url, data=payload, cookies=cookie)

然而,这会重定向到登录页面,我认为这意味着登录失败。然后,我尝试通过Chrome登录,并手动获取Cookie。当我这样做时,我可以使用该cookie来使用请求登录。

with requests.Session() as s:
    cookie = {'PHPSESSID': 'some value obtained by logging in through Chrome and copying the cookie value'}
    r = s.post(url, cookies=cookie, data=payload)

以上工作完美无缺。

我不确定我在原始代码中做错了什么。任何帮助表示赞赏!

1 个答案:

答案 0 :(得分:1)

import requests

payload = {'user':'myusername', 'password':'mypassword'}
url = 'blahblah.blah'

with requests.Session() as s:
    r = s.post(url, data=payload)
    cookie = {'PHPSESSID': requests.utils.dict_from_cookiejar(s.cookies)['PHPSESSID']}

之后,您可以将cookie用于后续请求 您正在登录,我认为这应该是您应该提出的post请求。

相关问题