Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
电报不再接受通配符证书。Pythonywhere中获取错误_Python_Telegram_Telegram Bot_Pythonanywhere_Telepot - Fatal编程技术网

电报不再接受通配符证书。Pythonywhere中获取错误

电报不再接受通配符证书。Pythonywhere中获取错误,python,telegram,telegram-bot,pythonanywhere,telepot,Python,Telegram,Telegram Bot,Pythonanywhere,Telepot,在pythonywhere上部署bot时,我无法向bot发送消息。由于电报不再支持官方Pythonywhere博客中提到的通配符证书,所以无法将错误发送到服务器。如果有人知道这个问题的原因,请大家帮我解决 raise MaxRetryError(_pool, url, error or ResponseError(cause)) urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='api.telegram.org', por

在pythonywhere上部署bot时,我无法向bot发送消息。由于电报不再支持官方Pythonywhere博客中提到的通配符证书,所以无法将错误发送到服务器。如果有人知道这个问题的原因,请大家帮我解决

  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')': 
引发MaxRetryError(_池、url、错误或响应错误(原因))
urllib3.exceptions.MaxRetryError:HTTPSConnectionPool(host='api.telegram.org',port=443):url:/bottokenvalue/sendMessage超过了最大重试次数(由NewConnectionError引起(':未能建立新连接:[Errno 101]网络不可访问'))
2020-01-17 21:58:04377:在连接被“NewConnectionError”(“:无法建立新连接:[Errno 101]网络不可访问”)中断后重试(重试(总计=2,连接=None,读取=None,重定向=0,状态=None)):/bottoken/sendMessage
2020-01-17 21:58:05377:在连接被“NewConnectionError”(“:无法建立新连接:[Errno 101]网络不可访问”)中断后重试(重试(总计=1,连接=None,读取=None,重定向=0,状态=None)):/bottokenbot/sendMessage
2020-01-17 21:58:06377:在连接被“NewConnectionError”(“:无法建立新连接:[Errno 101]网络不可访问”)中断后重试(重试(总计=0,连接=None,读取=None,重定向=0,状态=None)):

更新

实际上,您可以部署到heroku,即使是使用免费帐户,它似乎在
您的_app.herokuapp.com
之类的域中使用通配符证书。这是在webhook配置中使用库
python电报bot
,如下所示

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


原始答案…

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

可能有几种方法可以绕过这个问题:

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

  • 切换到付费的python anywhere帐户,该帐户支持。使用自定义域,您可以使用非通配符证书。您可以从Let's Encrypt获得免费证书

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

编辑


(*)我从这个问题推断,对通配符证书的限制突然/最近被引入,但据调查,这可以追溯到2017年3月。有关SSL配置的其他限制,请参阅。更新

实际上,您可以部署到heroku,即使是使用免费帐户,它似乎在
您的_app.herokuapp.com
之类的域中使用通配符证书。这是在webhook配置中使用库
python电报bot
,如下所示

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


原始答案…

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

可能有几种方法可以绕过这个问题:

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

  • 切换到付费的python anywhere帐户,该帐户支持。使用自定义域,您可以使用非通配符证书。您可以从Let's Encrypt获得免费证书

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

编辑


(*)我从这个问题推断,对通配符证书的限制突然/最近被引入,但据调查,这可以追溯到2017年3月。有关SSL配置的其他限制,请参阅。

谢谢@v25的回答。你能建议我提供任何非通配符证书托管或任何关于设置自定义域的指南吗。按照他的答案中包含的v25链接进行操作。@Filip我认为这是最简单的方法。PythonAnywhere对于“黑客”帐户是$5/mo,它支持自定义域(然后购买一个便宜的域),并且除了更新您的webhook URL之外,无需进行复杂的更改。这些链接中的所有详细信息。@v25。我已经在Heroku服务器上免费部署了我的2个机器人,它们的过程总是非常简单。我建议Heroku作为电报机器人的良好托管服务。@aashishharma事实上你是正确的。我设法将
python电报bot
部署到
MyApp.herokup