Гайд Lua - TG Proxy для скриптов.

bakhusse

Известный
Автор темы
141
101
TG Proxy: Полный гайд по обходу блокировок и фиксу уведомлений
Используем альтернативу, или поднимаем свой прокси-сервер на Node.js + Caddy и забываем про блокировку




1. В чем проблема?

В последнее время вы могли заметить, что api.telegram.org заблокирован со стороны РКН или работает крайне нестабильно. Из-за этого пользователи в РФ испытывают сложности с работой скриптов где используется Telegram API.




2. Быстрое решение: Использование tg.bakh.us

Если вы не хотите возиться с серверами, используйте наш публичный прокси-шлюз. Он бесплатный и стабильный.

Как подключить: Просто замените домен в ваших запросах. Пример:
Lua:
-- Было:
local url = "https://api.telegram.org/bot" .. token .. "/sendMessage"

-- Стало:
local url = "https://tg.bakh.us/bot" .. token .. "/sendMessage"




3. Свое решение: Поднимаем прокси с нуля

Для тех, кто хочет полной независимости, вот путь по созданию своей "крепости".

[A] Где брать железо?
  • Сервер (VDS): Лично я использую Timeweb - стабильно, адекватно по ценам, принимают карты РФ.
  • Домен: Я беру на Porkbun, ибо там самые дешевые домены на первый год использования. Важно: нужна иностранная карта (лично я использую свою турецкую), карты РФ там не работают.
  • Примечания: Если у вас нет возможности приобрести домен на Porkbun, берите в другом, например reg.ru. На Timeweb я использую РФ сервер, в котором на мое удивление еще работает TG API.

Установка Node.js прокси
Заходим на сервер и ставим окружение:
Bash:
curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -
sudo apt-get install -y nodejs screen
mkdir tg-proxy && cd tg-proxy
npm init -y && npm install express node-fetch

Создаем index.js:
JavaScript:
import express from "express";
import fetch from "node-fetch";

const app = express();

app.use(async (req, res) => {
  try {
    const url = "https://api.telegram.org" + req.url;
    const response = await fetch(url, { method: req.method });
    const data = await response.text();
    res.setHeader('Access-Control-Allow-Origin', '*'); 
    res.send(data);
  } catch (err) {
    res.status(500).send("Proxy error");
  }
});

app.listen(3000, () => console.log("TG proxy running on port 3000"));

Запуск через screen (чтобы работал в фоне):
Bash:
screen -S tgproxy
node index.js
# Нажимаем CTRL+A, затем D, чтобы выйти из окна, оставив процесс в фоне

[В] Настройка домена и HTTPS (Caddy)
Telegram требует HTTPS. Чтобы не мучаться с сертификатами вручную, ставим Caddy — он сам сделает SSL.

Установка (Ubuntu):
Bash:
sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list
sudo apt update && sudo apt install caddy

Конфиг (/etc/caddy/Caddyfile):
Код:
tg.yourdomain.com {
    reverse_proxy localhost:3000
}
После правки: sudo systemctl reload caddy.





4. Важное замечание по кодировке (Lua)

Чтобы не было кракозябр, используйте этот вариант urlencode. Он правильно переводит CP1251 в UTF-8 и экранирует символы для URL.

Lua:
local encoding = require 'encoding'
encoding.default = 'CP1251'
local u8 = encoding.UTF8

function urlencode(str)
   if str then
      str = u8:encode(str, 'CP1251') -- Фикс кракозябр
      str = str:gsub("([^%w _%%%-%.~])", function(c) 
         return string.format("%%%02X", string.byte(c)) 
      end)
      str = str:gsub(" ", "%%20") -- Фикс плюсиков
   end
   return str
end



Автор - bakhusse
Связь - telegram/vk: @bakhusse
Пример работы -
AFKTools
 
  • Ха-ха
  • Влюблен
Реакции: Sargon и Mamashin

Mamashin

Сломанный
1,124
618
Молодец Серёжа, хорошо стелишь, думаю стоит так же упомянуть в теме о том, что запуск скрина лучше сразу закидывать в автозапуск сервера
 

