Windows下Anaconda环境Requests SSL证书验证失败问题求助
解决Windows+Anaconda下Requests访问SeatGeek API的SSL证书验证失败问题
我之前也碰到过类似的SSL证书坑,直接设verify=False确实能临时绕过去,但这相当于关掉了安全验证,很容易遭中间人攻击,所以还是得把证书配置好才稳妥。下面一步步教你怎么操作:
第一步:获取SeatGeek API的SSL证书
- 打开浏览器,访问你的目标API地址(记得替换成自己的
MYCLIENTID):https://api.seatgeek.com/2/events?client_id=MYCLIENTID - 点击地址栏左侧的锁形图标,选择「证书」选项
- 在弹出的证书窗口里切换到「详细信息」标签页,点击「复制到文件」
- 跟着证书导出向导走,选择「Base64编码的X.509(.CER)」格式,给证书起个名字(比如
seatgeek.pem),保存到一个你能快速找到的路径,比如C:\anaconda3\custom_certs\seatgeek.pem
第二步:配置证书让Requests能识别
有两种配置方式,你可以选适合自己的:
方式一:单次请求指定证书
每次调用API时,直接把证书路径传给verify参数就行:
import requests url = "https://api.seatgeek.com/2/events?client_id=MYCLIENTID" response = requests.get(url, verify="C:\anaconda3\custom_certs\seatgeek.pem") print(response.status_code) # 正常情况会返回200
方式二:全局配置(一劳永逸)
如果不想每次请求都写证书路径,可以把证书加到Anaconda环境的根证书列表里:
- 先找到Anaconda环境中certifi包的
cacert.pem路径。你可以在Python里运行下面的代码得到路径:
输出大概是这种格式:import certifi print(certifi.where())C:\Users\你的用户名\.conda\envs\你的环境名\Lib\site-packages\certifi\cacert.pem - 用文本编辑器打开你刚才下载的
seatgeek.pem,把里面的所有内容复制下来 - 打开
cacert.pem文件,把复制的证书内容粘贴到文件的末尾,保存退出 - 现在再运行
requests.get(url, verify=True),应该就能正常返回200了
额外提醒
- 不要长期用
verify=False,这会让你的请求失去SSL证书验证的保护,风险很高 - 如果你之后更新了certifi包,记得重复上面的全局配置步骤,因为更新会覆盖
cacert.pem文件
内容的提问来源于stack exchange,提问作者Jahmul14
相关产品推荐
相关产品推荐

