Roskomnadzor und Telegram bots durch einen Proxy

Es ist unmöglich, an eine bessere Werbung für einen hervorragenden Boten zu denken - "der unflexible Durov bewahrt die Verteidigung und steht wie in seinem Leben für die Vertraulichkeit seiner Kunden". Der Kern dieses Beitrags liegt jedoch nicht in der Marketingkomponente der Blockierung von Telegram in Russland. Wenn Ihr Telegramm-Bot nicht mehr funktioniert und Sie diese Arbeit dringend wiederherstellen müssen, begrüßen Sie Cat.


Letzte Nacht stießen wir auf ein Problem, von dem erwartet wurde, dass es zusammenstößt. Der API-Server eines unserer Kunden befand sich in Heroku. Gestern schreibt mir ein verärgerter Kunde (natürlich in Telegram), dass Informationen zufällig auf der Site erscheinen, dann nein. Die Site selbst (Anwendung auf NodeJS) wurde bereits im Voraus auf den Moskauer Server übertragen, um den Ping zu reduzieren.


Nach einer halben Stunde des Studierens des Problems wurde eine einfache Schlussfolgerung gezogen: Roskomnadzor blockierte einen Teil der Heroku-Adressen. Heroku-Server werden auf der DNS-Ebene gedreht, und der DNS gab manchmal eine funktionierende IP-Adresse, manchmal nicht. Das Ermitteln der Ursache des Problems war übrigens immer noch recht schwierig - beim Testen mit den Entwicklern gab es kein Problem. Als der Kunde testete - waren. Es schien bereits der Gedanke zu sein, dem Kunden mit dem großartigen Satz des Entwicklers zu antworten, dass "alles auf meinem Computer funktioniert".


Die Lösung war recht einfach: Wir haben den API-Anwendungsserver auf den St. Petersburger Client-Server verlegt und dort leise installiert. Alles hat gut funktioniert, außer natürlich die Integration mit Telegram. Da kann man diese Integration nicht aufgeben, da Es gibt keine anständige Alternative, wir haben nach einer Lösung für dieses Problem gesucht. Mit dem nativen Client von Telegram ist alles einfach - die Interaktion mit dem Proxyserver ist bereits integriert und seine Konfiguration dauert einige Sekunden. Mit der Bot-API ist es etwas anders. Die Anwendung interagiert mit https://api.telegram.org/ für jede Telegram-Bot-Aktion. Diese Adresse wird natürlich vom RKN blockiert.


Als Expresslösung für das Problem trat sofort der API-Server des Clients an unser OpenVPN-Netzwerk an, um diese Sperre zu umgehen. Die Entscheidung wurde sofort abgelehnt, weil Die Antwortrate ließ zu wünschen übrig. Google und Yandex konnten mir keine nützlichen Informationen zur Lösung dieses Problems zur Verfügung stellen.


Infolgedessen kam mir ein einfacher und naheliegender Gedanke in den Sinn, den einfachsten Proxy-Server für die Verbindung zu Telegrammen unabhängig zu erhöhen. Unten ist die nginx config, die jetzt hervorragende Arbeit leistet.


Nginx Konfig

server {
listen 80;
server_name my-telegram-proxy.server;
location / {
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass https://api.telegram.org/;
client_max_body_size 100M;
}
}


Als nächstes wird in Anhang I der URL BOT - API mit dem Telegramm zur Interaktion ersetzt - stattdessen
https://api.telegram.org/bot
schrieb
http: //my-telegram-proxy.server/bot
und Integration mit Bot Api erfolgreich erworben


Für mehr Komfort habe ich einen Docker-Container mit detaillierten Anweisungen für die Verwendung erstellt. Dies ermöglicht Ihnen , Ihr Telegramm bot Proxy als ein Team für ein paar Sekunden zu erhöhen
https://hub.docker.com/r/zvinger/docker-proxy-rkn/builds/
Befehl Beispiel:
docker run -d -p 8012:80 zvinger/docker-proxy-rkn
und geben Sie http: //adres.servera: 8012 / in der Anwendungskonfiguration. Sie können einen beliebigen Port auswählen, wenn Sie den Befehl eingeben


Jetzt auch beliebt: