Roskomnadzor e Telegram bots através de um proxy

É impossível encontrar a melhor publicidade para um grande mensageiro - "o obstinado Durov mantém a defesa e defende a privacidade de seus clientes, assim como de sua vida". Mas a essência deste post não está no componente de marketing do bloqueio do Telegram na Rússia. Se o seu bot do Telegram parou de funcionar e você precisa restaurar esse trabalho com urgência, seja bem-vindo ao gato.


Ontem à noite, encontramos um problema que se esperava que colidisse. O servidor API de um de nossos clientes estava localizado em Heroku. Ontem, um cliente descontente escreveu para mim (no Telegram, é claro) que as informações no site aparecem aleatoriamente, então não. O site em si (um aplicativo no NodeJS) já foi transferido para o servidor de Moscou com antecedência para reduzir o ping.


Após meia hora de estudo do problema, chegou-se a uma conclusão simples: Roskomnadzor bloqueou parte dos endereços heroku. A rotação dos servidores heroku ocorre no nível do DNS e o DNS às vezes fornece um IP de trabalho, às vezes não. A propósito, descobrir a causa do problema foi bastante difícil - quando testamos com os desenvolvedores - não havia problema. Quando o cliente testou, eles estavam. Os pensamentos já pareciam responder à grande frase do desenvolvedor sobre o cliente "tudo funciona no meu computador".


A solução era bastante simples - transferimos o servidor API do aplicativo para o servidor cliente de São Petersburgo e lá ele foi implantado silenciosamente. Tudo funcionou perfeitamente, exceto, é claro, a integração com o Telegram. Como abandonar essa integração não é possível, porque Não há alternativa digna, começamos a procurar uma solução para esse problema. Tudo é simples com o cliente nativo do Telegram - ele já possui interação interna com um servidor proxy e sua configuração leva alguns segundos. Com a API Bot, as coisas são um pouco diferentes. O aplicativo interage com https://api.telegram.org/ para cada ação do bot do Telegram, e esse endereço, é claro, é bloqueado pelo ILV.


Como uma solução expressa para o problema, ocorreu-nos imediatamente conectar o servidor de API do cliente à nossa rede OpenVPN para contornar esse bloqueio. A decisão foi imediatamente rejeitada, pois a velocidade de resposta deixou muito a desejar. O Google e o Yandex não puderam compartilhar informações úteis comigo para resolver esse problema.


Como resultado, um pensamento simples e óbvio veio à mente - criar o servidor proxy mais simples por conta própria para conectar-se a telegramas. Obviamente, aumentamos o servidor fora da Federação Russa para que o proxy funcione


Abaixo está a configuração nginx, que agora está fazendo seu trabalho perfeitamente


Configuração do Nginx

servidor {
ouça 80;
server_name my-telegram-proxy.server;
local / {
proxy_set_header Host $ X-Forwarded-Host;
proxy_set_header host $ 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;
}
}


Além disso, no aplicativo, substituí a URL BOT API por interagir com o telegrama - em vez de
https://api.telegram.org/bot
escreveu
http: //my-telegram-proxy.server/bot
e integração com o Bot Api conquistado com sucesso


Para maior comodidade, criei um contêiner de encaixe com instruções detalhadas para seu uso. Isso permitirá que você aumente seu proxy de bot de telegrama com um comando em segundos
https://hub.docker.com/r/zvinger/docker-proxy-rkn/builds/
Exemplo de comando:
docker run -d -p 8012:80 zvinger/docker-proxy-rkn
e especifique http: // endereço do servidor: 8012 / na configuração do aplicativo. Você pode selecionar qualquer porta ao inserir um comando

Source: https://habr.com/ru/post/pt424427/


All Articles