自从我在新电脑上安装了 python 以来,我一直在努力解决这个问题。
基本上,我有 https
请求:
import requests
import ssl
proxies = {
'https': "https://myproxyhere"
}
r = requests.get('https://example.com', proxies=proxies, timeout=10)
print(r.text)
在另一台电脑上工作正常,但在这台电脑上却出现错误:
```(Caused by SSLError(SSLError(1, '[SSL: WRONG_VERSION_NUMBER] wrong version number (_ssl.c:1122)')))```
我安装了 openssl 1.1.1h
,并且 python 3.9
具有 openssl
版本 1.1.1g
。但是,我将 openssl
降级为 1.1.1g
,但错误仍然存在,我无法使用代理执行 SSL 请求。
请记住,代理不是原因,因为我有完全相同的代码片段在我的另一台笔记本电脑上运行良好,但是我购买了 Windows Surface Pro,当我进行全新安装时,我无法使这项工作。到目前为止,我已经尝试了所有方法,尝试了其他版本的 openssl 和 python。
有人知道如何解决这个问题吗?
完整错误回溯:
Traceback (most recent call last):
File "C:\Users\gonca\Desktop\debug.py", line 9, in <module>
r = requests.get('https://example.com', proxies=proxies, timeout=10)
File "C:\Users\gonca\AppData\Local\Programs\Python\Python39\lib\site-packages\requests\api.py", line 76, in get
return request('get', url, params=params, **kwargs)
File "C:\Users\gonca\AppData\Local\Programs\Python\Python39\lib\site-packages\requests\api.py", line 61, in request
return session.request(method=method, url=url, **kwargs)
File "C:\Users\gonca\AppData\Local\Programs\Python\Python39\lib\site-packages\requests\sessions.py", line 542, in request
resp = self.send(prep, **send_kwargs)
File "C:\Users\gonca\AppData\Local\Programs\Python\Python39\lib\site-packages\requests\sessions.py", line 655, in send
r = adapter.send(request, **kwargs)
File "C:\Users\gonca\AppData\Local\Programs\Python\Python39\lib\site-packages\requests\adapters.py", line 514, in send
raise SSLError(e, request=request)
requests.exceptions.SSLError: HTTPSConnectionPool(host='example.com', port=443): Max retries exceeded with url: / (Caused by SSLError(SSLError(1, '[SSL: WRONG_VERSION_NUMBER] wrong version number (_ssl.c:1122)')))
编辑: 对于遇到此错误的人,解决方案是降级请求模块,它已被窃听。
最佳答案
requests-2.25.1 中存在错误。我必须降级到2.24.0
pip install requests==2.24.0
关于Python 使用请求时错误的 SSL 版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65015195/