• Главная
  • Курсы
  • События
  • Блог
  • Контакты
  • Магазин
    • Загрузки
  • Партнерка
  • Обо мне
Есть вопросы? Звоните:
+7 (917) 449 09 97
admin@nizamov.school
РегистрацияВход
nizamov.school
  • Главная
  • Курсы
  • События
  • Блог
  • Контакты
  • Магазин
    • Загрузки
  • Партнерка
  • Обо мне

Blog

  • Главная
  • Блог
  • Blog
  • TELEGRAM bot. ОБХОД БЛОКИРОВКИ API TELEGRAM

TELEGRAM bot. ОБХОД БЛОКИРОВКИ API TELEGRAM

  • Опубликовано Илья Низамов
  • Разделы Blog
  • Дата 15.09.2019
  • Комментарии 9 комментариев
telegram bot

Подписывайтесь в соц сетях. Там провожу конкурсы и публикую еще больше контента.

Vk Youtube Telegram Instagram Facebook Twitter

Всем привет, с вами Низамов Илья и сегодня мы будем обходить блокировку Telegram по IP адресу при работе через webhook. Если ваш провайдер применяет именно такую блокировку Telegram, то обойти ее поможет прокси сервер на nginx установленный на виртуальном сервере в другой стране.

Если вам нужно только отлаживать чат бот Telegram то советую не заморачиваться, а использовать сервис ngrok. Если же у вас рабочий бот и вы не можете получать входящие запросы от webhook Telegram, то посмотрев данное видео вы сможете обойти это ограничение. Главное условие, чтобы ваш http сервис 1С был опубликован на web сервере и имел белый статичный IP адрес.

Очень много информации я вынес из статьи пользователя PlugFox, советую пройти и почитать ее полностью.

Аренда VDS

Для начала я арендовал сервер VDS хостера. Сервер расположен в Цюрихе, Швейцария.

Доступ к нему мы получим по протоколу SSH с помощью утилиты Putty.

Настройка VDS

Обновляем пакеты

apt update && apt upgrade

Устанавливаем брадмауэр

apt install ufw

Ставим web сервер nginx

apt install nginx

Проверяем по адресу http://91.245.225.114 что web сервер работает

Так как Telegram работает только по https, то для нашего сервера надо генерировать самоподписанный сертификат и настроить наш web сервер для работы с ним.

Генерация сертификата SSL для Telegram bot

Генерируем сертификат

openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/nginx-selfsigned.key -out /etc/ssl/certs/nginx-selfsigned.crt

При использовании OpenSSL нужно также создать ключи Диффи-Хеллмана, которые нужны для поддержки PFS (совершенной прямой секретности). Подробнее читаем в википедии.

openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048

Кстати можете посмотреть видео по настройке SSL на web сервере Apache

Настройка nginx

Продолжаем настраивать web сервер. Создадим сниппет, в котором укажем расположение SSL сертификата и ключа

С помощью текстового редактора nano создадим сниппет. Со временем вы можете забыть, что указано в сниппетах, по-этому советую называть их соответственно.

nano /etc/nginx/snippets/self-signed.conf

в конфиге укажем директивы

ssl_certificate /etc/ssl/certs/nginx-selfsigned.crt;
ssl_certificate_key /etc/ssl/private/nginx-selfsigned.key;

Выходим и сохраняем данные.

Теперь создадим отдельный сниппет с настройками SSL.

nano /etc/nginx/snippets/ssl-params.conf

Все эти параметры влияют в основном на безопасность и выполняют оптимизацию HTTPS-сервера
Подробнее о каждом параметре вы можете почитать в русскоязычной документации по web серверу nginx в разделе Настройка HTTPS-серверов

ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_ciphers "EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH";
ssl_ecdh_curve secp384r1;
ssl_session_cache shared:SSL:10m;
ssl_session_tickets off;
ssl_stapling on;
ssl_stapling_verify on;
resolver 8.8.8.8 8.8.4.4 valid=300s;
resolver_timeout 5s;
add_header Strict-Transport-Security "max-age=63072000; includeSubdomains; preload";
add_header X-Frame-Options DENY;
add_header X-Content-Type-Options nosniff;
ssl_dhparam /etc/ssl/certs/dhparam.pem;

Выходим и сохраняем данные.

Создадим конфиг нового сайта, он должен располагаться в определенной папке, название у него будет telegram, выполним команду.

nano /etc/nginx/sites-available/telegram.conf

И прописываем конфиг нашего сервера

server {
listen 8443 ssl http2 default_server;
listen [::]:8443 ssl http2 default_server;
server_name 91.245.225.114;
include snippets/self-signed.conf;
include snippets/ssl-params.conf;
location / {
proxy_pass http://100.102.171.125/tl/hs/tg;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
client_max_body_size 100M;
}
}

Директива listen указывает на то какие порты мы будем прослушивать. На текущий момент отправка обновлений через вебхуки доступна только на порты: 443, 80, 88, 8443. По-этому я указываю порт 8443.

