BitComet 私有种子为什么不支持长效种子 — 协议层面的硬限制
问题表象
在 BitComet 里下载一个私有种子(Private Torrent) 任务时,你可能会发现:
- 任务详情面板的"对等者"选项卡里,从来不会出现"长效种子"或"LTS"标记的对等者。
- BT 任务属性的"高级选项"里,长效种子状态一直显示"未启用"。
- 即使这个私有种子任务已经卡 99% 很久了,BitComet 的长效种子也不会来救它。
你可能会疑惑:为什么公共种子有长效种子、私有种子就没有?我能不能手动开启?
答案是:协议层面的硬限制,绕不开
这不是 BitComet 的功能缺失或 bug——私有种子不支持 DHT、PEX、长效种子是 BT 协议(BEP-27)的设计目标本身。以下一步步拆解为什么。
私有种子的协议定义
BT 协议标准(BEP-27)对私有种子的定义非常明确:
Private torrents MUST NOT advertise themselves to the DHT network。Private torrents MUST NOT use PEX。Private torrents MUST ONLY announce themselves to the trackers listed in the torrent file。
翻译过来就是:
- 私有种子绝对不能在 DHT 网络里广播自己的存在——任何试图加入 DHT 的行为都违反协议。
- 私有种子绝对不能使用 PEX(Peer Exchange)——不能和已连接的对等者交换"我还认识哪些对等者"的信息。
- 私有种子只能向 torrent 文件里硬编码的那几个 Tracker 服务器请求对等者列表——没有其他发现渠道。
长效种子需要 DHT 和 PEX 做什么
BitComet 的长效种子技术要工作,需要两个前提:
前提一:在 DHT 网络里广播你的资源需求
BitComet 要救活一个 99% 卡住的任务,首先要告诉 DHT 网络"我需要哈希为 X 的资源,有人持有吗?"——这个查询请求只有在 DHT 网络上其他 BT 客户端才能看到。但私有种子协议禁止在 DHT 上广播。BitComet 无法绕过这个禁止——如果它擅自广播,Tracker 服务器会认为你不是一个合规的 BT 客户端、把你踢出私种用户组甚至封禁账号。
前提二:长效种子池的节点能被 Tracker 接入
BitComet 的长效种子池里登记的节点都是 BitComet 用户(不限于这个私有 Tracker 的用户)。私有 Tracker 的设计目的就是"只让列表里的特定用户互相发现"——Tracker 服务器收到一个请求,如果请求者的 token/UID 不在当前 Tracker 的用户注册表里,直接拒绝。长效种子池里的外部节点根本没资格连接这个私有 Tracker。
前提三:长效种子 HTTP 镜像搜索也受限
BitComet 的跨协议下载(自动搜索 HTTP/FTP 镜像)理论上不需要 DHT 也能工作——它只需要搜索引擎和 HTTP 镜像源。但:
- 私有种子的资源通常是版权敏感的——不可能同时存在公开的 HTTP/FTP 镜像(否则早就被版权方下架了)。
- 就算真有 HTTP 镜像存在,它们通常也是 Tracker 内部私有的(比如论坛附件区),需要登录才能访问——BitComet 的 HTTP 镜像搜索拿不到登录 Cookie。
所以私有种子在各个加速通道上都是封闭的:DHT 被禁、PEX 被禁、长效种子被禁、跨协议 HTTP 镜像几乎不可能存在。唯一的数据源就是 Tracker 列表里的那些对等者。
私种站对违规客户端的处罚
BT 私种站(特别是规则严格的那种,比如 Ratio Tracker、WhatCD 类似的)对客户端行为有明确约束:
- 禁止私有种子参与 DHT:如果你的客户端(通过 DHT)在私有种子上对外广播,Tracker 可能检测到并给你扣分、警告、严重的直接封禁账号(踢出用户组)。
- 禁止私有种子使用非白名单客户端:有些私种站维护一份"允许客户端列表"(BitComet、qBittorrent、Deluge 等在列),不在列表里的客户端即使能连上 Tracker 也不给对等者列表。
- 长效种子在这个列表里吗?:即使 BitComet 本身在允许列表里,它的长效种子功能因为会涉及 DHT 通信,可能被私种站识别为"违规行为"。
底线:不要试图在私有种子上手动开启长效种子——轻则无效,重则被 Tracker 封禁。
私有种子死局了怎么办
私有种子卡 99% 的时候你能做的比公共种子少很多:
| 方法 | 公共种子 | 私有种子 |
|---|---|---|
| 等长效种子自动激活 | ✅ | ❌ |
| 强制重新校验 | ✅ | ✅ |
| 换 BT 客户端 | ✅ | ✅(但要选私种站允许的) |
| 手动加公共 Tracker | ✅ | ❌(私有 Tracker 会拒绝) |
| DHT 兜底 | ✅ | ❌ |
| 跨协议 HTTP 镜像 | ✅ | ⚠️ 几乎不可能(资源通常版权敏感) |
| 换资源(网盘/论坛私信) | ✅ | ✅(这是最靠谱的) |
最靠谱的方法:换个渠道拿这个资源(私信 Tracker 管理员、去其他分享站找、用网盘直链等)。私有种子死了就是死了,真的没有 BT 协议层面的解法。
为什么公共种子就可以有长效种子
对比一下:
- 公共种子的 DHT 是开放的——任何 BT 客户端都可以广播自己的资源需求,Tracker 不会管(Tracker 只管登记、不管谁连过来)。
- 公共种子的 Tracker 不限制谁能加入——长效种子池里的任何 BitComet 节点只要能连上 Tracker,Tracker 就给它对等者列表(不需要用户注册、不需要 token)。
- 公共种子容易存在 HTTP 镜像——公开资源同时出现在多协议平台是常态。
BitComet 的长效种子在公共种子场景下是锦上添花的加速通道,在私有种子场景下从协议层面就被堵死了。这是设计时就注定的行为,不是 BitComet 团队不想做。
那为什么 BitComet 不干脆在私有种子上禁用长效种子相关的 UI
实际上 BitComet 已经自动禁用了——在私有种子任务上,你看不到任何"长效种子"的入口(选项被灰掉或自动关闭)。这是为了避免用户困惑"为什么我的私有种子任务找不到长效种子源"。
但用户可能不知道这个自动禁用的原因——这就是本文要澄清的:不是 Bug,是协议约束。长效种子和私有种子的矛盾不是 BitComet 一家的问题——任何 BT 客户端(qBittorrent、Deluge、Vuze 等)的类似加速功能在私有种子上都会被同样的限制卡住。