【问题标题】:Cookie policy getting ignored?Cookie 政策被忽略?
【发布时间】:2017-10-16 18:50:06
【问题描述】:

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

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

【问题讨论】:

    标签: python python-requests cookielib cookiejar


    【解决方案1】:

    request(...)cookies 参数允许您根据请求指定传出 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[]>
    

    【讨论】:

      猜你喜欢
      • 2020-02-12
      • 2023-03-21
      • 2016-10-08
      • 2020-07-01
      • 2011-06-08
      • 2021-01-26
      • 2013-09-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多