Cookiejar использовать в открывалке - PullRequest
2 голосов
/ 21 декабря 2011

У меня есть следующий код:

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 )

Теперь я позже в своем коде не хочу использовать ни один из файлов cookie (тем временем новые файлы cookie также создаются).

Могу ли я сделать простое tw_jar.clear() или мне нужно снова собрать и установить программу открывания, чтобы избавиться от всех файлов cookie, используемых в запросах?

Ответы [ 2 ]

2 голосов
/ 21 декабря 2011

Вот как 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 голосов
/ 21 декабря 2011

Если вам не нужны файлы cookie, я бы порекомендовал создать новый инструмент для открытия.Однако, если по какой-то причине вы хотите сохранить старый, удаление процессора cookie из списка обработчиков должно работать:

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