本地用Python requests访问api.rugcheck.xyz遇SSL版本错误
SSL错误:WRONG_VERSION_NUMBER 问题解决
问题场景
本地使用Python requests模块请求api.rugcheck.xyz时触发SSL版本错误,本地访问其他网站无异常;部署在Streamlit的应用请求该API正常,确认问题仅存在于本地机器与目标站点之间。
错误信息
Traceback (most recent call last): File "C:\Users\jacob\PycharmProjects\CoinCollector\.venv\Lib\site-packages\urllib3\connectionpool.py", line 464, in _make_request self._validate_conn(conn) ~~~~~~~~~~~~~~~~~~~^^^^^^ File "C:\Users\jacob\PycharmProjects\CoinCollector\.venv\Lib\site-packages\urllib3\connectionpool.py", line 1093, in _validate_conn conn.connect() ~~~~~~~~~~~~^^ File "C:\Users\jacob\PycharmProjects\CoinCollector\.venv\Lib\site-packages\urllib3\connection.py", line 741, in connect sock_and_verified = _ssl_wrap_socket_and_match_hostname( sock=sock, ...<14 lines>... assert_fingerprint=self.assert_fingerprint, ) File "C:\Users\jacob\PycharmProjects\CoinCollector\.venv\Lib\site-packages\urllib3\connection.py", line 920, in _ssl_wrap_socket_and_match_hostname ssl_sock = ssl_wrap_socket( sock=sock, ...<8 lines>... tls_in_tls=tls_in_tls, ) File "C:\Users\jacob\PycharmProjects\CoinCollector\.venv\Lib\site-packages\urllib3\util\ssl_.py", line 480, in ssl_wrap_socket ssl_sock = _ssl_wrap_socket_impl(sock, context, tls_in_tls, server_hostname) File "C:\Users\jacob\PycharmProjects\CoinCollector\.venv\Lib\site-packages\urllib3\util\ssl_.py", line 524, in _ssl_wrap_socket_impl return ssl_context.wrap_socket(sock, server_hostname=server_hostname) ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\jacob\AppData\Local\Programs\Python\Python313\Lib\ssl.py", line 455, in wrap_socket return self.sslsocket_class._create( ~~~~~~~~~~~~~~~~~~~~~~~~~~~^ sock=sock, ^^^^^^^^^^ ...<5 lines>... session=session ^^^^^^^^^^^^^^^ ) ^ File "C:\Users\jacob\AppData\Local\Programs\Python\Python313\Lib\ssl.py", line 1076, in _create self.do_handshake() ~~~~~~~~~~~~~~~~~^^ File "C:\Users\jacob\AppData\Local\Programs\Python\Python313\Lib\ssl.py", line 1372, in do_handshake self._sslobj.do_handshake() ~~~~~~~~~~~~~~~~~~~~~~~~~^^ ssl.SSLError: [SSL: WRONG_VERSION_NUMBER] wrong version number (_ssl.c:1018) During handling of the above exception, another exception occurred: Traceback (most recent call last): File "C:\Users\jacob\PycharmProjects\CoinCollector\.venv\Lib\site-packages\urllib3\connectionpool.py", line 787, in urlopen response = self._make_request( conn, ...<10 lines>... **response_kw, ) File "C:\Users\jacob\PycharmProjects\CoinCollector\.venv\Lib\site-packages\urllib3\connectionpool.py", line 488, in _make_request raise new_e urllib3.exceptions.SSLError: [SSL: WRONG_VERSION_NUMBER] wrong version number (_ssl.c:1018) The above exception was the direct cause of the following exception: Traceback (most recent call last): File "C:\Users\jacob\PycharmProjects\CoinCollector\.venv\Lib\site-packages\requests\adapters.py", line 667, in send resp = conn.urlopen( method=request.method, ...<9 lines>... chunked=chunked, ) File "C:\Users\jacob\PycharmProjects\CoinCollector\.venv\Lib\site-packages\urllib3\connectionpool.py", line 841, in urlopen retries = retries.increment( method, url, error=new_e, _pool=self, _stacktrace=sys.exc_info()[2] ) File "C:\Users\jacob\PycharmProjects\CoinCollector\.venv\Lib\site-packages\urllib3\util\retry.py", line 519, in increment raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='api.rugcheck.xyz', port=443): Max retries exceeded with url: /v1/stats/new_tokens (Caused by SSLError(SSLError(1, '[SSL: WRONG_VERSION_NUMBER] wrong version number (_ssl.c:1018)'))) During handling of the above exception, another exception occurred: Traceback (most recent call last): File "C:\Users\jacob\PycharmProjects\CoinCollector\test.py", line 3, in <module> response = requests.get("https://api.rugcheck.xyz/v1/stats/new_tokens") File "C:\Users\jacob\PycharmProjects\CoinCollector\.venv\Lib\site-packages\requests\api.py", line 73, in get return request("get", url, params=params, **kwargs) File "C:\Users\jacob\PycharmProjects\CoinCollector\.venv\Lib\site-packages\requests\api.py", line 59, in request return session.request(method=method, url=url, **kwargs) ~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\jacob\PycharmProjects\CoinCollector\.venv\Lib\site-packages\requests\sessions.py", line 589, in request resp = self.send(prep, **send_kwargs) File "C:\Users\jacob\PycharmProjects\CoinCollector\.venv\Lib\site-packages\requests\sessions.py", line 703, in send r = adapter.send(request, **kwargs) File "C:\Users\jacob\PycharmProjects\CoinCollector\.venv\Lib\site-packages\requests\adapters.py", line 698, in send raise SSLError(e, request=request) requests.exceptions.SSLError: HTTPSConnectionPool(host='api.rugcheck.xyz', port=443): Max retries exceeded with url: /v1/stats/new_tokens (Caused by SSLError(SSLError(1, '[SSL: WRONG_VERSION_NUMBER] wrong version number (_ssl.c:1018)'))) Process finished with exit code 1
测试代码
import requests response = requests.get("https://api.rugcheck.xyz/v1/stats/new_tokens") data = response.json() print(data)
已尝试操作
- 更新urllib3至最新版本
- 确认本地OpenSSL版本为3.0.15
- 搜索相关错误未找到匹配解决方案
解决办法
关闭ISP高级安全设置中的URL屏蔽功能后,请求恢复正常。
错误原因说明
ISP的URL屏蔽机制拦截请求时,会向目标端口(443)返回非HTTPS协议的响应(比如拦截提示页面的HTTP内容)。此时客户端发起SSL握手,收到的却是不符合TLS协议版本的数据,因此触发WRONG_VERSION_NUMBER错误。
内容的提问来源于stack exchange,提问作者Jacob
相关产品推荐
相关产品推荐

