2011-12-21 29 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)]