2017-10-16 8 views
1

일부 요청을하기 위해 requests.Session을 사용하려고하는데 쿠키를 설정하지 않았 으면합니다. this question을 보면 쿠키 정책을 만들고 해당 정책에 따라 쿠키를 무시하는 쿠키 항아리를 만들 수 있습니다.쿠키 정책이 무시되고 있습니까?

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

이 요청의 유형에 대한 정책을 설정하는 올바른 방법이다 : 그러나, 내 요청에 대해,이 쿠키가 아직 설정되어 것으로 보인다? 관련 문서에 대한 도움말/링크는 크게 감사하겠습니다.

답변

2

request(...)의 인수를 사용하면 요청에 보내는 쿠키 을 지정할 수 있습니다. 응답에 들어오는 쿠키 에 대해서는 문의하지 않습니다.

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

당신은 세션에 정책을 설정해야