def wrapper(client, method, url, body=None, headers=None): cookiejar = LWPCookieJar() cookiejar._really_load( StringIO("#LWP-Cookies-2.0\n" + client.credential.get(field,'')), "cookies.txt",True,True) req = Request(url, body, headers or {}, method=method) cookiejar.clear_expired_cookies() cookiejar.add_cookie_header(req) status, headers, body = request(client,req.method,req.full_url,req.data,dict(req.header_items())) response = addinfourl(None, headers, req.full_url, status) cookiejar.extract_cookies(response,req) client.credential[field] = cookiejar.as_lwp_str() return (status, headers, body)
def wrapper(client, method, url, body=None, headers=None): cookiejar = LWPCookieJar() cookiejar._really_load( StringIO("#LWP-Cookies-2.0\n" + client.credential.get(field, '')), "cookies.txt", True, True) req = Request(url, body, headers or {}, method=method) cookiejar.clear_expired_cookies() cookiejar.add_cookie_header(req) status, headers, body = request(client, req.method, req.full_url, req.data, dict(req.header_items())) response = addinfourl(None, headers, req.full_url, status) cookiejar.extract_cookies(response, req) client.credential[field] = cookiejar.as_lwp_str() return (status, headers, body)
def get_csrftoken(client): if "cookie" not in client.credential: status, headers, body = client.get("https://leetcode.com/", request=request_with_credential) if status != 200: return from http.cookiejar import LWPCookieJar from io import StringIO cookiejar = LWPCookieJar() cookiejar._really_load( StringIO("#LWP-Cookies-2.0\n" + client.credential["cookie"]), "cookies.txt", True, True) for cookie in cookiejar: if cookie.name == 'csrftoken': return cookie.value else: return
def get_csrftoken(client): if "cookie" not in client.credential: status, headers, body = client.get( "https://leetcode.com/", request = request_with_credential) if status != 200: return from http.cookiejar import LWPCookieJar from io import StringIO cookiejar = LWPCookieJar() cookiejar._really_load( StringIO("#LWP-Cookies-2.0\n" + client.credential["cookie"]), "cookies.txt",True,True) for cookie in cookiejar: if cookie.name == 'csrftoken': return cookie.value else: return
class HTTP(BaseHandler, Persistable): JSON = 'application/json; charset=UTF-8' URLENCODE = 'application/x-www-form-urlencoded; charset=UTF-8' FORMDATA = 'multipart/form-data' def __init__(self, profile, netloc): self.profile = profile self.netloc = netloc self._cookiejar = LWPCookieJar() self._credential = None opener = build_opener() for h in (HTTPCookieProcessor(self._cookiejar), self): opener.add_handler(h) opener.addheaders = [('User-Agent', USER_AGENT)] def set_http_debuglevel(self, level): for handler in self.parent.handlers: if isinstance(handler, AbstractHTTPHandler): handler.set_http_debuglevel(level) def http_request(self, request): return request def https_request(self, request): return self.http_request(request) def http_response(self, request, response): return response def https_response(self, request, response): return self.http_response(request, response) def __getstate__(self): state = {"cookie": self._cookiejar.as_lwp_str()} if self._credential: state["credential"] = self._credential return json.dumps(state) def __setstate__(self, state): state = json.loads(state) self._cookiejar._really_load(StringIO("#LWP-Cookies-2.0\n" + state["cookie"]), "cookies.txt",True,True) self._credential = state.get("credential", None) def get_cookie(self, name): for cookie in self._cookiejar: if cookie.name == name: return cookie.value @task("HTTP {request.method} {request.full_url}", retry=True) async def _open(self, request, raw=False): while True: try: self.set_http_debuglevel(self.profile.debug) return self.parent.open(request) except AuthError as e: logger.warning("Login required, %s", e) if raw: raise await self.profile.auth(self.netloc, self) request.remove_header("Cookie") def open(self, url, data=None, headers=None, method=None): return self._open(request(url, data, headers, method)) def raw_open(self, url, data=None, headers=None, method=None): return self._open(request(url, data, headers, method), raw=True)