SSL:CERTIFICATE_VERIFY_FAILED]证书验证失败:无法获取本地发行者证书(_ssl.c:1108)Discord / python

时间:2019-12-19 14:05:06

标签: python discord.py

我正在使用Pycharm和python 3.8和最新版本的discord。我尝试运行此脚本,但出现此错误。有人可以帮忙吗?

import discord

TOKEN = 'xxxxx'

client = discord.Client()

@client.event
async def on_message(message):
    # we do not want the bot to reply to itself
    if message.author == client.user:
        return

    if message.content.startswith('!hello'):
        msg = 'Hello {0.author.mention}'.format(message)
        await client.send_message(message.channel, msg)

@client.event
async def on_ready():
    print('Logged in as')
    print(client.user.name)
    print(client.user.id)
    print('------')

client.run(TOKEN)

------以下错误-------

  

/ Users / mellie / PycharmProjects / Dominations / venv / bin / python   /Users/mellie/PycharmProjects/Dominations/Domi.py Traceback(大多数   最近通话结束):文件   “ /Users/mellie/PycharmProjects/Dominations/venv/lib/python3.8/site-packages/aiohttp/connector.py”,   _wrap_create_connection中的第936行       return await self._loop.create_connection(* args,** kwargs)#类型:忽略#noqa文件   “ /Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/asyncio/base_events.py”,   第1042行,位于create_connection中       传输,协议=等待自身._create_connection_transport(File   “ /Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/asyncio/base_events.py”,   _create_connection_transport中的第1072行       等待服务员文件“ /Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/asyncio/sslproto.py”,   第529行,在data_received中       ssldata,appdata = self._sslpipe.feed_ssldata(data)文件“ /Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/asyncio/sslproto.py”,   feed_ssldata中的第189行       self._sslobj.do_handshake()文件“ /Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/ssl.py”,   第944行,在do_handshake中       self._sslobj.do_handshake()ssl.SSLCertVerificationError:[SSL:CERTIFICATE_VERIFY_FAILED]证书验证失败:无法获取   本地发行者证书(_ssl.c:1108)

上述异常是以下异常的直接原因:

  