Ну погоди!

Активный
232
96
примерно с вчера, что selectel, reg.ru, timeweb/timeweb cloud начали также блокировать домены телеграмма. api.telegram.org тоже в блокировке
1774282062966.png


Рабочий способ сейчас - работа через вебсокет

Молодец Серёжа, хорошо стелишь, думаю стоит так же упомянуть в теме о том, что запуск скрина лучше сразу закидывать в автозапуск сервера
тогда уже, обернуть это в демона или накинуть pm2
 
Последнее редактирование:
  • Нравится
Реакции: Sargon

bakhusse

Известный
Автор темы
141
101
примерно с вчера, что selectel, reg.ru, timeweb/timeweb cloud начали также блокировать домены телеграмма. api.telegram.org тоже в блокировке
Посмотреть вложение 289376

Рабочий способ сейчас - работа через вебсокет


тогда уже, обернуть это в демона или накинуть pm2
по сей день у меня апи ТГ спокойно работает, рф сервер
 

Mamashin

Сломанный
1,124
618
А что мешает развернуть прокси-сервер на сервере и работать с api telegram посредством прокси? Таким образом неважно чей сервер и в какой он стране и что там блокирует его провайдер, помоему автор темы хотел донести именно тунель на сервере, чтобы работать с ним на клиенте, а сервер как-раз выступает утилитой для всего-этого, поправь если ошибаюсь в чем-то
 
  • Нравится
Реакции: bakhusse

Ну погоди!

Активный
232
96
А что мешает развернуть прокси-сервер на сервере и работать с api telegram посредством прокси? Таким образом неважно чей сервер и в какой он стране и что там блокирует его провайдер, помоему автор темы хотел донести именно тунель на сервере, чтобы работать с ним на клиенте, а сервер как-раз выступает утилитой для всего-этого, поправь если ошибаюсь в чем-то
У него этот "туннель" будет работать буквально неделю, может месяц, как великий на территории Российской Федерации РКН решит. На timeweb cloud имеется ТСПУ, как и у любых других официальных хостингов, где прямой доступ имеет РКН, ведь ТСПУ подключается у них.

Если на твой сервер придет "анонимная" жалоба на то, что у тебя будет работать то, что замедляется - тебе тариф просто снесут, ведь это запрещено (как VPN, так и прокси). Сами по себе прокси(условно, это будут HTTP(s) & SOCKS) имеют свои отпечатки и сигнатуры. SOCKS при работе отправляет сигнатуру версии (0x05), если есть авторизация (log/pass) то дополнительно появятся остальные. Если SOCKS без авторизации, то отправится следующее: 0x05 и 0x00, метод CONNECT - 0x01.

Если уже брать сервер за рубежом, то нужно будет признать, что во время белых списков, у тебя ничего не будет работать (также, допустим о том, что новость на белые списки WiFi является реальностью). Да, можно сделать другим способом, гнать траффик через vnext по подобной схеме: CLIENT -> RU_NODE -> VNEXT -> EU_NODE -> api.telegram.org

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

Если уже пошла такая тема, то я бы арендовал VPS в условных Нидерландах, Польше, Германии, США, где пинг будет меньше. Туда ставится панель для прокси, по типу x-ui/3x-ui, marzban, remnwave
На них создается vless reality для маскировки, фейк SNI

На твоем устройстве поднимается прокси 127.0.0.1:1080, где он передаст уже на мой сервер в забугор. В итоге, провайдер не видит типичный VPN и прокси

Но проще всего будто, без покупки доп. серверов, использовать WS:
DCПодсетьWebSocket
DC1149.154.160.0/22wss://pluto.web.telegram.org/apiws
DC2149.154.164.0/22wss://aurora.web.telegram.org/apiws
DC3149.154.168.0/22wss://aurora.web.telegram.org/apiws
DC491.108.12.0/22wss://vesta.web.telegram.org/apiws
DC591.108.56.0/22wss://flora.web.telegram.org/apiws
 
Последнее редактирование: