summaryrefslogtreecommitdiffstats
path: root/gallery_dl/cloudflare.py
diff options
context:
space:
mode:
Diffstat (limited to 'gallery_dl/cloudflare.py')
-rw-r--r--gallery_dl/cloudflare.py29
1 files changed, 16 insertions, 13 deletions
diff --git a/gallery_dl/cloudflare.py b/gallery_dl/cloudflare.py
index 88068d5..0f49d61 100644
--- a/gallery_dl/cloudflare.py
+++ b/gallery_dl/cloudflare.py
@@ -32,23 +32,11 @@ def solve_challenge(session, response, kwargs):
"""Solve Cloudflare challenge and get cfclearance cookie"""
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()
- url = root + text.unescape(text.extract(page, 'action="', '"')[0])
headers["Referer"] = response.url
form = text.extract(page, 'id="challenge-form"', '</form>')[0]
@@ -58,12 +46,27 @@ def solve_challenge(session, response, kwargs):
if not name:
continue
if name == "jschl_answer":
- value = solve_js_challenge(page, parsed.netloc)
+ try:
+ value = solve_js_challenge(page, parsed.netloc)
+ except Exception:
+ return response, None, None
else:
value = element.attrib.get("value")
params[name] = value
+ 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
+
time.sleep(4)
+ url = root + text.unescape(text.extract(page, 'action="', '"')[0])
cf_response = session.request("POST", url, **cf_kwargs)
if cf_response.history: