1

当我在 pythonanywhere 上部署我的机器人时,我无法向我的机器人发送消息。由于电报不再支持通配符证书,如官方 pythonanywhere 博客链接中提到的那样,服务器出现错误。如果有人知道这个问题的解决方案,请帮助我

  raise MaxRetryError(_pool, url, error or ResponseError(cause))
urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='api.telegram.org', port=443): Max retries exceeded with url: /bottokenvalue/sendMessage (Caused by NewConnectionError('<urllib3.connection.VerifiedHTTPSConnection object at 0x7f094debf050>: Failed to establish a new connection: [Errno 101] Network is unreachable'))
2020-01-17 21:58:04,377: Retrying (Retry(total=2, connect=None, read=None, redirect=0, status=None)) after connection broken by 'NewConnectionError('<urllib3.connection.VerifiedHTTPSConnection object at 0x7f094da4c610>: Failed to establish a new connection: [Errno 101] Network is unreachable')': /bottoken/sendMessage
2020-01-17 21:58:05,377: Retrying (Retry(total=1, connect=None, read=None, redirect=0, status=None)) after connection broken by 'NewConnectionError('<urllib3.connection.VerifiedHTTPSConnection object at 0x7f094da4c4d0>: Failed to establish a new connection: [Errno 101] Network is unreachable')': /bottokenbot/sendMessage
2020-01-17 21:58:06,377: Retrying (Retry(total=0, connect=None, read=None, redirect=0, status=None)) after connection broken by 'NewConnectionError('<urllib3.connection.VerifiedHTTPSConnection object at 0x7f094da4c810>: Failed to establish a new connection: [Errno 101] Network is unreachable')': 
4

1 回答 1

4

更新

您实际上可以部署到 heroku,即使使用免费帐户,该帐户似乎将通配符证书用于诸如your_app.herokuapp.com. python-telegram-bot这是在 webhook 配置中使用库,如此所述。

我很确定 heroku 的证书是通配符,所以我不确定 Telegram 是否已更改他们的系统以允许通配符证书。 他们的官方文档仍然建议不允许使用通配符证书。


原答案...

这种突然* 缺乏对通配符证书的支持只会影响使用 webhook 支持构建的机器人(并托管在具有通配符证书的域上)。

可能有几个选项可以解决这个问题:

  • 从您的机器人中删除 webhook 支持。这可能是最不受欢迎的,除非它是一个低流量的机器人/供个人使用,并且您没有实现 webhook 支持是有原因的。如果没有 webhook 支持,您的机器人将作为客户端连接到电报 API,而不是充当电报系统连接到的服务器。这种连接方法称为“轮询”。

  • 转移到支持自定义域的付费 python Anywhere 帐户。使用自定义域,您可以使用非通配符证书对其进行配置。您可以从 Let's Encrypt 获得免费证书。

您当然可以借此机会转移到另一台主机,但要小心,因为许多类似的主机将只支持其免费帐户的通配符证书:任何为您提供公共 URL 的youraccount.provider.tld

编辑

(*) 我从这个问题推断出突然/最近引入了对通配符证书的限制,但是根据这个答案,这可以追溯到 2017 年 3 月。有关 SSL 配置的其他限制,请参阅官方文档

于 2020-01-18T10:15:29.740 回答