Хабрахабр

[Из песочницы] Роскомнадзор и Телеграм боты через прокси

Но суть данного поста не в маркетинговой составляющей блокировки Telegram на территории России. Более лучшей рекламы для прекрасного мессенджера и придумать невозможно — “несгибаемый Дуров держит оборону и стоит за конфиденциальность своих клиентов, как за свою жизнь”. Если ваш Telegram бот перестал работать и вам нужно эту работу срочно восстановить, добро пожаловать под кат.

API сервер одного нашего клиента располагался в Heroku. Вчера вечером мы столкнулись с проблемой, с которой было ожидаемо столкновение. Сам сайт (приложение на NodeJS) уже был заранее перенесен на Московский сервер для уменьшения пинга. Вчера недовольный клиент мне пишет (в Telegram, разумеется), что на сайте информация рандомно то появляется, то нет.

Ротация серверов heroku происходит на уровне DNS и DNS иногда отдавал рабочий IP, иногда — нет. Спустя полчаса изучения проблемы был получен простой вывод: Роскомнадзор заблокировал часть адресов heroku. Когда тестировал клиент — были. К слову, выяснять причину проблемы было довольно таки непросто — когда тестировали мы с разработчиками — проблемы не было. Уже появлялись мысли ответить клиенту великую фразу разработчика “у меня на компе все работает”.

Все заработало отлично, кроме, конечно же, интеграции с Telegram. Решение было довольно простым — мы перенесли API сервер приложения на Питерский сервер клиента и там его спокойно развернули. нет достойной альтернативы, мы начали искать решение данной проблемы. Поскольку отказаться от этой интеграции не является возможным, т.к. С Bot API все немного по другому. С родным клиентом Telegram все просто — в него уже встроено взаимодействие с proxy сервером и его настройка отнимает несколько секунд. Приложение взаимодействует с https://api.telegram.org/ для каждого действия Telegram бота, а этот адрес, разумеется, заблокирован РКН.

Решение было сразу же отвергнуто, т.к. В качестве экспресс-решения проблемы сразу пришло в голову подключить API сервер клиента к нашей OpenVPN сети для обхода этой блокировки. Гугл и Яндекс не смогли поделиться со мной полезной информацией по решению этого вопроса. скорость ответа оставляла желать лучшего.

Ниже предоставлен конфиг nginx который сейчас уже отлично справляется со своей задачей В результате пришла в голову простая и очевидная мысль — поднять самостоятельно простейший прокси сервер для соединения в телеграм.

Nginx config

server
}

Далее в приложении я подменил url BOT API для взаимодействия с telegram — вместо
https://api.telegram.org/bot
написал
http://my-telegram-proxy.server/bot
и интеграция с Bot Api успешно заработала

Это позволит вам поднять свою telegram bot proxy одной командой за считанные секунды
https://hub.docker.com/r/zvinger/docker-proxy-rkn/builds/
Пример команды:
docker run -d -p 8012:80 zvinger/docker-proxy-rkn
и указываете http://адрес.сервера:8012/ в конфигурации приложения. Для большего удобства создал docker контейнер с подробной инструкцией по его использованию. Порт можете выбрать любой при вводе команды

Теги
Показать больше

Похожие статьи

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Кнопка «Наверх»
Закрыть