如何在Python请求中使用cookie
问题描述:
我正在尝试登录到页面并访问页面中的另一个链接。如何在Python请求中使用cookie
payload={'username'=<username>,'password'=<password>}
with session() as s:
r = c.post(<URL>, data=payload)
print r
print r.content
这是给我一个“405不允许”的错误。 我使用Chrome开发人员工具检查了post方法的详细信息,并可以看到api(URL/api/auth)。 我发布到该URL与有效载荷,它正在工作,我得到的响应类似于我在开发人员可以看到的。
不幸的是,当登录后尝试“获取”另一个网址时,我仍然从登录页面获取内容。 为什么登录不会粘住?我应该使用Cookie吗? 我是一个新手,所以我真的不知道如何使用cookie。
答
从documentation:从响应
-
帮助获取Cookie
url = 'http://example.com/some/cookie/setting/url' r = requests.get(url) r.cookies
{'example_cookie_name': 'example_cookie_value'}
-
给饼干回服务器上的后续请求
url = 'http://httpbin.org/cookies' cookies = dict(cookies_are='working') r = requests.get(url, cookies=cookies)`
答
您可以使用会话对象。它存储的cookie,所以你可以提出请求,它处理的饼干给你
s = requests.Session()
# all cookies received will be stored in the session object
s.post('http://www...',data=payload)
s.get('http://www...')
文档:http://docs.python-requests.org/en/latest/user/advanced/
您也可以将Cookie数据保存到外部文件,然后重新装入他们保持会话每次运行脚本时无需登录:
谢谢。实际上,似乎没有创建的Cookie。我检查了请求标题,看不到任何'cookies'。同时,在响应标题中创建一个cookie。如果没有cookie,我如何制作登录棒。 – user1474157
认证cookie的正常流程是:(1)当您提交登录表单时,您会在响应头文件中收到一个cookie。 (2)在后续页面请求中,将Cookie添加到请求标头。 –