我的python电报漫游器中出现“ SSL:CERTIFICATE_VERIFY_FAILED”错误

时间:2020-04-21 04:52:01

标签: python telegram-bot python-telegram-bot

我的Telegram机器人代码可以正常工作数周,今天突然没做任何更改,却收到[SSL:CERTIFICATE_VERIFY_FAILED]错误,并且我的机器人代码不再在我的PC上运行。我使用Ubuntu 16.04,使用的是python电报bot库。

怎么了?怎么解决?

我的错误日志:

0|main_fil |   File "/home/angel/.local/lib/python3.6/site-packages/telegram/ext/jobqueue.py", line 314, in start
0|main_fil |     name="Bot:{}:job_queue".format(self._dispatcher.bot.id))
0|main_fil |   File "/home/angel/.local/lib/python3.6/site-packages/telegram/bot.py", line 54, in decorator
0|main_fil |     self.get_me()
0|main_fil |   File "<decorator-gen-1>", line 2, in get_me
0|main_fil |   File "/home/angel/.local/lib/python3.6/site-packages/telegram/bot.py", line 70, in decorator
0|main_fil |     result = func(*args, **kwargs)
0|main_fil |   File "/home/angel/.local/lib/python3.6/site-packages/telegram/bot.py", line 292, in get_me
0|main_fil |     result = self._request.get(url, timeout=timeout)
0|main_fil |   File "/home/angel/.local/lib/python3.6/site-packages/telegram/utils/request.py", line 277, in get
0|main_fil |     result = self._request_wrapper('GET', url, **urlopen_kwargs)
0|main_fil |   File "/home/angel/.local/lib/python3.6/site-packages/telegram/utils/request.py", line 231, in _request_wrapper
0|main_fil |     raise NetworkError('urllib3 HTTPError {0}'.format(error))
0|main_fil | telegram.error.NetworkError: urllib3 HTTPError [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:852)

我也尝试过curl:

 curl -X POST -H 'Content-Type: application/json'  -d '{"chat_id": "******", "text": "Test", "disable_notification": true}'  https://api.telegram.org/bot*****************/sendMessage

它返回此错误

curl: (60) SSL certificate problem: self signed certificate in certificate chain
More details here: https://curl.haxx.se/docs/sslcerts.html

curl failed to verify the legitimacy of the server and therefore could not
establish a secure connection to it. To learn more about this situation and
how to fix it, please visit the web page mentioned above.

在某些帖子中,他们说将urllib3降级到1.24.1,我发现了它,但仍然是同样的错误。 我在本地使用相同的机器人令牌运行了脚本,并且脚本正常运行

也是

angel@***:/$ python3 -m telegram
python-telegram-bot 12.6.1
certifi 2020.04.05.1
future 0.18.2
Python 3.6.8 (default, Oct  7 2019, 12:59:55)  [GCC 8.3.0]

1 个答案:

答案 0 :(得分:1)

不是答案,但可以启动您的机器人。

在这个文件中:

<块引用>

AppData\Local\Programs\Python\Python39\Lib\site-packages\telegram\utils\request.py

在第 140-150 行,您可以找到类似的内容

    kwargs = dict(
        maxsize=con_pool_size,
        cert_reqs='CERT_REQUIRED',
        ca_certs=certifi.where(),
        socket_options=sockopts,
        timeout=urllib3.Timeout(connect=self._connect_timeout, read=read_timeout, total=None),
    )

这样做就会奏效:

    urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
    kwargs = dict(
        maxsize=con_pool_size,
        cert_reqs='CERT_NONE',
        ca_certs=certifi.where(),
        socket_options=sockopts,
        timeout=urllib3.Timeout(connect=self._connect_timeout, read=read_timeout, total=None),
    )

有警告,但有效 =)

相关问题