Статья
python-telegram-bot: настройка прокси в v13 и v20+
Библиотека python-telegram-bot — одна из самых популярных для написания ботов на Python.
Но API её прокси-настройки кардинально изменился между v13 и v20. Разберём оба варианта.
Версия 20+ (актуальная, async)
В v20 используется ApplicationBuilder и можно задать кастомный base_url.
Вариант А: API-прокси (рекомендуется)
Меняем сам endpoint — запросы идут через https://v0-telegram-proxy-api.vercel.app вместо api.telegram.org.
Работает даже если api.telegram.org заблокирован напрямую.
from telegram.ext import ApplicationBuilder
application = (
ApplicationBuilder()
.token("ВАШ_ТОКЕН")
.base_url("https://v0-telegram-proxy-api.vercel.app/bot")
.base_file_url("https://v0-telegram-proxy-api.vercel.app/file/bot")
.build()
)
application.run_polling()Вариант Б: SOCKS5/HTTP прокси
Если у вас есть SOCKS5 прокси:
from telegram.ext import ApplicationBuilder
application = (
ApplicationBuilder()
.token("ВАШ_ТОКЕН")
.proxy("socks5://user:pass@host:port")
.get_updates_proxy("socks5://user:pass@host:port")
.build()
)Версия 13.x (старая, sync)
import telegram
from telegram.ext import Updater
import urllib.request
# Вариант через SOCKS5
updater = Updater(
token="ВАШ_ТОКЕН",
request_kwargs={
'proxy_url': 'socks5h://user:pass@host:port'
}
)
# Вариант через HTTP прокси
updater = Updater(
token="ВАШ_ТОКЕН",
request_kwargs={
'proxy_url': 'http://host:port',
'urllib3_proxy_kwargs': {
'username': 'user',
'password': 'pass'
}
}
)Как проверить, что прокси работает
import asyncio
from telegram import Bot
from telegram.request import HTTPXRequest
async def check():
request = HTTPXRequest(proxy="https://v0-telegram-proxy-api.vercel.app") # для httpx-based клиента
bot = Bot(token="ВАШ_ТОКЕН", base_url="https://v0-telegram-proxy-api.vercel.app/bot")
me = await bot.get_me()
print(me)
asyncio.run(check())Или через curl:
curl https://v0-telegram-proxy-api.vercel.app/botВАШ_ТОКЕН/getMeЧастые ошибки
`NetworkError: Proxy requires authorization`
Укажите логин и пароль в URL прокси: socks5://user:pass@host:port
`SSLError`
Попробуйте добавить .connect_timeout(30) и .read_timeout(30) в ApplicationBuilder.
`InvalidToken`
Скопируйте токен заново из @BotFather — никаких пробелов.
Итог
Для v20+ самый надёжный способ — подменить base_url на https://v0-telegram-proxy-api.vercel.app/bot.
Это работает без каких-либо дополнительных прокси-серверов и не требует SOCKS5.
Сделай собственный прокси за 5 минут
Большинство статей советуют PythonAnywhere или Cloudflare Pages — но оба сервиса уже заблокированы в России и СНГ. Vercel работает стабильно.
Этот сайт создан на v0.app — AI-инструменте от Vercel. На разработку ушло 3 доллара. При регистрации по реферальной ссылке вы получаете $5 на баланс — этого достаточно, чтобы задеплоить свой личный прокси и проверить всё самостоятельно.
Этот сайт обошёлся в $3
Сделан на v0.app — AI-инструменте от Vercel. При регистрации по ссылке вы получаете $5 на баланс — достаточно, чтобы задеплоить свой личный прокси.