nonebot / adapter-qq

NoneBot2 QQ 适配器 / QQ adapter for nonebot2
MIT License
205 stars 18 forks source link

无法连接至QQ - SSL证书验证失效 #82

Closed Shanshui2024 closed 9 months ago

Shanshui2024 commented 9 months ago

我尝试在Python 3.11.6运行NoneBot Adapter QQ,但是框架报错“SSL证书验证失败”(GPT分析) 框架版本:nb-cli 1.2.6 操作系统已关闭防火墙并开放所有出入站规则 错误如下:

11-17 20:46:37 [ERROR] nonebot | QQ | Failed to get gateway info. Traceback (most recent call last): File "C:\Users\Administrator\Desktop\SPS_Bot.venv\Lib\site-packages\aiohttp\connector.py", line 980, in _wrap_create_connection return await self._loop.create_connection(*args, **kwargs) # type: ignore[return-value] # noqa File "C:\Users\Administrator\AppData\Local\Programs\Python\Python311\Lib\asyncio\base_events.py", line 1112, in create_connection transport, protocol = await self._create_connection_transport( File "C:\Users\Administrator\AppData\Local\Programs\Python\Python311\Lib\asyncio\base_events.py", line 1145, in _create_connection_transport await waiter File "C:\Users\Administrator\AppData\Local\Programs\Python\Python311\Lib\asyncio\sslproto.py", line 575, in _on_handshake_complete raise handshake_exc File "C:\Users\Administrator\AppData\Local\Programs\Python\Python311\Lib\asyncio\sslproto.py", line 557, in _do_handshake self._sslobj.do_handshake() File "C:\Users\Administrator\AppData\Local\Programs\Python\Python311\Lib\ssl.py", line 979, in do_handshake self._sslobj.do_handshake() ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: self-signed certificate in certificate chain (_ssl.c:1006)

The above exception was the direct cause of the following exception:

Traceback (most recent call last): File "C:\Users\Administrator\Desktop\SPS_Bot.venv\Lib\site-packages\nonebot\adapters\qq\bot.py", line 461, in _request response = await self.adapter.request(request) File "C:\Users\Administrator\Desktop\SPS_Bot.venv\Lib\site-packages\nonebot\internal\adapter\adapter.py", line 90, in request return await self.driver.request(setup) File "C:\Users\Administrator\Desktop\SPS_Bot.venv\Lib\site-packages\nonebot\drivers\aiohttp.py", line 73, in request async with session.request( File "C:\Users\Administrator\Desktop\SPS_Bot.venv\Lib\site-packages\aiohttp\client.py", line 1167, in aenter self._resp = await self._coro File "C:\Users\Administrator\Desktop\SPS_Bot.venv\Lib\site-packages\aiohttp\client.py", line 562, in _request conn = await self._connector.connect( File "C:\Users\Administrator\Desktop\SPS_Bot.venv\Lib\site-packages\aiohttp\connector.py", line 540, in connect proto = await self._create_connection(req, traces, timeout) File "C:\Users\Administrator\Desktop\SPS_Bot.venv\Lib\site-packages\aiohttp\connector.py", line 901, in _createconnection , proto = await self._create_direct_connection(req, traces, timeout) File "C:\Users\Administrator\Desktop\SPS_Bot.venv\Lib\site-packages\aiohttp\connector.py", line 1209, in _create_direct_connection raise last_exc File "C:\Users\Administrator\Desktop\SPS_Bot.venv\Lib\site-packages\aiohttp\connector.py", line 1178, in _create_direct_connection transp, proto = await self._wrap_create_connection( File "C:\Users\Administrator\Desktop\SPS_Bot.venv\Lib\site-packages\aiohttp\connector.py", line 982, in _wrap_create_connection raise ClientConnectorCertificateError(req.connection_key, exc) from exc aiohttp.client_exceptions.ClientConnectorCertificateError: Cannot connect to host api.sgroup.qq.com:443 ssl:True [SSLCertVerificationError: (1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: self-signed certificate in certificate chain (_ssl.c:1006)')]

The above exception was the direct cause of the following exception:

Traceback (most recent call last): File "", line 15, in File "C:\Users\Administrator\Desktop\SPS_Bot.venv\Lib\site-packages\nonebot__init.py", line 331, in run get_driver().run(*args, *kwargs) File "C:\Users\Administrator\Desktop\SPS_Bot.venv\Lib\site-packages\nonebot\drivers\none.py", line 70, in run loop.run_until_complete(self._serve()) File "C:\Users\Administrator\AppData\Local\Programs\Python\Python311\Lib\asyncio\base_events.py", line 640, in run_until_complete self.run_forever() File "C:\Users\Administrator\AppData\Local\Programs\Python\Python311\Lib\asyncio\windows_events.py", line 321, in run_forever super().run_forever() File "C:\Users\Administrator\AppData\Local\Programs\Python\Python311\Lib\asyncio\base_events.py", line 607, in run_forever self._run_once() File "C:\Users\Administrator\AppData\Local\Programs\Python\Python311\Lib\asyncio\base_events.py", line 1922, in _run_once handle._run() File "C:\Users\Administrator\AppData\Local\Programs\Python\Python311\Lib\asyncio\events.py", line 80, in _run self._context.run(self._callback, self._args) 》 File "C:\Users\Administrator\Desktop\SPS_Bot.venv\Lib\site-packages\nonebot\adapters\qq\adapter.py", line 105, in run_bot gateway_info = await bot.shard_url_get() File "C:\Users\Administrator\Desktop\SPS_Bot.venv\Lib\site-packages\nonebot\internal\adapter\bot.py", line 123, in call_api raise exception File "C:\Users\Administrator\Desktop\SPS_Bot.venv\Lib\site-packages\nonebot\internal\adapter\bot.py", line 98, in call_api result = await self.adapter._call_api(self, api, data) File "C:\Users\Administrator\Desktop\SPS_Bot.venv\Lib\site-packages\nonebot\adapters\qq\adapter.py", line 416, in _call_api return await api_handler(bot, data) File "C:\Users\Administrator\Desktop\SPS_Bot.venv\Lib\site-packages\nonebot\adapters\qq\utils.py", line 64, in call__ return await self.func(inst, *args, **kwds) File "C:\Users\Administrator\Desktop\SPS_Bot.venv\Lib\site-packages\nonebot\adapters\qq\bot.py", line 1507, in shard_url_get return parse_obj_as(ShardUrlGetReturn, await self._request(request)) File "C:\Users\Administrator\Desktop\SPS_Bot.venv\Lib\site-packages\nonebot\adapters\qq\bot.py", line 463, in _request raise NetworkError("API request failed") from e nonebot.adapters.qq.exception.NetworkError:

GPT输出 此为GPT输出的结果,而我在另一台电脑上能正常使用 另一台电脑的框架版本:nb-cli 1.2.5 是否是nb-cli的版本问题导致QQ适配器不兼容?

补充一下:我尝试检查SSL库,发现两主机的库均为2023.07.22(即最新版) 正在尝试指定nb.exe的出入站规则...

Shanshui2024 commented 9 months ago

尝试指定nb.exe出入站规则后仍然无法正常启动 我先睡觉去了

yanyongyu commented 9 months ago

ssl校验失败可能是你的网络问题 也有可能是你的代理问题 也有可能是腾讯的问题 也有可能是aiohttp或者ssl库的问题 但是就是和nb无关

Shanshui2024 commented 9 months ago

很雾,,,我给电脑重装了Windows Server 2019之后就好用了 可能是防火墙的问题 (但我记得防火墙我已经配置了啊)