diff options
| author | 2024-12-22 05:45:18 -0500 | |
|---|---|---|
| committer | 2024-12-22 05:45:18 -0500 | |
| commit | bb8260277ab7483652c6c1526a15d62da92acc96 (patch) | |
| tree | 02959c9d5aceb66f4429e0be1bc927921e01bbdc /gallery_dl/extractor/common.py | |
| parent | f6877087773089220d68288d055276fca6c556d4 (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.py | 25 |
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() |
