gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 18:24:32 25 4
gpt4 key购买 nike

当我使用请求访问 URL 时,cookie 会自动发送回服务器(在下面的示例中,请求的 URL 设置了一些 cookie 值,然后重定向到显示存储的 cookie 的另一个 URL)

>>> import requests
>>> response = requests.get("http://httpbin.org/cookies/set?k1=v1&k2=v2")
>>> response.content
'{\n "cookies": {\n "k2": "v2",\n "k1": "v1"\n }\n}'

是否可以像将 Chrome 或 Firefox 设置为不接受 cookie 那样临时禁用 cookie 处理?

例如,如果我在禁用 cookie 处理的情况下使用 Chrome 访问上述 URL,我会得到预期的结果:

{
"cookies": {}
}

最佳答案

您可以通过定义拒绝所有 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.cookiejar 的 API 需要您定义一堆属性和方法,如图所示。)

然后,在您的请求 session 中设置 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 - 如何使用 Python 请求库禁用 cookie 处理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17037668/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com