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 — ежедневные материалы о бизнес-процессах, операционном управлении и повышении эффективности
💬 Подписаться на канал→ Оригинальная статья