首页 文章

SSLError证书验证失败

提问于
浏览
0

我想抓一个网站获取信息 . 我下载了anacoda并使用python .

这些是我的代码

from urllib.request import urlopen as uReq
   from bs4 import BeautifulSoup as soup
   dibbsurl = 'https://www.dibbs.bsm.dla.mil/RFQ/RfqRecs.aspx?category=issue&TypeSrch=dt&Value=09-06-2017'
   uClient = uReq(dibbsurl)

尝试打开与URL的连接时显示以下错误 .

ssl.SSLError:[SSL:CERTIFICATE_VERIFY_FAILED]证书验证失败(_ssl.c:749)

urllib.error.URLError: <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:749)

我看到了关于双击安装证书文件的类似问题的一些解决方案 . 我做到了,但错误仍然存在 . 导致此错误的原因是什么?如何解决?

1 回答

  • 2

    如果无法验证服务器证书, urllib 将引发异常 . 您可以在 context 参数中使用自定义ssl上下文,也可以使用requests并禁用验证 .

    urllibssl 一起使用:

    from urllib.request import urlopen as uReq
    import ssl
    
    context = ssl._create_unverified_context()
    dibbsurl = 'https://www.dibbs.bsm.dla.mil/RFQ/RfqRecs.aspx?category=issue&TypeSrch=dt&Value=09-06-2017'
    uClient = uReq(dibbsurl, context=context)
    

    使用 requests

    import requests
    
    dibbsurl = 'https://www.dibbs.bsm.dla.mil/RFQ/RfqRecs.aspx?category=issue&TypeSrch=dt&Value=09-06-2017'
    uClient = requests.get(dibbsurl, verify=False)
    data = uClient.content
    

相关问题