回溯(最近通话最近):文件   “ /Users/mellie/PycharmProjects/Dominations/Domi.py”,第24行,在          client.run(TOKEN)文件“ /Users/mellie/PycharmProjects/Dominations/venv/lib/python3.8/site-packages/discord/client.py”,   640行,运行中       返回future.result()文件“ /Users/mellie/PycharmProjects/Dominations/venv/lib/python3.8/site-packages/discord/client.py”,   第621行,在转轮中       等待self.start(* args,** kwargs)文件“ /Users/mellie/PycharmProjects/Dominations/venv/lib/python3.8/site-packages/discord/client.py”,   584行,开始       等待self.login(* args,bot = bot)文件“ /Users/mellie/PycharmProjects/Dominations/venv/lib/python3.8/site-packages/discord/client.py”,   442行,登录       等待self.http.static_login(token.strip(),bot = bot)文件“ /Users/mellie/PycharmProjects/Dominations/venv/lib/python3.8/site-packages/discord/http.py”,   第256行,在static_login中       数据=等待self.request(Route('GET','/ users / @ me'))文件“ /Users/mellie/PycharmProjects/Dominations/venv/lib/python3.8/site-packages/discord/http.py ”,   160行,在请求中       与自己异步。 session.request(方法,URL,** kwargs)作为r:文件   “ /Users/mellie/PycharmProjects/Dominations/venv/lib/python3.8/site-packages/aiohttp/client.py”,   第1012行,位于__aenter       self._resp =等待self._coro文件“ /Users/mellie/PycharmProjects/Dominations/venv/lib/python3.8/site-packages/aiohttp/client.py”,   _request中的第480行       conn =等待self._connector.connect(文件“ /Users/mellie/PycharmProjects/Dominations/venv/lib/python3.8/site-packages/aiohttp/connector.py”,   523行,在连接中       proto =等待self._create_connection(req,traces,timeout)文件“ /Users/mellie/PycharmProjects/Dominations/venv/lib/python3.8/site-packages/aiohttp/connector.py”,   _create_connection中的第858行       _,proto =等待自我。_create_direct_connection(文件“ /Users/mellie/PycharmProjects/Dominations/venv/lib/python3.8/site-packages/aiohttp/connector.py”,   _create_direct_connection中的第1004行       引发last_exc文件“ /Users/mellie/PycharmProjects/Dominations/venv/lib/python3.8/site-packages/aiohttp/connector.py”,   _create_direct_connection中的第980行       transp,proto =等待自我。_wrap_create_connection(文件“ /Users/mellie/PycharmProjects/Dominations/venv/lib/python3.8/site-packages/aiohttp/connector.py”,   _wrap_create_connection中的第938行       引发ClientConnectorCertificateError(aiohttp.client_exceptions.ClientConnectorCertificateError:无法   连接到主机discordapp.com:443 ssl:True [SSLCertVerificationError:   (1,'[[SSL:CERTIFICATE_VERIFY_FAILED]证书验证失败:   无法获得本地发行者证书(_ssl.c:1108)')]

     

以退出代码1完成的过程

8 个答案:

答案 0 :(得分:4)

我遇到了同样的错误,但我通过转到我的 mac 中的 Applications 文件夹来修复它,然后转到 python 3.9,然后我单击安装证书文件,然后它打开终端,然后下载证书文件。

答案 1 :(得分:1)

在python目录中运行以下脚本(适用于Mac)

install Certificate.command

答案 2 :(得分:0)

此github问题here。 说:

  

基本上导航到Applications / Python 3.6 /文件夹,然后双击   单击“安装证书”命令。

尝试在3.6上运行相同的程序,然后运行install certificate命令。这很可能会解决您的问题

答案 3 :(得分:0)

您没有使用python 3.6,因此上述答案不是正确的答案。我遇到了同样的问题,我发现您可以使用Anaconda,创建环境,在该环境中安装discord.py,并且由于您使用的是PyCharm,因此请在其中使用环境作为解释器。

答案 4 :(得分:0)

这可能是不和谐方面的问题,暂时无法解决。 RedBot framework遇到了同样的问题。他们recently stated表示“问题与Discord的根证书有关,目前没有建议的修复程序。”

答案 5 :(得分:0)

像这样将ssl=true&ssl_cert_reqs=CERT_NONE添加到您的MongoDB URI

>>> uri = 'mongodb://example.com/?ssl=true&ssl_cert_reqs=CERT_NONE'
>>> client = pymongo.MongoClient(uri)

最重要的是ssl_cert_reqs=CERT_NONE

访问https://api.mongodb.com/python/current/examples/tls.html了解更多信息

答案 6 :(得分:0)

在Linux发行版上进行一些抓取时出现此错误:

requests.exceptions.SSLError: HTTPSConnectionPool(host='api.scraperapi.com', port=XX): Max retries exceeded with url: /account?api_key=MY_KEY (Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1108)')))

我正在将Spyder与Python 3.8和pyenv结合使用。对我来说,只需更新点子证书即可解决此问题:

pip3 install --upgrade certifi

我没有使用不和谐的方法,但我认为其他遇到“ 1108”问题的人可能希望看到这种潜在的简单解决方案。特别是那些在Linux上的。当我在寻找解决方案时,这似乎是Mac用户更常见的问题。

答案 7 :(得分:0)

真正的原因是python库无法在证书链中找到中间CA。

对于不和谐:

DIGICERT BALTIMORE ROOT(根)-> Cloudflare INC ECC CA-3(中级)-> sni.cloudflaressl.com

这是证书链。

所有系统都具有根,但没有中间体。您所要做的就是在您的 ca 存储中手动安装中间 CA