2011-12-21 40 views
2

Cookiejar使用我有下面的代碼的那一刻:在揭幕戰

tw_jar = cookielib.CookieJar() 
tw_jar.set_cookie(c1) 
tw_jar.set_cookie(c2) 

o = urllib2.build_opener(urllib2.HTTPCookieProcessor(tw_jar)) 
urllib2.install_opener(o) 

現在我後來在我的代碼,我不希望使用任何餅乾(還有新的cookies同時創建)的。

我可以做一個簡單的tw_jar.clear()嗎?還是我需要再次構建並安裝opener以擺脫請求中使用的所有cookie?

+0

你需要清除舊的cookies,但仍繼續處理新的或不使用任何cookie? – jcollado 2011-12-21 19:41:59

回答

2

這是HTTPCookieProcessor是如何在我的Python安裝定義:

class HTTPCookieProcessor(BaseHandler): 
    def __init__(self, cookiejar=None): 
    import cookielib 
    if cookiejar is None: 
     cookiejar = cookielib.CookieJar() 
    self.cookiejar = cookiejar 

    def http_request(self, request): 
    self.cookiejar.add_cookie_header(request) 
    return request 

    def http_response(self, request, response): 
    self.cookiejar.extract_cookies(response, request) 
    return response 

    https_request = http_request 
    https_response = http_response 

僅作爲參考被保存,你可以操縱原始tw_jar實例,它會影響所有將來的請求。

0

如果你不想要任何餅乾,我建議創建一個新的開瓶器。但是,如果由於某種原因,你想保留舊的,去除處理程序的列表中的cookie的處理器應該工作:

o.handlers = [h for h in o.handlers 
       if not isinstance(h, urllib2.HTTPCookieProcessor)]