New submission from 双草酸酯 <[email protected]>:
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)')))
```
----------
components: Windows
messages: 385973
nosy: admin3, paul.moore, steve.dower, tim.golden, zach.ware
priority: normal
severity: normal
status: open
title: Unable to use system proxy with HTTPS connection on Windows
type: behavior
versions: Python 3.9
_______________________________________
Python tracker <[email protected]>
<https://bugs.python.org/issue43074>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe:
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com