Issue43074
This issue tracker has been migrated to GitHub,
and is currently read-only.
For more information,
see the GitHub FAQs in the Python's Developer Guide.
Created on 2021-01-30 07:58 by kotori, last changed 2022-04-11 14:59 by admin. This issue is now closed.
Messages (3) | |||
---|---|---|---|
msg385973 - (view) | Author: 双草酸酯 (kotori) | Date: 2021-01-30 07:58 | |
On Windows you can only set a "host:port" http proxy as system proxy. ``` PS > Get-ItemProperty -Path 'HKCU:\Software\Microsoft\Windows\CurrentVersion\Internet Settings' | findstr ProxyServer ProxyServer : 127.0.0.1:7890 ``` But in Python, it assumes that this proxy supports both http and https on the same port: ``` >>> import urllib >>> urllib.request.getproxies() {'http': 'http://127.0.0.1:7890', 'https': 'https://127.0.0.1:7890', 'ftp': 'ftp://127.0.0.1:7890'} ``` On Python 3.8.x it works but on 3.9.x it keeps failing to handshake on https traffic. 3.8.x: ``` > .\python38.exe Python 3.8.3 (tags/v3.8.3:6f8c832, May 13 2020, 22:37:02) [MSC v.1924 64 bit (AMD64)] on win32 Type "help", "copyright", "credits" or "license" for more information. >>> import urllib, requests >>> urllib.request.getproxies() {'http': 'http://127.0.0.1:7890', 'https': 'https://127.0.0.1:7890', 'ftp': 'ftp://127.0.0.1:7890'} >>> requests.get("http://www.google.com") <Response [200]> >>> requests.get("https://www.google.com") <Response [200]> ``` ``` > python3 Python 3.9.1 (tags/v3.9.1:1e5d33e, Dec 7 2020, 17:08:21) [MSC v.1927 64 bit (AMD64)] on win32 Type "help", "copyright", "credits" or "license" for more information. >>> import urllib, requests >>> urllib.request.getproxies() {'http': 'http://127.0.0.1:7890', 'https': 'https://127.0.0.1:7890', 'ftp': 'ftp://127.0.0.1:7890'} >>> requests.get("http://www.google.com") <Response [200]> >>> requests.get("https://www.google.com") Traceback (most recent call last): File "C:\Python39\lib\site-packages\urllib3\connectionpool.py", line 696, in urlopen self._prepare_proxy(conn) File "C:\Python39\lib\site-packages\urllib3\connectionpool.py", line 964, in _prepare_proxy conn.connect() File "C:\Python39\lib\site-packages\urllib3\connection.py", line 359, in connect conn = self._connect_tls_proxy(hostname, conn) File "C:\Python39\lib\site-packages\urllib3\connection.py", line 496, in _connect_tls_proxy return ssl_wrap_socket( File "C:\Python39\lib\site-packages\urllib3\util\ssl_.py", line 432, in ssl_wrap_socket ssl_sock = _ssl_wrap_socket_impl(sock, context, tls_in_tls) File "C:\Python39\lib\site-packages\urllib3\util\ssl_.py", line 474, in _ssl_wrap_socket_impl return ssl_context.wrap_socket(sock) File "C:\Python39\lib\ssl.py", line 500, in wrap_socket return self.sslsocket_class._create( File "C:\Python39\lib\ssl.py", line 1040, in _create self.do_handshake() File "C:\Python39\lib\ssl.py", line 1309, in do_handshake self._sslobj.do_handshake() ssl.SSLEOFError: EOF occurred in violation of protocol (_ssl.c:1123) During handling of the above exception, another exception occurred: Traceback (most recent call last): File "C:\Python39\lib\site-packages\requests\adapters.py", line 439, in send resp = conn.urlopen( File "C:\Python39\lib\site-packages\urllib3\connectionpool.py", line 755, in urlopen retries = retries.increment( File "C:\Python39\lib\site-packages\urllib3\util\retry.py", line 573, in increment raise MaxRetryError(_pool, url, error or ResponseError(cause)) urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='www.google.com', port=443): Max retries exceeded with url: / (Caused by SSLError(SSLEOFError(8, 'EOF occurred in violation of protocol (_ssl.c:1123)'))) During handling of the above exception, another exception occurred: Traceback (most recent call last): File "<stdin>", line 1, in <module> File "C:\Python39\lib\site-packages\requests\api.py", line 76, in get return request('get', url, params=params, **kwargs) File "C:\Python39\lib\site-packages\requests\api.py", line 61, in request return session.request(method=method, url=url, **kwargs) File "C:\Python39\lib\site-packages\requests\sessions.py", line 542, in request resp = self.send(prep, **send_kwargs) File "C:\Python39\lib\site-packages\requests\sessions.py", line 655, in send r = adapter.send(request, **kwargs) File "C:\Python39\lib\site-packages\requests\adapters.py", line 514, in send raise SSLError(e, request=request) requests.exceptions.SSLError: HTTPSConnectionPool(host='www.google.com', port=443): Max retries exceeded with url: / (Caused by SSLError(SSLEOFError(8, 'EOF occurred in violation of protocol (_ssl.c:1123)'))) ``` |
|||
msg386091 - (view) | Author: Steve Dower (steve.dower) * | Date: 2021-02-01 19:28 | |
requests is a third-party library that has no obligation to use urllib's functionality. If you can show the same behaviour with urllib alone, we can treat it as an issue here. Otherwise, you'll need to report it to requests. |
|||
msg386162 - (view) | Author: 双草酸酯 (kotori) | Date: 2021-02-02 19:38 | |
Oh sorry I forgot requests is a third party library. |
History | |||
---|---|---|---|
Date | User | Action | Args |
2022-04-11 14:59:40 | admin | set | github: 87240 |
2021-02-02 19:38:36 | kotori | set | status: open -> closed resolution: third party messages: + msg386162 stage: resolved |
2021-02-01 19:28:18 | steve.dower | set | messages: + msg386091 |
2021-01-30 07:58:09 | kotori | create |