Параметр ssl указывает на то, что все соединения, принимаемые на данном порту, должны работать в режиме SSL.

Параметр http2 позволяет принимать на этом порту HTTP/2 соединения, подробнее вы можете почитать в wikipedia.

Параметр default_server указывает на то, что данный сервером будет сервером по умолчанию для указанной пары адрес:порт.

Вторая строка listen настраивает все тоже самое, только для протокола IPv6

Директива server_name – задаёт имя нашего виртуального сервера, так как мы не покупали хостинг, то здесь указываем IP адрес нашего сервера VDS.

Директива include – включает в конфигурацию другой файл с директивами. Ранее мы описали там подключение сертификатов и ключей SSL, а так же настройки протокола.

Директива location – устанавливает конфигурацию в зависимости от URI запроса. В нашем случае запросы к https://91.245.225.114:8443 будут обрабатываться по правилам в следующем блоке.

Следующий блок {} описывает перенаправление запросов на наш сервер.

Директива proxy_pass – задаёт протокол и адрес проксируемого сервера. В нашем случае это протокол http, далее IP адрес и потом адрес нашего http сервиса в 1С http://10.240.150.46/tl/hs/tg/

Директива proxy_set_header – позволяет переопределять или добавлять поля заголовка запроса, передаваемые нашему серверу.

proxy_set_header Host $http_host — передаем поле заголовка запроса

proxy_set_header X-Real-IP $remote_addr — передаем IP адрес запрашивающего в заголовке X-Real-IP (иначе в логах Apache будут адреса Nginx сервера, а не реальных клиентов)

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for — передаем IP клиента и список IP всех прокси-серверов, через которых прошёл запрос, разделённые запятыми. Подробнее читать тут.

proxy_set_header X-Forwarded-Proto $scheme – нужно для определения исходного протокола (например HTTPS или HTTP)

Директива client_max_body_size – задаёт максимально допустимый размер тела запроса клиента

Сохраняем конфиг и выходим.

Для активизации сайта надо создать символическую ссылку с помощью команды ниже.

ln -s /etc/nginx/sites-available/telegram.conf /etc/nginx/sites-enabled/telegram.conf

Проверяем настройки сервера командой.

nginx -t

Ругнется на настройки ssl, но это не страшно, а остальное должно быть ОК.

Перезапускаем сервер.

systemctl restart nginx

И настраиваем брандмауэр.

ufw allow 8443
ufw allow 1080
ufw allow 443

Доп материалы только для авторизованных пользователей. Пожалуйста войдите.

Метка:TELEGRAM

author avatar
Илья Низамов

Предыдущая запись

КАК ЗАРАБОТАТЬ ПРОГРАММИСТУ 1С
15.09.2019

Следующая запись

FIREBASE CLOUD MESSAGING. PUSH 1С
23.10.2019

Вам также может понравиться

gigachat
GIGACHAT ИЛИ CHATGPT ИИ МЕНЕДЖЕР ДЛЯ 1С
15 мая, 2024
gigachat ии менеджер
ИИ МЕНЕДЖЕР НА БАЗЕ GIGACHAT
12 февраля, 2024
chatgpt антиспам
ChatGPT Антиспам. Часть 1
5 февраля, 2024

    9 Комментариев

  1. Артем
    05.12.2019
    Ответить

    Сделал все повашему видео. Все отлично. get запрос проходит на ура.
    Но вот проблема. как запихнуть сертификаты в телеграм. Точнее я смог скачать их, и даже отправил в телегам, но ему они не нравятся. Пытался через certBot, “Invalid hostname in redirect target, must end in IANA registered TLD” тоже не заходит.

    Телеграм пишит:SSL error {error:1416F086:SSL routines:tls_process_server_certificate:certificate verify failed}

    • Илья Низамов
      10.12.2019
      Ответить

      Скоро будет новое видео, продолжение этого.

    • Dulat
      19.06.2021
      Ответить

      здравствуйте Артем, смогли решить проблему?

      • Илья Низамов
        22.06.2021
        Ответить

        Решение проблемы обсуждалось в чате https://t.me/forge1s

  2. Марсель
    04.02.2020
    Ответить

    Сделал практически все по вашей инструкции все получилось, а будет ли урок как теперь обрабатывать то что нам присылает Телеграм.

    • Илья Низамов
      04.02.2020
      Ответить

      Да, будет.

  3. Михаил
    26.04.2020
    Ответить

    Добрый день, а как тоже самое сделать на апаче?

    • Илья Низамов
      04.05.2020
      Ответить

      К сожалению не знаю, но там тоже можно сделать редирект.

  4. Евгений
    18.11.2021
    Ответить

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

Оставьте ответ Отменить ответ

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

Поиск

Рубрики

  • Blog

Ссылки

  • Политика конфиденциальности
  • Публичная оферта

Сайт создан в NIZAMOV.studio

Регистрация с помощью:

Войти Vkontakte

Вход через логин и пароль

Забыли пароль?

Нет аккаунта? Регистрируйся прямо сейчас

Register a new account

Are you a member? Login now