如何在yFinance包中禁用或忽略SSL证书验证
解决方案
方法1:全局禁用SSL验证(快速临时方案)
由于yfinance依赖requests库发起网络请求,可通过修改requests全局配置跳过SSL证书验证,快速解决公司防火墙自签名证书导致的验证失败问题:
import requests from requests.packages.urllib3.exceptions import InsecureRequestWarning # 关闭不安全请求的警告提示 requests.packages.urllib3.disable_warnings(InsecureRequestWarning) # 全局设置跳过SSL证书验证 requests.Session.verify = False import yfinance as yf # 拉取SPY数据 df = yf.download('SPY', start='2000-01-01', end='2024-10-01') print(df)
方法2:为yfinance单独配置Session(更安全的局部方案)
创建自定义requests.Session,仅让yfinance使用该跳过验证的Session,避免影响其他代码的网络请求安全性:
import requests from requests.packages.urllib3.exceptions import InsecureRequestWarning import yfinance as yf # 关闭警告提示 requests.packages.urllib3.disable_warnings(InsecureRequestWarning) # 创建自定义Session并禁用SSL验证 custom_session = requests.Session() custom_session.verify = False # 将自定义Session传入yfinance的download方法 df = yf.download('SPY', start='2000-01-01', end='2024-10-01', session=custom_session) print(df)
重要提示
- 禁用SSL验证会降低网络请求的安全性,仅建议在可信的公司内网环境下使用。
- 如果公司提供内部CA证书,优先选择将证书路径配置到
custom_session.verify(例如custom_session.verify = "/path/to/company-ca-cert.crt"),而非完全禁用验证。
内容的提问来源于stack exchange,提问作者H.L.




