diff options
| author | 2020-06-16 02:01:17 -0400 | |
|---|---|---|
| committer | 2020-06-16 02:01:17 -0400 | |
| commit | 8c911e3d62a430f5630c13d51b47201fa8ff3cd1 (patch) | |
| tree | 6e0e6f65abc37d7f35ea96d323031a52c7fa966d /gallery_dl/cloudflare.py | |
| parent | a70a3246927b72f1ded37acd55ee719515441b5b (diff) | |
New upstream version 1.14.1.upstream/1.14.1
Diffstat (limited to 'gallery_dl/cloudflare.py')
| -rw-r--r-- | gallery_dl/cloudflare.py | 29 |
1 files changed, 21 insertions, 8 deletions
diff --git a/gallery_dl/cloudflare.py b/gallery_dl/cloudflare.py index 0cf5a57..88068d5 100644 --- a/gallery_dl/cloudflare.py +++ b/gallery_dl/cloudflare.py @@ -33,11 +33,21 @@ def solve_challenge(session, response, kwargs): parsed = urllib.parse.urlsplit(response.url) root = parsed.scheme + "://" + parsed.netloc + page = response.text + try: + params = {"ray": text.extract(page, '?ray=', '"')[0]} + + url = root + "/cdn-cgi/images/trace/jschal/nojs/transparent.gif" + session.request("GET", url, params=params) + + url = root + "/cdn-cgi/images/trace/jschal/js/nocookie/transparent.gif" + session.request("GET", url, params=params) + except Exception: + pass + cf_kwargs = {} headers = cf_kwargs["headers"] = collections.OrderedDict() params = cf_kwargs["data"] = collections.OrderedDict() - - page = response.text url = root + text.unescape(text.extract(page, 'action="', '"')[0]) headers["Referer"] = response.url @@ -54,23 +64,26 @@ def solve_challenge(session, response, kwargs): params[name] = value time.sleep(4) - - cf_kwargs["allow_redirects"] = False cf_response = session.request("POST", url, **cf_kwargs) + if cf_response.history: + initial_response = cf_response.history[0] + else: + initial_response = cf_response + cookies = { cookie.name: cookie.value - for cookie in cf_response.cookies + for cookie in initial_response.cookies } if not cookies: import logging log = logging.getLogger("cloudflare") - log.debug("Headers:\n%s", cf_response.headers) - log.debug("Content:\n%s", cf_response.text) + log.debug("Headers:\n%s", initial_response.headers) + log.debug("Content:\n%s", initial_response.text) return cf_response, None, None - domain = next(iter(cf_response.cookies)).domain + domain = next(iter(initial_response.cookies)).domain cookies["__cfduid"] = response.cookies.get("__cfduid", "") return cf_response, domain, cookies |
