Windows 10下用Python 3.8运行Discord机器人遇SSL证书过期错误,如何解决?
嘿,这个问题我之前帮不少Discord机器人开发者解决过,咱们先拆解下错误本质,再一步步来解决:
错误到底啥意思?
这个ClientConnectorCertificateError本质是SSL证书验证失败:你的Python程序(准确说Discord机器人依赖的aiohttp库)在尝试和Discord的服务器discordapp.com:443建立加密HTTPS连接时,发现Discord返回的SSL证书已经过期了——本地系统的SSL安全机制为了防止你连接到恶意伪造的服务器,直接拒绝了这次连接,所以抛出了这个错误。
大概率不是你的代码写错了,问题出在本地的证书存储过期或者没同步上最新的根证书。
按优先级试试这些解决方法
先更新Windows系统的根证书
Windows 10本来会自动同步根证书,但如果自动更新没开或者卡住了,手动操作下:- 按
Win + R,输入inetcpl.cpl打开「Internet属性」 - 切到「内容」标签,点击「证书」→「受信任的根证书颁发机构」
- 先试试让Windows自动更新:打开「设置」→「更新和安全」→「Windows更新」,检查并安装所有可选更新(尤其是证书相关的小更新);如果还是不行,可以手动导入最新的根证书
- 按
更新Python的certifi库
Python的SSL验证很多时候依赖certifi这个第三方库维护的证书列表,直接在命令提示符里跑这个命令:pip install --upgrade certifi更新完重启你的机器人程序,大概率能解决。
临时绕过SSL验证(仅测试用,绝对别放正式环境)
如果上面俩方法都暂时没效果,只是想快速测试机器人功能,可以临时关闭SSL验证——但注意,这会让你的连接失去加密保护,非常不安全:
初始化Discord客户端的时候加个连接器参数,代码大概是这样:import discord import aiohttp intents = discord.Intents.default() # 加上ssl=False的连接器 client = discord.Client(intents=intents, connector=aiohttp.TCPConnector(ssl=False))
内容的提问来源于stack exchange,提问作者Cyandog
相关产品推荐
相关产品推荐

