summaryrefslogtreecommitdiffstats
path: root/gallery_dl/extractor/common.py
diff options
context:
space:
mode:
authorLibravatarUnit 193 <unit193@unit193.net>2024-12-22 05:45:18 -0500
committerLibravatarUnit 193 <unit193@unit193.net>2024-12-22 05:45:18 -0500
commitbb8260277ab7483652c6c1526a15d62da92acc96 (patch)
tree02959c9d5aceb66f4429e0be1bc927921e01bbdc /gallery_dl/extractor/common.py
parentf6877087773089220d68288d055276fca6c556d4 (diff)
New upstream version 1.28.2.upstream/1.28.2
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()