aboutsummaryrefslogtreecommitdiffstats
path: root/gallery_dl/extractor/common.py
diff options
context:
space:
mode:
authorLibravatarUnit 193 <unit193@unit193.net>2024-12-22 05:45:25 -0500
committerLibravatarUnit 193 <unit193@unit193.net>2024-12-22 05:45:25 -0500
commit68cc5921fab97c0c3609b78838f269e6883af35b (patch)
treef427342e95ddf535e9465c5a5b87e3567a96faaf /gallery_dl/extractor/common.py
parent2a5605e9f5348fe08b246ccd5c78c43c890c8896 (diff)
parentbb8260277ab7483652c6c1526a15d62da92acc96 (diff)
Update upstream source from tag 'upstream/1.28.2'
Update to upstream version '1.28.2' with Debian dir fd5292656afeea7f61ec976dd10e1aab9da1dd13
Diffstat (limited to 'gallery_dl/extractor/common.py')
-rw-r--r--gallery_dl/extractor/common.py25
1 files changed, 19 insertions, 6 deletions
diff --git a/gallery_dl/extractor/common.py b/gallery_dl/extractor/common.py
index 5f9d355..5ada030 100644
--- a/gallery_dl/extractor/common.py
+++ b/gallery_dl/extractor/common.py
@@ -42,8 +42,7 @@ class Extractor():
ciphers = None
tls12 = True
browser = None
- useragent = ("Mozilla/5.0 (Windows NT 10.0; Win64; x64; "
- "rv:128.0) Gecko/20100101 Firefox/128.0")
+ useragent = util.USERAGENT_FIREFOX
request_interval = 0.0
request_interval_min = 0.0
request_interval_429 = 60.0
@@ -172,8 +171,16 @@ class Extractor():
while True:
try:
response = session.request(method, url, **kwargs)
- except (requests.exceptions.ConnectionError,
- requests.exceptions.Timeout,
+ except requests.exceptions.ConnectionError as exc:
+ code = 0
+ try:
+ reason = exc.args[0].reason
+ cls = reason.__class__.__name__
+ pre, _, err = str(reason.args[-1]).partition(":")
+ msg = " {}: {}".format(cls, (err or pre).lstrip())
+ except Exception:
+ msg = exc
+ except (requests.exceptions.Timeout,
requests.exceptions.ChunkedEncodingError,
requests.exceptions.ContentDecodingError) as exc:
msg = exc
@@ -212,6 +219,11 @@ class Extractor():
if b'name="captcha-bypass"' in content:
self.log.warning("Cloudflare CAPTCHA")
break
+ elif server and server.startswith("ddos-guard") and \
+ code == 403:
+ if b"/ddos-guard/js-challenge/" in response.content:
+ self.log.warning("DDoS-Guard challenge")
+ break
if code == 429 and self._handle_429(response):
continue
@@ -909,10 +921,11 @@ def _browser_useragent():
server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
- server.bind(("127.0.0.1", 6414))
+ server.bind(("127.0.0.1", 0))
server.listen(1)
- webbrowser.open("http://127.0.0.1:6414/user-agent")
+ host, port = server.getsockname()
+ webbrowser.open("http://{}:{}/user-agent".format(host, port))
client = server.accept()[0]
server.close()