Ребятушки всем Привет. Еще до блокировки 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 из РФ.
Эпилог.
Более подробное изложение по каждому из пунктов выходит за рамки этой статьи. И по сути избыточен, т.к. сервисы блокируют постоянно, а решения на сегодняшний момент одни и те же. Надеюсь я помог вам или натолкнул на решение. Не забудьте поддержать проект лайком и репостом в социальных сетях. Монетка также будет не лишней.