aboutsummaryrefslogtreecommitdiffstats
path: root/gallery_dl/cloudflare.py
diff options
context:
space:
mode:
Diffstat (limited to 'gallery_dl/cloudflare.py')
-rw-r--r--gallery_dl/cloudflare.py19
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", "")