我在抓取一些https URL时遇到pycurl问题。 这突然发生了,并且在一天之前运作良好... 这是我的代码:
ch = pycurl.Curl()
ch.setopt(ch.HTTPHEADER, [k + ': ' + v for k, v in headers.items()])
ch.setopt(pycurl.URL, url.encode('utf-8'))
result_buffer = StringIO()
header_buffer = StringIO()
if method == 'post' :
data = urlencode(post_data)
ch.setopt(ch.POST, 1)
ch.setopt(ch.POSTFIELDS, data)
ch.setopt(ch.FOLLOWLOCATION, 1)
ch.setopt(ch.TIMEOUT, timeout)
ch.setopt(ch.WRITEFUNCTION, result_buffer.write)
ch.setopt(ch.HEADERFUNCTION, header_buffer.write)
ch.setopt(pycurl.SSL_VERIFYPEER, 1)
ch.setopt(pycurl.SSL_VERIFYHOST, 2)
ch.setopt(ch.CAINFO, certifi.where())
ch.perform()
当我尝试此代码时,它在Mac OS上运行良好,但是在Ubuntu 16.04上运行时抛出证书错误
我尝试更新ubuntu证书并重新启动服务器,但没有任何方法解决问题。
我精确地说,并非每个HTTPS网站都发生这种情况。对于其中的某些人,此脚本可以正常运行。
感谢您的帮助。