如何在Aiogram 3.1.1(Python)中配置代理以访问Telegram API
Aiogram 3.1.1配置代理访问Telegram API解决方案
由于网络限制无法访问Telegram API,只需给Bot实例配置代理即可解决问题,以下是两种可行的配置方式:
方式一:代码中直接配置代理
修改Bot初始化逻辑,通过AiohttpSession传入代理信息,支持HTTP和SOCKS5类型的代理:
import asyncio from aiogram import Dispatcher, Bot from aiogram.filters import CommandStart from aiogram.types import Message from aiogram.client.session.aiohttp import AiohttpSession # 替换为你的代理地址,格式:协议://[用户名:密码@]代理地址:端口 # SOCKS5示例:socks5://user:pass@127.0.0.1:1080 # HTTP示例:http://user:pass@127.0.0.1:8080 proxy_url = "socks5://your-proxy-address:port" token = 'tokentokentokentokentokentokentoken' # 创建带代理的会话 session = AiohttpSession(proxy=proxy_url) # 初始化Bot时传入该会话 the_bot = Bot(token, session=session) main_handler = Dispatcher() @main_handler.message(CommandStart()) async def cmd_start(msg: Message) -> None: await msg.answer('hi') async def main(): await main_handler.start_polling(the_bot) if __name__ == '__main__': asyncio.run(main())
方式二:通过环境变量配置代理
如果不想在代码里硬编码代理信息,可以通过系统环境变量设置,Aiogram会自动读取:
Linux/macOS终端执行:
export HTTPS_PROXY="socks5://your-proxy-address:port" export HTTP_PROXY="socks5://your-proxy-address:port"
Windows命令提示符执行:
set HTTPS_PROXY=socks5://your-proxy-address:port set HTTP_PROXY=socks5://your-proxy-address:port
设置完成后,直接运行你原来的代码即可,无需修改代码逻辑。
注意事项
- 确保代理服务正常运行,并且能够访问
api.telegram.org - 若代理需要身份验证,在代理URL中加入用户名和密码,例如:
socks5://username:password@host:port - Aiogram 3.x版本推荐使用
AiohttpSession来配置代理,这是官方推荐的会话实现
内容的提问来源于stack exchange,提问作者Alexander Shushakov
相关产品推荐
相关产品推荐

