您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

如何使用Python请求库禁用cookie处理?

如何使用Python请求库禁用cookie处理?

您可以通过定义Cookie政策来拒绝所有Cookie来做到这一点:

from http import cookiejar  # Python 2: import cookielib as cookiejar
class BlockAll(cookiejar.CookiePolicy):
    return_ok = set_ok = domain_return_ok = path_return_ok = lambda self, *args, **kwargs: False
    netscape = True
    rfc2965 = hide_cookie2 = False

(请注意,http.cookiejarAPI要求您定义一堆属性方法,如图所示。)

然后,在“请求”会话中设置Cookie策略:

import requests
s = requests.Session()
s.cookies.set_policy(BlockAll())

现在它将不存储或发送cookie:

s.get("https://httpbin.org/cookies/set?foo=bar")
assert not s.cookies

顺便说requests一句,如果您查看代码,则包中的便捷方法(而不是requests.Session对象上的便捷方法Session每次都会构造一个方法。因此,Cookie不会在单独的调用之间保留requests.get。但是,如果第一页设置cookie,然后发出HTTP重定向,则目标页面将看到cookie。(这是HTTPBin/cookies/set调用发生的情况,该调用重定向/cookies。)

因此,根据您要重定向的行为,您可能不需要执行任何特殊操作。比较:

>>> print(requests.get("https://httpbin.org/cookies/set?foo=bar").json())
{'cookies': {'foo': 'bar'}}
>>> print(requests.get("https://httpbin.org/cookies").json())
{'cookies': {}}

>>> s = requests.Session()
>>> print(s.get("https://httpbin.org/cookies/set?foo=bar").json())
{'cookies': {'foo': 'bar'}}
>>> print(s.get("https://httpbin.org/cookies").json())
{'cookies': {'foo': 'bar'}}

>>> s = requests.Session()
>>> s.cookies.set_policy(BlockAll())
>>> print(s.get("https://httpbin.org/cookies/set?foo=bar").json())
{'cookies': {}}
>>> print(requests.get("https://httpbin.org/cookies").json())
{'cookies': {}}
python 2022/1/1 18:34:55 有222人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