栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Python-urllib和“ SSL:CERTIFICATE_VERIFY_FAILED”错误

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Python-urllib和“ SSL:CERTIFICATE_VERIFY_FAILED”错误

如果只想绕过验证,则可以创建一个新的

SSLContext
。默认情况下,新创建的上下文使用
CERT_NONE

请注意第17.3.7.2.1节中的规定

直接调用

SSLContext
构造函数时,默认值为
CERT_NONE
。由于它不对另一个对等方进行身份验证,因此它可能是不安全的,尤其是在客户端模式下,在大多数情况下,你希望确保与之对话的服务器的真实性。因此,在客户端模式下,强烈建议使用
CERT_REQUIRED

但是,如果你只是希望它由于其他原因而现在可以工作,则可以执行以下操作,则还必须这样

import ssl
做:

input = input.replace("!web ", "")      url = "https://domainsearch.p.mashape.com/index.php?name=" + inputreq = urllib2.Request(url, headers={ 'X-Mashape-Key': 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX' })gcontext = ssl.SSLContext()  # only for gangstarsinfo = urllib2.urlopen(req, context=gcontext).read()Message.Chat.SendMessage ("" + info)

这应该可以解决你的问题,但是你并没有真正解决任何问题,但是你不会看到,[SSL: CERTIFICATE_VERIFY_FAILED]因为你现在不在验证证书!

补充说明一下,如果你想了解更多有关为什么看到这些问题的信息,请参阅PEP 476。

该PEP建议默认情况下启用X509证书签名的验证以及Python HTTP客户端的主机名验证,但需要根据每次调用选择退出。此更改将应用​​于Python 2.7,Python 3.4和Python 3.5。

有一个建议的退出选项,与我上面的建议没有什么不同:

import ssl# This restores the same behavior as before.context = ssl._create_unverified_context()urllib.urlopen("https://no-valid-cert", context=context)

它还通过Monkeypatching提供了一个不鼓励使用的选项,这在python中并不常见:

import sslssl._create_default_https_context = ssl._create_unverified_context

它将使用创建未验证上下文的功能覆盖用于上下文创建的默认功能。

请注意,如PEP中所述:

本指南主要针对希望采用较新版本的Python的系统管理员,这些版本的Python在尚不支持HTTPS连接证书验证的传统环境中实现此PEP。例如,管理员可以通过在其Python标准操作环境中将上述Monkeypatch添加到sitecustomize.py中来选择退出。应用程序和库不应在整个更改过程中进行更改(除非响应系统管理员控制的配置设置)。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/392611.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号