跳到正文

Telegram 机器人 SOCKS5 代理(Python)

要装哪些包、aiogram 和 Telethon 各自的代理写法,以及怎么确认流量真的走了代理。

代理写在哪:两个库对照

用 aiogram 写的机器人通过 aiohttp 访问 Bot API,所以代理要放进 aiohttp 的会话里。用 Telethon 写的脚本走 Telegram 自己的协议,代理写在创建客户端的参数里。两个库都能用带账号密码的 SOCKS5,但各自需要一个配套的包。

这篇讲的是代码。Telegram 软件本身(电脑端、iPhone、安卓)的设置,请看这里链接的那篇。

aiogram 和 Telethon 对照

aiogram 和 Telethon 对照
项目aiogram(机器人)Telethon(账号和机器人)
安装pip install aiogram aiohttp-sockspip 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 日读取。

5 步配置

  1. 第 1 步

    在「我的资产」里复制 SOCKS5 资产的主机、端口、用户名和密码。

  2. 第 2 步

    先用 curl(命令见下)测账号密码,应该返回带代理出口 IP 的 JSON。

    预期结果 JSON 里是一个不是你自己的 IP。

  3. 第 3 步

    安装对应库的配套包:aiogram 用 aiohttp-socks,Telethon 用 python-socks[asyncio]。

  4. 第 4 步

    按 aiogram 或 Telethon 的示例加上代理,跑一次真实调用:机器人调用 get_me(),账号做首次登录。

  5. 第 5 步

    想在 Python 里也看到出口 IP,就跑 aiohttp 检查,它用的地址写法和 aiogram 一样。

在 Python 里检查出口 IP

# 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 相关的值换成你自己的。

aiogram 机器人走 SOCKS5

# 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 相关的值换成你自己的。

Telethon 客户端走 SOCKS5

# 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 测账号密码

curl -x socks5h://LOGIN:PASSWORD@HOST:PORT https://ipinfo.io/json

仅作示例:把 HOST、PORT、LOGIN、PASSWORD 和 Telegram 相关的值换成你自己的。

用 SOCKS5 还是 HTTP

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 的字典里直接写原始密码。

curl 能通,但机器人显示的是你自己的 IP

检查 代理没有传给真正发请求的会话,比如又新建了一个没带代理的 Bot 对象。

处理 只建一个带代理的会话,并传给你创建的每个 Bot。

用了一阵后出口变了

检查 动态住宅的账号密码每个新连接会换 IP。

处理 机器人或账号要一直用同一个地址,就用静态 IP。

用 Proxy302 怎么做

要长期用同一个地址的机器人或 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 页面里有软件内的设置和使用场景介绍。

在 Proxy302 的操作步骤

  1. 第 1 步

    打开静态 ISP 页面,选国家和 SOCKS5,核对费用后用钱包付款。

  2. 第 2 步

    打开「我的资产」,复制主机、端口、用户名和密码。

  3. 第 3 步

    填进示例里的代理 URL(aiogram)或字典(Telethon)。

  4. 第 4 步

    先跑检查再跑机器人,用 https://ipinfo.io/json 确认出口。

Telegram 机器人代理常见问题

aiogram 怎么用 SOCKS5 代理?

安装 aiohttp-socks,创建 AiohttpSession(proxy="socks5://LOGIN:PASSWORD@HOST:PORT"),再传给 Bot(token, session=session)。

Telethon 怎么用 SOCKS5 代理?

安装 python-socks[asyncio],把 proxy={"proxy_type": "socks5", "addr": "HOST", "port": 3333, "username": "LOGIN", "password": "PASSWORD"} 传给 TelegramClient。

代理必须支持账号密码吗?

两个库都能发送账号密码。用「我的资产」里的账号密码;代理没有登录的话就不写。

为什么我的机器人不走代理?

最常见的原因是没装配套包,或者代理传给了另一个会话或客户端,不是发请求的那个。

怎么确认机器人用了代理?

先用 curl 测账号密码,再用同一个地址跑 aiohttp 检查,然后调用 get_me(),并在 ipinfo.io 上看出口 IP。

参考资料

4
  1. aiogram documentation: AiohttpSession

    官方文档 · 确认日期:

    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).

  2. Telethon documentation: signing in, proxies

    官方文档 · 确认日期:

    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.

  3. aiohttp-socks on GitHub

    官方文档 · 确认日期:

    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.

  4. Proxy302 产品事实与价目表

    产品观察 · 确认日期:

    站点产品事实文件,2026 年 11 月 13 日对照控制台、后端和价目表核对:静态 ISP 按 IP 租赁价格(US$,1 PTC = US$1)、动态住宅低价线路每 GB 价格、proxy.proxy302.com 上 HTTP 2222 端口和 SOCKS5 3333 端口、各产品支持哪种协议、无免费试用。

准备好试试了吗?

注册账号、充值一次,就能选动态住宅、静态 ISP 或数据中心 IP,几分钟配进你的浏览器。