cookies.py 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. from http.cookiejar import Cookie, CookieJar
  2. from typing import NewType, Dict, Optional, Tuple, List
  3. from requests.cookies import RequestsCookieJar
  4. Key = NewType('Key', str)
  5. Domain = NewType('Domain', str)
  6. Path = NewType('Path', str)
  7. CookieTuple = Tuple[Key, Domain, Path]
  8. class BnetCookieJar(RequestsCookieJar):
  9. _template: List[CookieTuple] = [
  10. ('_ntes_nuid', '.163.com', '/'),
  11. ('MTK_BBID', '.163.com', '/'),
  12. ('opt', '.battlenet.com.cn', '/'),
  13. ('web.id', '.battlenet.com.cn', '/'),
  14. ('BA-tassadar-login.key', '.battlenet.com.cn', '/'),
  15. ('login.key', '.battlenet.com.cn', '/'),
  16. ('BA-tassadar', '.battlenet.com.cn', '/login'),
  17. ('bnet.extra', '.battlenet.com.cn', '/login'),
  18. ]
  19. @classmethod
  20. def load_bnet_cookies(cls, obj):
  21. new = cls()
  22. try:
  23. for key, domain, path in cls._template:
  24. value = obj[key]
  25. new.set(key, value, path=path, domain=domain)
  26. except KeyError:
  27. raise KeyError('Invalid Cookies: missing keys')
  28. return new
  29. def dump_bnet_cookies(self):
  30. tmp = self.get_dict()
  31. return {key: tmp[key] for key, *_ in self._template}