diff options
Diffstat (limited to 'gallery_dl/cloudflare.py')
| -rw-r--r-- | gallery_dl/cloudflare.py | 19 |
1 files changed, 11 insertions, 8 deletions
diff --git a/gallery_dl/cloudflare.py b/gallery_dl/cloudflare.py index 6ba5480..e3ebd1a 100644 --- a/gallery_dl/cloudflare.py +++ b/gallery_dl/cloudflare.py @@ -13,7 +13,7 @@ import time import operator import collections import urllib.parse -from . import text, exception +from . import text from .cache import memcache @@ -39,12 +39,16 @@ def solve_challenge(session, response, kwargs): page = response.text url = root + text.unescape(text.extract(page, 'action="', '"')[0]) - params["r"] = text.extract(page, 'name="r" value="', '"')[0] - params["jschl_vc"] = text.extract(page, 'name="jschl_vc" value="', '"')[0] - params["pass"] = text.extract(page, 'name="pass" value="', '"')[0] - params["jschl_answer"] = solve_js_challenge(page, parsed.netloc) headers["Referer"] = response.url + for inpt in text.extract_iter(page, "<input ", ">"): + name = text.extract(inpt, 'name="', '"')[0] + if name == "jschl_answer": + value = solve_js_challenge(page, parsed.netloc) + else: + value = text.unescape(text.extract(inpt, 'value="', '"')[0]) + params[name] = value + time.sleep(4) cf_kwargs["allow_redirects"] = False @@ -54,14 +58,13 @@ def solve_challenge(session, response, kwargs): cookie.name: cookie.value for cookie in cf_response.cookies } + if not cookies: import logging log = logging.getLogger("cloudflare") - rtype = "CAPTCHA" if is_captcha(cf_response) else "Unexpected" - log.error("%s response", rtype) log.debug("Headers:\n%s", cf_response.headers) log.debug("Content:\n%s", cf_response.text) - raise exception.StopExtraction() + return cf_response, None, None domain = next(iter(cf_response.cookies)).domain cookies["__cfduid"] = response.cookies.get("__cfduid", "") |
