]> git.phdru.name Git - bookmarks_db.git/commitdiff
Feat(bkmk_raiohttp): Lower SSL cert validation strictness
authorOleg Broytman <phd@phdru.name>
Mon, 19 Aug 2024 12:43:54 +0000 (15:43 +0300)
committerOleg Broytman <phd@phdru.name>
Sat, 7 Sep 2024 10:59:02 +0000 (13:59 +0300)
Robots/bkmk_raiohttp.py
doc/ANNOUNCE
doc/ChangeLog
setup.py

index b195ff28f830ffb1b07c6d375f723ba25eb38822..fb377aebe39dbc90f3f8bdf03c686df9d7d6cc61 100644 (file)
@@ -13,9 +13,11 @@ __all__ = ['robot_aiohttp']
 
 from urllib.parse import urlsplit
 import asyncio
+import ssl
 
 from aiohttp_socks import ProxyConnector
 from python_socks import parse_proxy_url
+from urllib3.util.ssl_ import create_urllib3_context
 import aioftp
 import aiohttp
 import aiohttp.client_exceptions
@@ -84,15 +86,21 @@ async def _get_http(url, headers={}, proxy=None, timeout=60):
         )
         proxy = None
     timeout = aiohttp.ClientTimeout(connect=timeout, total=timeout)
+    ssl_context = create_urllib3_context(cert_reqs=0,
+                                         ciphers='ALL:@SECLEVEL=1')
     try:
         async with aiohttp.ClientSession(
             connector=connector, timeout=timeout
         ) as session:
             async with session.get(
-                    url, headers=headers, proxy=proxy,
-                    allow_redirects=False) as resp:
+                    url, headers=headers, proxy=proxy, allow_redirects=False,
+                    ssl_context=ssl_context) as resp:
                 return None, resp.status, resp.headers, await resp.read()
-    except (asyncio.TimeoutError, aiohttp.client_exceptions.ClientError) as e:
+    except (
+        ConnectionResetError,
+        asyncio.TimeoutError, ssl.SSLError,
+        aiohttp.client_exceptions.ClientError
+    ) as e:
         return e, None, None, None
 
 
index c6981a1c72f6493d3fcca601a8e569a0d69ea5c2..61cb7afb0c9639d3a6ffe945d018b3ee3e5d9b6d 100644 (file)
@@ -11,7 +11,7 @@ Version 6.0.0 (2024-??-??)
 
    Robot based on aiohttp, processes multiple URLs in parallel.
 
-   Default list of robots is now multirequests,multiaio,curl.
+   Default list of robots is now multiaio,multirequests,curl.
 
    Make all robots async.
    Split check_bookmark() into sync and async variants.
index 915b3378ad02c298d7ac5f4bd10515c7163f5be3..5a2e4cdf913b2d27d9f89a5e48eb7fef66ec1b10 100644 (file)
@@ -2,7 +2,7 @@ Version 6.0.0 (2024-??-??)
 
    Robot based on aiohttp, processes multiple URLs in parallel.
 
-   Default list of robots is now multirequests,multiaio,curl.
+   Default list of robots is now multiaio,multirequests,curl.
 
    Make all robots async.
    Split check_bookmark() into sync and async variants.
index cba7fe2444a1719a032b0be5d1877af3ea90c9a2..a140ded9877fe64eae2e2f145140899b31a8a21d 100755 (executable)
--- a/setup.py
+++ b/setup.py
@@ -38,6 +38,6 @@ setup(
         'html': ['beautifulsoup4', 'lxml'],
         'requests': ['requests[socks]'],
         'curl': ['pycurl', 'certifi'],
-        'aiohttp': ['aiohttp>=2.3.2', 'aiohttp-socks', 'aioftp[socks]'],
+        'aiohttp': ['aiohttp>=3', 'aiohttp-socks', 'aioftp[socks]'],
     },
 )