证书验证失败:对抓取中的 SSL 错误进行故障排除
抓取使用安全套接字层 (SSL) 协议的网站时,开发人员可能会遇到“CERTIFICATE_VERIFY_FAILED”错误。此错误表明网站的 SSL 证书验证失败。
尝试使用以下 Python 代码抓取维基百科时会出现此错误的一个常见示例:
<code class="python">import urllib.request import bs4 import re pages = set() def getLinks(pageUrl): global pages html = urllib.request.urlopen("http://en.wikipedia.org"+pageUrl) bsObj = bs4.BeautifulSoup(html) for link in bsObj.findAll("a", href=re.compile("^(/wiki/)")): if 'href' in link.attrs: if link.attrs['href'] not in pages: #We have encountered a new page newPage = link.attrs['href'] print(newPage) pages.add(newPage) getLinks(newPage) getLinks("")</code>
运行此命令时代码,您可能会遇到以下错误:
urllib.error.URLError: <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1049)>
macOS 用户的解决方案
如果您使用的是 macOS,此错误的解决方案很简单。导航至 Macintosh HD >应用领域>> Python 3.6 文件夹(或您使用的任何版本的 Python),然后双击“安装证书.command”文件。此命令会将必要的证书安装到您的系统钥匙串中。
运行此命令后,在抓取维基百科或其他 SSL 安全网站时不应再出现“CERTIFICATE_VERIFY_FAILED”错误。
以上是如何修复使用 SSL 抓取网站时的'CERTIFICATE_VERIFY_FAILED”错误?的详细内容。更多信息请关注PHP中文网其他相关文章!