Почему MTProto-прокси не подходит для Bot API
Здесь есть ловушка: прокси из этого каталога боту на Bot API не подойдут. Бот, написанный
на aiogram, python-telegram-bot или любой другой библиотеке Bot API, общается с Telegram обычными
HTTPS-запросами к api.telegram.org. MTProto-прокси умеет только протокол
приложений Telegram, поэтому боту нужен HTTP- или SOCKS5-прокси — или сервер, откуда
api.telegram.org доступен напрямую.
Какой прокси нужен вашей библиотеке
| Библиотека | Какой прокси | Прокси из каталога |
|---|---|---|
| aiogram, python-telegram-bot, telebot, grammY (Bot API) | HTTP или SOCKS5 | MTProto — нет |
| Telethon (MTProto, в том числе вход ботом) | MTProto, SOCKS5, HTTP | Да, кроме EE-Mask: fake-TLS Telethon не поддерживает |
| Webhook-бот | Прокси не нужен для входящих: Telegram сам стучится на ваш сервер | — |
Прокси в коде
from aiogram import Bot
from aiogram.client.session.aiohttp import AiohttpSession
session = AiohttpSession(proxy="socks5://user:pass@host:1080")
bot = Bot(TOKEN, session=session)
app = (Application.builder()
.token(TOKEN)
.proxy("socks5://user:pass@host:1080")
.get_updates_proxy("socks5://user:pass@host:1080")
.build())
from telethon import TelegramClient, connection
client = TelegramClient(
"session", API_ID, API_HASH,
connection=connection.ConnectionTcpMTProxyRandomizedIntermediate,
proxy=("proxy.example.com", 443, "секрет"),
)
Нужен ли прокси вообще
Если бот работает на сервере в дата-центре за рубежом, прокси чаще всего не нужен вовсе:
проще перенести бота туда, чем гонять запросы через посредника. Прокси имеет смысл для
локальной разработки и серверов, где api.telegram.org недоступен.