Python在Windows下调用pycurl请求HTTPS地址出错怎么办?

HTTP 599: SSL certificate problem: unable to get local issuer certificate

好折腾,,老跌们,这个问题怎么解决??
Python在Windows下调用pycurl请求HTTPS地址出错怎么办?

3 回复

遇到pycurl在Windows上请求HTTPS出错,通常是SSL证书库路径问题。Windows下pycurl默认找不到CA证书。解决方法是手动指定证书路径。

最直接的办法是使用cacert参数指向一个证书文件。你可以从curl官网下载cacert.pem文件,然后在代码里设置。

import pycurl
import certifi
from io import BytesIO

buffer = BytesIO()
c = pycurl.Curl()
c.setopt(c.URL, 'https://example.com')
c.setopt(c.WRITEDATA, buffer)

# 关键:使用certifi库提供的证书路径,或者指向你下载的cacert.pem文件
c.setopt(c.CAINFO, certifi.where())
# 或者手动指定路径:c.setopt(c.CAINFO, r'C:\path\to\cacert.pem')

# 对于某些服务器,可能还需要关闭SSL证书验证(不推荐生产环境使用)
# c.setopt(c.SSL_VERIFYPEER, 0)
# c.setopt(c.SSL_VERIFYHOST, 0)

c.perform()
c.close()

body = buffer.getvalue()
print(body.decode('utf-8'))

另一个常见问题是pycurl本身编译时没带SSL支持。用pip install pycurl时,确保系统有libcurl开发文件。在Windows上最简单的方式是去这里下载对应你Python版本和系统架构的预编译whl文件来安装。

如果还不行,试试用curl命令行工具先确认下目标HTTPS地址是否能正常访问,排除网络问题。

总结:主要就是证书路径的事儿。


换 curl 命令做类似操作,显示什么?

回到顶部