为一个伟大的使者提供最好的广告是不可能的:“顽固的杜洛夫拥有防御,并代表着客户的隐私以及他的一生。” 但是,这篇文章的实质不是俄罗斯电报封锁的营销部分。 如果您的Telegram机器人已停止工作,并且您需要紧急恢复此工作,欢迎加入。
昨晚我们遇到了一个预计会发生冲突的问题。 我们的一位客户的API服务器位于Heroku。 昨天,一个不满意的客户写信给我(当然是Telegram),该网站上的信息随机出现,然后没有。 该站点本身(NodeJS上的一个应用程序)已经预先转移到Moscow服务器上,以减少ping。
在研究问题半小时后,得出一个简单的结论:Roskomnadzor屏蔽了部分heroku地址。 heroku服务器的轮换发生在DNS级别,DNS有时提供了一个有效的IP,有时却没有。 顺便说一句,要找出问题的原因是非常困难的-当我们与开发人员进行测试时-没有问题。 当客户进行测试时,他们是。 似乎已经出现了一些想法,可以回答客户对开发人员的好话:“我的计算机上的所有内容”。
解决方案非常简单-我们将应用程序的API服务器转移到St. Petersburg客户端服务器,并在那里进行了悄悄部署。 除了与Telegram集成外,一切都运行良好。 由于放弃这种整合是不可能的,因为 没有值得的选择,我们开始寻找解决这个问题的方法。 使用本地Telegram客户端,一切都很简单-它已经与代理服务器进行了内置交互,并且设置过程仅需几秒钟。 使用Bot API,情况有所不同。 该应用程序与Telegram机器人的每个操作都与https://api.telegram.org/进行交互,并且该地址当然会被ILV阻止。
为了解决该问题,我们立即想到将客户端的API服务器连接到我们的OpenVPN网络,以绕过此锁定。 该决定立即被拒绝,因为 响应速度还远远不够。 Google和Yandex无法与我分享有关解决此问题的有用信息。
结果,想到了一个简单而明显的想法-自己提高最简单的代理服务器以连接到电报。 当然,我们将服务器提升到俄罗斯联邦之外,以便代理正常工作
下面是nginx配置,现在可以完美地完成其工作
Nginx配置服务器{
听80;
server_name my-telegram-proxy.server;
位置/ {
proxy_set_header X-Forwarded-Host $主机;
proxy_set_header X-Forwarded-Server $主机;
proxy_set_header X-Forwarded-For $ proxy_add_x_forwarded_for;
proxy_pass https://api.telegram.org/ ;
client_max_body_size 100M;
}
}
在应用程序中,我进一步替换了用于与电报进行交互的url BOT API-而不是
https://api.telegram.org/bot
写
http://my-telegram-proxy.server/bot
并成功与Bot Api集成
为了提供更大的便利,我创建了一个Docker容器,并附有使用说明。 这将使您可以在几秒钟内通过一个命令来提高电报机器人代理
https://hub.docker.com/r/zvinger/docker-proxy-rkn/builds/
命令示例:
docker run -d -p 8012:80 zvinger/docker-proxy-rkn
并在应用程序配置中指定http://服务器地址:8012 / 。 输入命令时可以选择任何端口