机器人卡住,然后超时
检查 HOST 或 PORT 写错、资产已到期,或者没装配套包。
处理 先跑 curl。curl 能通,就检查机器人所在的环境里是否装了 aiohttp-socks(aiogram)或 python-socks(Telethon)。
停止条件 curl 也超时就别再改代码了:去「我的资产」核对主机、端口和资产状态。
要装哪些包、aiogram 和 Telethon 各自的代理写法,以及怎么确认流量真的走了代理。
用 aiogram 写的机器人通过 aiohttp 访问 Bot API,所以代理要放进 aiohttp 的会话里。用 Telethon 写的脚本走 Telegram 自己的协议,代理写在创建客户端的参数里。两个库都能用带账号密码的 SOCKS5,但各自需要一个配套的包。
这篇讲的是代码。Telegram 软件本身(电脑端、iPhone、安卓)的设置,请看这里链接的那篇。
| 项目 | aiogram(机器人) | Telethon(账号和机器人) |
|---|---|---|
| 安装 | pip install aiogram aiohttp-socks | pip install telethon "python-socks[asyncio]" |
| 代理写在哪 | AiohttpSession(proxy=...),再 Bot(token, session=session) | TelegramClient(..., proxy=...) |
| 写法 | URL:socks5://LOGIN:PASSWORD@HOST:PORT | 字典:proxy_type、addr、port,可选 username、password、rdns |
| 其他协议 | http(隧道)、socks4(a)、socks5 | 这里的文档示例是 SOCKS5;MTProto 代理是另一种写法 |
来源:aiogram 和 Telethon 文档以及 aiohttp-socks 项目页,2026 年 11 月 13 日读取。
在「我的资产」里复制 SOCKS5 资产的主机、端口、用户名和密码。
先用 curl(命令见下)测账号密码,应该返回带代理出口 IP 的 JSON。
预期结果 JSON 里是一个不是你自己的 IP。
安装对应库的配套包:aiogram 用 aiohttp-socks,Telethon 用 python-socks[asyncio]。
按 aiogram 或 Telethon 的示例加上代理,跑一次真实调用:机器人调用 get_me(),账号做首次登录。
想在 Python 里也看到出口 IP,就跑 aiohttp 检查,它用的地址写法和 aiogram 一样。
# pip install aiohttp aiohttp-socks
import asyncio
import aiohttp
from aiohttp_socks import ProxyConnector
async def main():
connector = ProxyConnector.from_url("socks5://LOGIN:PASSWORD@HOST:PORT") # rdns is on by default for socks5
async with aiohttp.ClientSession(connector=connector) as session:
async with session.get("https://ipinfo.io/json") as response:
print(await response.text()) # the proxy's exit IP, not yours
asyncio.run(main())
仅作示例:把 HOST、PORT、LOGIN、PASSWORD 和 Telegram 相关的值换成你自己的。
# pip install aiogram aiohttp-socks
import asyncio
from aiogram import Bot
from aiogram.client.session.aiohttp import AiohttpSession
session = AiohttpSession(proxy="socks5://LOGIN:PASSWORD@HOST:PORT")
bot = Bot(token="BOT_TOKEN", session=session)
async def main():
me = await bot.get_me() # a real call to the Bot API, through the proxy
print("Bot:", me.username)
await bot.session.close()
asyncio.run(main())
仅作示例:把 HOST、PORT、LOGIN、PASSWORD 和 Telegram 相关的值换成你自己的。
# pip install telethon "python-socks[asyncio]"
from telethon import TelegramClient
API_ID = 123456 # from my.telegram.org
API_HASH = "YOUR_API_HASH"
proxy = {
"proxy_type": "socks5",
"addr": "HOST",
"port": 3333, # SOCKS5 port; use the PORT from My assets
"username": "LOGIN",
"password": "PASSWORD",
"rdns": True,
}
client = TelegramClient("account1", API_ID, API_HASH, proxy=proxy)
async def main():
me = await client.get_me()
print("Logged in as", me.username)
with client:
client.loop.run_until_complete(main())
仅作示例:把 HOST、PORT、LOGIN、PASSWORD 和 Telegram 相关的值换成你自己的。
curl -x socks5h://LOGIN:PASSWORD@HOST:PORT https://ipinfo.io/json
仅作示例:把 HOST、PORT、LOGIN、PASSWORD 和 Telegram 相关的值换成你自己的。
aiogram 文档列出支持 http(隧道)、socks4(a)、socks5,所以 http://LOGIN:PASSWORD@HOST:2222 这样的 HTTP 地址在这里也能用。Telethon 文档里的示例是 SOCKS5。
在 Proxy302,静态 ISP IP 按购买时选的协议发放;按 IP 租赁的资产,用同一组账号密码连另一种协议对应的端口也能通。动态住宅按 SOCKS5 生成的账号密码,走 2222 端口的 HTTP 也能用,但按 HTTP 生成的不能走 SOCKS5。拿不准就按 SOCKS5 生成或购买,用 3333 端口。
检查 HOST 或 PORT 写错、资产已到期,或者没装配套包。
处理 先跑 curl。curl 能通,就检查机器人所在的环境里是否装了 aiohttp-socks(aiogram)或 python-socks(Telethon)。
停止条件 curl 也超时就别再改代码了:去「我的资产」核对主机、端口和资产状态。
检查 LOGIN 或 PASSWORD 有错字,或者密码里的特殊字符把 URL 弄坏了。
处理 重新复制。URL 写法里,密码中的 @、:、/ 这类字符要做百分号编码;Telethon 的字典里直接写原始密码。
检查 代理没有传给真正发请求的会话,比如又新建了一个没带代理的 Bot 对象。
处理 只建一个带代理的会话,并传给你创建的每个 Bot。
检查 动态住宅的账号密码每个新连接会换 IP。
处理 机器人或账号要一直用同一个地址,就用静态 IP。
要长期用同一个地址的机器人或 Telegram 账号,适合买协议选 SOCKS5 的静态 ISP IP:租期内不轮换,1 天 US$0.50,30 天 US$7.99(折合约每天 US$0.27),SOCKS5 在 proxy.proxy302.com 的 3333 端口。几个机器人可以各配一个 IP,一次最多买 100 个。
没有免费试用,最小的一笔是 1 个 IP 用 1 天。Telegram 页面里有软件内的设置和使用场景介绍。
打开静态 ISP 页面,选国家和 SOCKS5,核对费用后用钱包付款。
打开「我的资产」,复制主机、端口、用户名和密码。
填进示例里的代理 URL(aiogram)或字典(Telethon)。
先跑检查再跑机器人,用 https://ipinfo.io/json 确认出口。
安装 aiohttp-socks,创建 AiohttpSession(proxy="socks5://LOGIN:PASSWORD@HOST:PORT"),再传给 Bot(token, session=session)。
安装 python-socks[asyncio],把 proxy={"proxy_type": "socks5", "addr": "HOST", "port": 3333, "username": "LOGIN", "password": "PASSWORD"} 传给 TelegramClient。
两个库都能发送账号密码。用「我的资产」里的账号密码;代理没有登录的话就不写。
最常见的原因是没装配套包,或者代理传给了另一个会话或客户端,不是发请求的那个。
先用 curl 测账号密码,再用同一个地址跑 aiohttp 检查,然后调用 get_me(),并在 ipinfo.io 上看出口 IP。
官方文档 · 确认日期:
Read on 13 November 2026: to use a proxy with AiohttpSession install aiohttp-socks; supported protocols are http (tunneling), socks4(a) and socks5; usage is AiohttpSession(proxy="protocol://host:port/") passed to Bot(token, session=session).
官方文档 · 确认日期:
Read on 13 November 2026: install python-socks[asyncio]; pass proxy= to TelegramClient; for SOCKS5 a dict with proxy_type, addr and port, optional username, password and rdns.
官方文档 · 确认日期:
Read on 13 November 2026: ProxyConnector.from_url("socks5://user:[email protected]:1080"); remote DNS (rdns) is the default for socks5; installed as aiohttp_socks.
产品观察 · 确认日期:
站点产品事实文件,2026 年 11 月 13 日对照控制台、后端和价目表核对:静态 ISP 按 IP 租赁价格(US$,1 PTC = US$1)、动态住宅低价线路每 GB 价格、proxy.proxy302.com 上 HTTP 2222 端口和 SOCKS5 3333 端口、各产品支持哪种协议、无免费试用。
注册账号、充值一次,就能选动态住宅、静态 ISP 或数据中心 IP,几分钟配进你的浏览器。