Ответ 1
Вы можете сделать это, указав политику 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
(Обратите внимание, что API http.cookiejar
API требует, чтобы вы определили набор атрибутов и методов, как показано.)
Затем установите политику файлов 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
. Поэтому куки файлы не сохраняются между отдельными вызовами requests.get
. Однако, если первая страница устанавливает куки, а затем выдает перенаправление 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': {}}