如何解决Python urllib出现的[SSL: CERTIFICATE_VERIFY_FAILED]错误?
解决urllib.request.urlopen的SSL证书过期错误(非敏感数据场景)
针对你遇到的SSL: CERTIFICATE_VERIFY_FAILED证书过期错误,结合你处理非敏感数据的需求,提供以下两种解决方案:
方法一:跳过SSL证书验证(快速规避)
直接绕过证书验证逻辑,适用于非敏感数据请求:
from urllib.request import urlopen, HTTPSHandler, build_opener import ssl # 创建不验证SSL证书的上下文 context = ssl._create_unverified_context() # 构建自定义opener并发起请求 opener = build_opener(HTTPSHandler(context=context)) url = 'https://www.example.com/api/ect...' response = opener.open(url)
注意:此方法会关闭SSL证书校验,绝对不能用于涉及用户隐私、支付等敏感数据的请求,仅适合测试或非敏感数据场景。
方法二:更新根证书(更安全的修复)
如果希望保留SSL验证机制,可以尝试更新本地根证书:
- Windows/macOS:更新系统自带的根证书库,Python会自动调用系统证书进行校验。
- Linux:通过包管理器重新安装证书包,以Debian/Ubuntu为例:
sudo apt update && sudo apt install --reinstall ca-certificates - 也可以手动指定信任的证书文件:
from urllib.request import urlopen, HTTPSHandler, build_opener import ssl context = ssl.SSLContext(ssl.PROTOCOL_TLS_CLIENT) # 替换为你的有效证书文件路径 context.load_verify_locations('/path/to/valid/certificate.pem') opener = build_opener(HTTPSHandler(context=context)) response = opener.open(url)
内容的提问来源于stack exchange,提问作者LowBand
相关产品推荐
相关产品推荐

