Политика использования файлов cookie игнорируется?

Я пытаюсь использовать requests.Session для выполнения некоторых запросов. и я бы хотел, чтобы файлы cookie не устанавливались. Глядя на этот вопрос, кажется, что я может создать политику файлов cookie и создать банку файлов cookie с учетом этой политики, чтобы игнорировать файлы cookie. Однако, по моим запросам, казалось бы, файлы cookie все еще установлены:

from http import cookiejar

class BlockAll(cookiejar.CookiePolicy):
        """ Blocks all cookies for a given request.
        """
        return_ok = set_ok = domain_return_ok = path_return_ok = lambda self, *args, **kwargs: False
        netscape = True
        rfc2965 = hide_cookie2 = False


def get_cookie_jar():
    cookies = cookiejar.CookieJar(policy=BlockAll())
    return cookies

session = requests.Session()
response = session.request(
   method='post',
   url='some_url.com',
   cookies=get_cookie_jar(),
   ....
)

print(response.cookies)
<RequestsCookieJar[Cookie(version=0, name='JSESSIONID', value='1234', port=None, port_specified=False, domain='some_url.com', domain_specified=False, domain_initial_dot=False, path='/', path_specified=True, secure=False, expires=None, discard=True, comment=None, comment_url=None, rest={}, rfc2109=False)]>

Это правильный способ установить политику для этого типа запроса? Будем очень признательны за любую помощь/ссылки на соответствующую документацию.


person Clicquot The Dog    schedule 16.10.2017    source источник


Ответы (1)


Аргумент cookies для request(...) позволяет указать исходящие файлы cookie в запросе. Не запрашиваются входящие файлы cookie в ответе.

Вам нужно установить политику для сеанса:

session = requests.Session()
session.cookies.set_policy(BlockAll())

Демо:

>>> session = requests.Session()
>>> response = session.request('GET', 'http://httpbin.org/cookies/set?foo=bar')
>>> session.cookies  # no policy, so cookie got set
<RequestsCookieJar[Cookie(version=0, name='foo', value='bar', port=None, port_specified=False, domain='httpbin.org', domain_specified=False, domain_initial_dot=False, path='/', path_specified=True, secure=False, expires=None, discard=True, comment=None, comment_url=None, rest={}, rfc2109=False)]>
>>> session.cookies.clear()  # clean slate, no cookies
>>> session.cookies
<RequestsCookieJar[]>
>>> session.cookies.set_policy(BlockAll())
>>> response = session.request('GET', 'http://httpbin.org/cookies/set?foo=bar')
>>> session.cookies  # with policy, cookies still empty
<RequestsCookieJar[]>
person Martijn Pieters    schedule 16.10.2017