代理可以监听 IPv6 地址,同时把连接转发到另一地址族上的 Telegram 服务器。请把代理端点和最终的 Telegram 端点分开看待。

在 Telethon 1.45 中,只要应用环境里已安装文档所述的 python-socks[asyncio] 依赖:

from telethon import TelegramClient

client = TelegramClient(
    'existing-session', api_id, api_hash,
    proxy={
        'proxy_type': 'socks5',
        'addr': '2001:db8::10',
        'port': 1080,
        'rdns': True,
    },
)

把文档示例中的 IPv6 地址和端口替换为实际的监听地址。地址字段是不带方括号的字面量,因为端口已经是单独的字段。只有把 IPv6 地址嵌入 URL authority 时才需要方括号。

需要时,为 SOCKS 账号添加 username 和 password 字段。SOCKS5 账号与 Telegram 的 API ID、API hash 和 session 相互独立。

use_ipv6=True 控制 Telethon 选择哪个 Telegram 服务器地址,它并不是把 IPv6 代理主机名变成合法监听地址的开关。

如果旧环境在 IPv6 上失败,请检查实际运行的 Python 解释器可用的后端。在另一个虚拟环境里导入成功,并不会改变当前进程。MTProto 代理连接模式使用带 secret 的另一种元组,那是另一套配置。

相关文章