📱 Подписаться
IT и цифровая трансформация

Чиним доступ к Telegram, GPT и другим API из России

📰 Habr 👁️ 8 просмотров

Kotelnikovekb1 час назад

Чиним доступ к Telegram, GPT и другим API из России

Уровень сложностиПростойВремя на прочтение3 минОхват и читатели3KСетевые технологии*Серверное администрирование*Мессенджеры*Open source*ТуториалЕсли вы работаете с тг-ботами, то, скорее всего, замечали проблемы с таймаутами и нестабильным подключением к боту. Или, например, вам захотелось использовать недоступные API на инфраструктуре в RU-регионе, и для этого не обязательно использовать три интересные буквы. Для таких задач подходит и простой прокси. Этот способ не починит звонки, но базовые запросы будут работать. Да и задержка будет поменьше. Но это не точно.

Существуют 2 варианта:

• купить готовый прокси
• поднять собственный серверЧтобы поднять собственный прокси-сервер за пару минут и не напрягаться с конфигурацией, я сделал маленький CLI, который поднимает прокси-стек на VPS за несколько команд: HTTP, SOCKS5 и MTProto для Telegram. Все обновления будут в моем Telegram-канале @kotelnikoff_dev. Там же будет список провайдеров, на которых я тестировал свой CLI.Гит https://github.com/Kotelnikovekb/proxyctl

В статье покажу:

• чем прокси отличается от “трех букв”
• пару слов о прокси-протоколах
• как быстро развернуть собственный прокси-сервер
• как управлять доступом через CLI proxyctl

Почему не “три буквы”

Идея решения с “тремя буквами” состоит в том, что оно уводит трафик сервера целиком. Это рабочий вариант, но для прикладных задач он часто избыточен.

Прокси работает точечно:

• отправляет только нужные запросы;
• разделяет трафик по приложениям и пользователям.

Какие протоколы используются

HTTP proxy

Подходит для:

• curl;
• браузеров;
• fetch, axios и других HTTP-клиентов;
• любых случаев, когда нужен обычный HTTP/HTTPS-трафик.Такой прокси понимает HTTP-протокол и умеет делать CONNECT для HTTPS.

SOCKS5 proxy

Подходит для:

• приложений, которые умеют работать через SOCKS;
• нестандартных клиентов;
• случаев, где нужен универсальный TCP-прокси.

MTProto proxy

Подходит только для Telegram-клиентов.

Прокси сам по себе не шифрует данные на уровне “замены HTTPS”. Это всего лишь посредник. Безопасность веб-запросов по-прежнему обеспечивает HTTPS между клиентом и сайтом.

Что такое proxyctl

proxyctl — это CLI для развертывания и управления proxy-стеком:

• 3proxy для HTTP и SOCKS5; • mtg для MTProto.

proxyctl нужен для:

• установки зависимостей;
• скачивания или сборки нужных бинарников;
• генерации конфигов;
• создания и запуска сервисов;
• управления пользователями;
• базовой диагностики после установки.Поддерживаются два режима запуска:

• systemd для обычных VPS/VM;
• process для окружений без systemd, например некоторых контейнеров.

Быстрый старт

Нужен сервер на Ubuntu или Debian.

Установка:

curl -fsSL "https://raw.githubusercontent.com/Kotelnikovekb/proxyctl/main/install.sh" | sudo bash

Диагностика и проверка работоспособности сервисов

После установки полезно выполнить:

proxyctl status proxyctl diagnosediagnose проверяет:

• запущен ли 3proxy;
• слушаются ли нужные порты;
• проходят ли локальные HTTP/HTTPS/SOCKS-запросы через 127.0.0.1;
• нет ли проблем с базой пользователей.Если локально все ок, а извне не подключается, проблема обычно не в самом прокси, а в firewall/security groups провайдера.

После установки можно либо пройти мастер:

proxyctl wizard

Либо сразу поставить готовый набор:

proxyctl install fullfull поднимет:

• HTTP proxy; • SOCKS5 proxy; • MTProto proxy.Если нужен только Telegram:

proxyctl install mtprotoЕсли нужен только HTTP/SOCKS для API и приложений:

proxyctl install api

Пресеты

CLI поддерживает пять сценариев:

• api — HTTP + SOCKS5;
• universal — HTTP + SOCKS5;
• mtproto — только MTProto;
• telegram-mobile — HTTP + SOCKS5 + MTProto;
• full — полный набор.Можно указывать сразу несколько:

proxyctl install a

Управление доступом

Для работы 3proxy необходимо добавить пользователя и пароль.

Добавить пользователя:

proxyctl add-user aliceПосмотреть пользователей:

proxyctl list-usersСменить пароль:

proxyctl change-password alice new-passУдалить пользователя:

proxyctl remove-user aliceCLI выполнит команды и перезапустит сервис после изменений.

Как получить данные для подключения

CLI умеет сразу вывести параметры подключения.

Для HTTP и SOCKS5:

proxyctl show-connectНа выходе будут:

• host; • port; • username.Для Telegram:

proxyctl show-telegram-linkКоманда выводит готовую tg:// ссылку, которую можно сразу открыть в Telegram-клиенте.

Отдельно про firewall

Во время тестов были сложности с портами на серверах google cloud. Для проверки нужно проверить, что открыты входящие TCP-порты:

• 3128 для HTTP proxy;
• 1080 для SOCKS5;
• 443 для MTProto, если он включен.Для Google Cloud CLI умеет даже подсказать готовые команды:

proxyctl print-gcp-firewallЭто не открывает firewall автоматически, а выводит готовые gcloud команды, которые необходимо выполнить в проекте.

Ограничения

Важно сразу проговорить ограничения, чтобы не было ложных ожиданий:

• проект ориентирован на Ubuntu/Debian. Если нужно, то появятся и другие платформы;
• установка завязана на apt;
• это не замена полноценной сетевой архитектуре;
• cloud firewall все равно настраивается отдельно;Если что-то не получилось, то задавайте вопросы в комментариях тут или в группе @kotelnikoff_dev.

Подкиньте программисту на кофе, ему еще песика кормить)Теги:• прокси
• прокси-сервер
• telegram
• telegrambot
• socks5
• vps
• cli
• vds
• vds-хостинг
• mtprotoХабы:• Сетевые технологии
• Серверное администрирование
• Мессенджеры
• Open source

Получайте больше инсайтов о систематизации бизнеса

Подписывайтесь на Telegram-канал Business Operations — ежедневные материалы о бизнес-процессах, операционном управлении и повышении эффективности

💬 Подписаться на канал