Cookie政策被忽略了?

时间:2017-10-16 18:50:07

标签: python python-requests cookielib cookiejar

我正在尝试使用requests.Session发出一些请求,我希望不设置Cookie。查看this question,看来我可以创建一个cookie策略,并根据该策略忽略cookie创建一个cookie jar。但是,对于我的请求,似乎仍然设置了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)]>

这是为此类请求设置策略的正确方法吗?任何帮助/相关文档的链接将不胜感激。

1 个答案:

答案 0 :(得分:2)

cookies的{​​{1}}参数允许您在请求中指定传出Cookie 。对于回复上的传入Cookie ,不会向其咨询。

您需要在会话中设置策略:

request(...)

演示:

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