Ребятушки всем Привет. Еще до блокировки Telegram в РФ, я написал цикл статей по разработке Telegram Bot и Telegram Bot на Python. Основной идей для написания статей стала необходимость разобраться в тематике ботов и поделиться своими наработками с подписчиками.

Недавно ко мне обратился мой подписчик. Утверждая что сделал все один в один как в статье, но у него ничего не работает. 

Ищем проблему?

Начал разбираться в логах PyCharm. Все сводилось к тому, что скрипт бота не может подключиться к серверу Telegram. Конечно первым делом я предположил, что по невнимательности допущена ошибка в настройках или подключении библиотек в PyCharm. Просмотрев еще раз логи убедился в том, что бот не может подключится к серверу Telegram. Тогда возник вопрос о правильности ввода данных выданных BotFather. Этот момент  тоже перепроверил. Все было в норме.

В какой-то момент я вспомнил, что по сути самым простым способом для проверки бота на работоспособность, является простой http запрос в браузере. Результатом запроса будет ответ от сервера Telegram в json формате. По итогу сервер Telegram отвечает на запросы. Однако если делать это с Российского ip, тогда появляються проблемы.

Причины?

  • 13 апреля 2018 года (символично, пятница 13-ое). Таганский суд Москвы принимает решение о блокировке мессенджера. Хорошо или плохо это не мое дело, но в итоге мессенджер и все боты начинаю работать с большими проблемами.
  • Роскомнадзор обязал провайдеров заблокировать доступ к Telegram.
  • Все боты размещенные на серверах в РФ перестают работать.

Пути решения.

В итоге в первые часы после блокировки было найдено два пути:

— Воспользоваться встроенным протоколом SOCKS5 (встроен в Telegram)
— Установить VPN-сервис

Я думаю об этом вы уже знаете. И все отрабатывает на ура. Есть огромное количество прокси-серверов и vpn сервисов, как бесплатных, так и платных. Многие даже встроены в браузер.

Но нашу проблему это не решает, т.к. при использование SOCKS5 именно приложение Telegram подключается к прокси-серверу и VPN в браузерной сессии имеет такой же эффект. В итоге в браузере и десктопной версии Telegram работает, а PyCharm и наш бот не может подключится к серверам Telegram из-за блокировки ip.

У данной проблемы есть несколько решений:

  • Работать через прокси-сервер (желательно из США или Европы) Т.е. настроить свой доступ в интернет таким образом чтобы весь сетевой трафик шел через прокси-сервер.
  • Работать через VPN. Опять же весь сетевой трафик должен идти через VPN туннель.
  • Разместить код бота на VDS сервере.

Естественно что все эти сервисы должны быть за пределами РФ, потому что все наши усилия сведутся к нулю, если к примеру у VDS сервера будет ip из РФ.

Эпилог.

Более подробное изложение по каждому из пунктов выходит за рамки этой статьи. И по сути избыточен, т.к. сервисы блокируют постоянно, а решения на сегодняшний момент одни и те же. Надеюсь я помог вам или натолкнул на решение. Не забудьте поддержать проект лайком и репостом в социальных сетях. Монетка также будет не лишней.