2017-10-16 4 views
1

Ich versuche requests.Session zu verwenden, um einige Anfragen zu stellen, und ich möchte, dass Cookies nicht gesetzt werden. Mit Blick auf this question scheint es, dass ich eine Cookie-Richtlinie erstellen und ein Cookie-Jar mit dieser Richtlinie erstellen kann, um Cookies zu ignorieren. Doch für meine Wünsche, so scheint es, dass Cookies wird noch festgelegt werden:Cookie-Richtlinien werden ignoriert?

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)]> 

Ist dies der richtige Weg, um die Politik für diese Art von Anfrage zu setzen? Jede Hilfe/Links zur relevanten Dokumentation würde sehr geschätzt werden.

Antwort

2

Das cookies Argument zu request(...) können Sie angeben, abgehende Cookies auf die Anfrage. Es wird nicht für eingehende Cookies auf die Antwort konsultiert.

Sie müssen die Politik auf der Sitzung setzen:

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

Demo:

>>> 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[]> 
Verwandte Themen