_cookiejar.py 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. try:
  2. import Cookie
  3. except:
  4. import http.cookies as Cookie
  5. class SimpleCookieJar(object):
  6. def __init__(self):
  7. self.jar = dict()
  8. def add(self, set_cookie):
  9. if set_cookie:
  10. try:
  11. simpleCookie = Cookie.SimpleCookie(set_cookie)
  12. except:
  13. simpleCookie = Cookie.SimpleCookie(set_cookie.encode('ascii', 'ignore'))
  14. for k, v in simpleCookie.items():
  15. domain = v.get("domain")
  16. if domain:
  17. if not domain.startswith("."):
  18. domain = "." + domain
  19. cookie = self.jar.get(domain) if self.jar.get(domain) else Cookie.SimpleCookie()
  20. cookie.update(simpleCookie)
  21. self.jar[domain.lower()] = cookie
  22. def set(self, set_cookie):
  23. if set_cookie:
  24. try:
  25. simpleCookie = Cookie.SimpleCookie(set_cookie)
  26. except:
  27. simpleCookie = Cookie.SimpleCookie(set_cookie.encode('ascii', 'ignore'))
  28. for k, v in simpleCookie.items():
  29. domain = v.get("domain")
  30. if domain:
  31. if not domain.startswith("."):
  32. domain = "." + domain
  33. self.jar[domain.lower()] = simpleCookie
  34. def get(self, host):
  35. if not host:
  36. return ""
  37. cookies = []
  38. for domain, simpleCookie in self.jar.items():
  39. host = host.lower()
  40. if host.endswith(domain) or host == domain[1:]:
  41. cookies.append(self.jar.get(domain))
  42. return "; ".join(filter(None, ["%s=%s" % (k, v.value) for cookie in filter(None, sorted(cookies)) for k, v in
  43. sorted(cookie.items())]))