docs: def _GetOpener(self):
  		"""Returns an OpenerDirector that supports cookies and ignores redirects.
  
  		Returns:
  			A urllib2.OpenerDirector object.
  		"""
  		opener = urllib2.OpenerDirector()
  		opener.add_handler(urllib2.ProxyHandler())
  		opener.add_handler(urllib2.UnknownHandler())
  		opener.add_handler(urllib2.HTTPHandler())
  		opener.add_handler(urllib2.HTTPDefaultErrorHandler())
  		opener.add_handler(urllib2.HTTPSHandler())
  		opener.add_handler(urllib2.HTTPErrorProcessor())
  		if self.save_cookies:
  			self.cookie_file = os.path.expanduser("~/.codereview_upload_cookies_" + server)
  			self.cookie_jar = cookielib.MozillaCookieJar(self.cookie_file)
  			if os.path.exists(self.cookie_file):
  				try:
  					self.cookie_jar.load()
  					self.authenticated = True
  					StatusUpdate("Loaded authentication cookies from %s" % self.cookie_file)
  				except (cookielib.LoadError, IOError):
  					# Failed to load cookies - just ignore them.
  					pass
  			else:
  				# Create an empty cookie file with mode 600
  				fd = os.open(self.cookie_file, os.O_CREAT, 0600)
  				os.close(fd)
  			# Always chmod the cookie file
  			os.chmod(self.cookie_file, 0600)
  		else:
  			# Don't save cookies across runs of update.py.
  			self.cookie_jar = cookielib.CookieJar()
  		opener.add_handler(urllib2.HTTPCookieProcessor(self.cookie_jar))
  		return opener