python-3.x - Python 3.8.3 - requests.get 失败,SSL 证书验证失败,尽管 urllib.request.urlopen 有效
问题描述
我在 Windows 10 机器上安装了新的(2020 年 5 月)python 3.8.3。
当我尝试使用 requests.get 读取 https url 时,它会因 SSL 错误“证书验证失败”而失败。但是当我尝试使用 urllib.request.urlopen 读取相同的 url 时,它工作正常。将此作为一个新问题提出,因为如果证书/权限/等。是一个问题 urllib.requests 也应该失败。
我尝试了针对Python Requests throwing SSL Error问题给出的建议,但没有任何成功。将不胜感激任何帮助。
urllib.request.urlopen 有效:
>>> import ssl
>>> import urllib.request
>>> ssl_context = ssl.create_default_context()
>>> r = urllib.request.urlopen('https://google.com', context = ssl_context).getcode()
>>> r
200
Requests.get 失败:
>>> import requests
>>> r = requests.get('https://google.com')
Traceback (most recent call last):
File "C:\Program Files\Python\Python38\lib\site-packages\urllib3\connectionpool.py", line 670, in urlopen
httplib_response = self._make_request(
File "C:\Program Files\Python\Python38\lib\site-packages\urllib3\connectionpool.py", line 381, in _make_request
self._validate_conn(conn)
File "C:\Program Files\Python\Python38\lib\site-packages\urllib3\connectionpool.py", line 976, in _validate_conn
conn.connect()
File "C:\Program Files\Python\Python38\lib\site-packages\urllib3\connection.py", line 361, in connect
self.sock = ssl_wrap_socket(
File "C:\Program Files\Python\Python38\lib\site-packages\urllib3\util\ssl_.py", line 377, in ssl_wrap_socket
return context.wrap_socket(sock, server_hostname=server_hostname)
File "C:\Program Files\Python\Python38\lib\ssl.py", line 500, in wrap_socket
return self.sslsocket_class._create(
File "C:\Program Files\Python\Python38\lib\ssl.py", line 1040, in _create
self.do_handshake()
File "C:\Program Files\Python\Python38\lib\ssl.py", line 1309, in do_handshake
self._sslobj.do_handshake()
ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1108)
解决方案
推荐阅读
- c++ - 如何将原始音频数据写入使用 Alsa Driver C++ 捕获的文件
- ios - 使用 Swift 离开视图控制器后自动关闭
- mqtt - MQTT 通配符订阅、背压和 QOS
- c# - 即使 Killed 和 Disposed(在 Linux 上),C# 启动进程也会泄漏内存
- c++ - 单步执行循环时的gdb怪异
- python - 如何在 Discord.py Rewrite 中使用 JSON 操作显示排行榜?
- regex - Uipath 正则表达式:具有相同单词的多行,抓取直到第一次出现的行
- recaptcha - 将验证码导出到移动应用程序
- android - 当回收视图项目被长按时更改android中的工具栏菜单
- javascript - Jest mock 无法返回闭包