python When use vpn, urllib3 connect raise a error “SSLEOFError: EOF occurred in violation of protocol (_ssl.c:1129)”

python When use vpn, urllib3 connect raise a error “SSLEOFError: EOF occurred in violation of protocol (_ssl.c:1129)”

我正在使用 ccxt 将 biance 连接到获取市场,然后引发错误

 SSLEOFError                               Traceback (most recent call last)
E:\Anaconda3\envs\quant\lib\site-packages\urllib3\connectionpool.py in urlopen(self, method, url, body, headers, retries, redirect, assert_same_host, timeout, pool_timeout, release_conn, chunked, body_pos, **response_kw)
    695             if is_new_proxy_conn and http_tunnel_required:
--> 696                 self._prepare_proxy(conn)
    697 

E:\Anaconda3\envs\quant\lib\site-packages\urllib3\connectionpool.py in _prepare_proxy(self, conn)
    963 
--> 964         conn.connect()
    965 

E:\Anaconda3\envs\quant\lib\site-packages\urllib3\connection.py in connect(self)
    363             if self.tls_in_tls_required:
--> 364                 conn = self._connect_tls_proxy(hostname, conn)
    365                 tls_in_tls = True

E:\Anaconda3\envs\quant\lib\site-packages\urllib3\connection.py in _connect_tls_proxy(self, hostname, conn)
    500         # certificate validation
--> 501         socket = ssl_wrap_socket(
    502             sock=conn,

E:\Anaconda3\envs\quant\lib\site-packages\urllib3\util\ssl_.py in ssl_wrap_socket(sock, keyfile, certfile, cert_reqs, ca_certs, server_hostname, ssl_version, ciphers, ssl_context, ca_cert_dir, key_password, ca_cert_data, tls_in_tls)
    452     else:
--> 453         ssl_sock = _ssl_wrap_socket_impl(sock, context, tls_in_tls)
    454     return ssl_sock

E:\Anaconda3\envs\quant\lib\site-packages\urllib3\util\ssl_.py in _ssl_wrap_socket_impl(sock, ssl_context, tls_in_tls, server_hostname)
    494     else:
--> 495         return ssl_context.wrap_socket(sock)

E:\Anaconda3\envs\quant\lib\ssl.py in wrap_socket(self, sock, server_side, do_handshake_on_connect, suppress_ragged_eofs, server_hostname, session)
    499         # ctx._wrap_socket()
--> 500         return self.sslsocket_class._create(
    501             sock=sock,

E:\Anaconda3\envs\quant\lib\ssl.py in _create(cls, sock, server_side, do_handshake_on_connect, suppress_ragged_eofs, server_hostname, context, session)
   1039                         raise ValueError("do_handshake_on_connect should not be specified for non-blocking sockets")
-> 1040                     self.do_handshake()
   1041             except (OSError, ValueError):

E:\Anaconda3\envs\quant\lib\ssl.py in do_handshake(self, block)
   1308                 self.settimeout(None)
-> 1309             self._sslobj.do_handshake()
   1310         finally:

SSLEOFError: EOF occurred in violation of protocol (_ssl.c:1129)

我的环境是基于Anaconda的,我创建了一个环境来开发,这是细节,python 3.9.7.

enter image description here

我已经尝试了 this,但是没有用,我的 tls 是 1.3,下面的也不行,我已经坚持了好几天了。有人可以帮我吗?谢谢!

pip install ndg-httpsclient
pip install pyopenssl
pip install pyasn1

我不知道这是什么 VPN,但看起来它在干扰流量。

这种行为在使用公司 VPN 时很典型,这也意味着在访问 Internet 时使用公司过滤。通常在此处实施深度包检测以控制和限制访问,这可能会导致故意中断传出连接。

我把urllib3版本降到1.25.11,然后就解决了。我读了 here 并且有效。