[BT下载] 从简述到软件使用

实用技术BT资源分享软件使用qBittorrent磁力
浏览数 - 799发布于 - 2025-06-11 - 20:36
zako
zako

1187

什么是 BT(BitTorrent)

BT 是一种基于对等网络(Peer to Peer)的文件共享协议,具有较强的容错性,不依赖单个分享者(初始阶段后)

BT 与中心化网盘的对比

它与其他常见的网盘(中心化网盘)的区别以一个简单的例子叙述:

假设现有一资源:

如果分享者用百度网盘这一方式分享,文件“走向”

zako-1749674536574https://excalidraw.com/#json=YycaKAsWH3osLi6NUndwy,U2_hhwEzzXX6eoFrSDgZOA

如果分享者用 BT 这一方式分享,文件“走向”

zako-1749672202844

https://excalidraw.com/#json=N1mA9KiWhS2J7FzputiwR,yyKpvbwU5F-SIoZ5akufpg

(DHT、Tracker 就略过不说啦) 当你下载完成后,保持 BT 软件的开启,就成为了新的“分享者”,为更多需要这个资源的人分享。希望每个人都可以多多做种/上传 QwQ

种子(.torrent)和磁力(magnet:?)的区别

种子与磁力一样,均有两个版本:v1 and v2

种子的 infohash 等效于磁力的 xt,它们的值就是信息哈希值

详见下文

一般种子比磁力链接会记录更多的信息,磁力就像告诉你包裹的样子,种子则包括包裹内装了什么东西
(因此使用磁力时,你需要等待“元数据搜索”,就是在已知包裹外表的情况下获取包裹的更多信息)

v1

标准参考: The BitTorrent Protocol Specification

种子包含的(v1)

  • announce:Tracker URL
  • info:包括以下内容的字典
    • name:建议保存到的文件和目录名称
    • piece length:每个文件块的字节数,除了最后一块外,其它块大小相同,通常是 256 KiB/或旧版默认 1 MiB
    • pieces:长度为 20 的倍数的字节串,分割为若干 20 字节段,每段是对应分块的 SHA-1 哈希值。
    • length:文件的大小(以字节为单位)(一共只有一个文件时)
    • files:一个字典的列表(每个字典对应一个文件),同时包括以下内容:
      • path:一个对应子目录名(路径)的字符串列表,最后一项是实际的文件名称
      • length:文件的大小

infohash :对 info 字典使用 bencoded 编码,再使用哈希函数计算得出(算法为SHA1)

磁力包含的(v1)

  • dn:文件名
  • xl:文件字节数
  • xt:包含文件散列函数值的URN(SHA-1)(40个字符)
  • as:在线文件的网络链接/ HTTP 源 比如:https://example.com/1.mp4(没有这个文件啦)
  • xs:包含多种类型的链接,包括:指向磁力链接的文件的HTTP(S)、FTP、SFTP等下载源
  • kt:用于搜索的关键字/词
  • mt:链接到一个包含磁力链接的元文件/列表
  • tr:Tracker URL

xt 是磁力最重要的部分(其他部分也可以说是可选的),直接指向了你需要下载的文件/目录

(事实上只要有 xt 字段就可以开始下载,但需要搜索元数据,可能会卡在这一步 QAQ) 比如 magnet:?xt=urn:btih:c5788b59890497b0fcb91e0d197afd58959dcf6 这就是一个非常简单的磁力链接(v1)(SHA-1段是用 head -c 20M /dev/urandom | sha1sum 随机生成的,实际上无效喵~) 磁力在使用上比种子文件方便许多,但下载起来可也能非常痛苦 (有些地方也会只发布信息哈希值,就是这样的:c5788b59890497b0fcb91e0d197afd58959dcf6)(比如某站文章里的神秘40位小写字符串

v2

标准参考: The BitTorrent Protocol Specification v2

种子包含的(v2)

  • announce:Tracker URL
  • info:一个字典,包括以下内容
    • name:建议保存到的文件/目录名称
    • piece length:每个文件块的字节数,除了最后一块外,其它块大小相同,至少为 16 KiB
    • piece layers:一个字符串字典。对于文件树中每个大于指定片段大小的文件,它包含一个字符串值。
    • meta version:整数值,为 2 ,指示版本
    • file tree 一个字典树,含有:
      • length:文件的大小(以字节为单位)
      • pieces root:对于非空文件,这是一个Merkle树的根哈希,分支因子为2,构建自 16KiB 的文件块

infohash :对 info 字典使用 bencoded 编码,再使用哈希函数计算得出(算法为SHA2-256)

磁力包含的(v2)

  • dn:文件名
  • xl:文件字节数
  • xt:包含文件散列函数值的URN(SHA2-256)(64个字符)
  • as:在线文件的网络链接/ HTTP 源 比如:https://example.com/1.mp4(没有这个文件啦)
  • xs:包含多种类型的链接,包括:指向磁力链接的文件的HTTP(S)、FTP、SFTP等下载源
  • kt:用于搜索的关键字/词
  • mt:链接到一个包含磁力链接的元文件/列表
  • tr:Tracker URL

v2 的 xt 字段为 xt=urn:btmh:[1220: (v2 prefix) BitTorrent Info Hash (Hex) ]形式
belike:magnet:?xt=urn:btih:[40位字符]&xt=urn:btmh:1220[64位字符]

以下是中文维基的链接,对 BT 下载原理感兴趣的可以阅读QwQ https://zh.wikipedia.org/wiki/BitTorrent_(%E5%8D%8F%E8%AE%AE)

下载(以qBittorrent Enhanced Edition为例)

终于写到这里啦!

zako-1749673120929 zako-1749672850557 zako-1749672858173 zako-1749672251978

反吸血

详细的 BT 客户端列表可见 Wikipedia: https://zh.wikipedia.org/wiki/BitTorrent%E5%AE%A2%E6%88%B7%E7%AB%AF 笔者推荐使用qBittorrent Enhanced Edition 即 qBittorrent 的“反吸血”增强版 那什么是“吸血”呢?为什么要“反吸血”呢? 这就要提知名的国产下载工具:迅雷 从上文我们知道,BT 下载时下载者之间也会互相传输文件,即使原分享者不继续做种,后续下载者也能从已下载者那里获取,如此“生生不息”。 但现实并非如此 比起“下完就跑”,有的软件在下载时只下载、不上传给其他客户端(只上传给同软件的用户,比如迅雷),(即便“下完就跑”也会贡献少量上传) 此外,迅雷有自己的服务器,会把一些 BT 资源存入其服务器,使其变得中心化、专供迅雷软件(“迅雷云盘 over BitTorrent”)。 这种行为如同“吸血鬼”,严重破坏下载环境。 qBittorrent Enhanced Edition 默认屏蔽了已知的“吸血”客户端 peer-id(客户端自报的身份标识)。 但是这也不完美 史记记载

为应对上下行比率,某论坛用户和云盘使用恶意软件从 Bittorrent 网络“无限吸血”

qBitTorrent 用户遭遇来自特定 IP 段的无限请求

有许多人处于各种目的 通过各种手段(伪报下载进度等)来“吸血”,建议在做种/下载时使用以下工具监测异常行为,防止被“吸血”:

https://github.com/Simple-Tracker/qBittorrent-ClientBlocker的增强自动屏蔽

自动封禁不受欢迎、吸血和异常的 BT 客户端

https://github.com/PBH-BTN/PeerBanHelper

Tracker

什么是 Tracker?

Tracker 是一种特殊服务器,就像在线电话簿。种子的分享者可以在上传时添加 Tracker,Tracker 服务器就知道哪些人有此文件 下载者连接 Tracker 后即可快速知道哪些分享者有其需要的文件。

配置 Tracker(以 qBittorrent Enhanced Edition 为例)

以下是一些收集公共 Tracker 服务器列表的项目:

每天更新!全网热门 BT Tracker 列表 https://github.com/XIU2/TrackersListCollection

更新的公共 BitTorrent Tracker 列表 https://github.com/ngosang/trackerslist

动漫磁力链接加速方案(animeTrackerList) https://github.com/DeSireFire/animeTrackerList

例如选取 https://github.com/XIU2/TrackersListCollection 中的 Best 列表: https://cf.trackerslist.com/best.txt 然后复制列表,粘贴到 qBittorrent Enhanced Edition 的“Trackers” 面板中即可。

zako-1749672244495 zako-1749672381564

制作种子分享

现在你已经是一个熟练的下载者,是时候学会如何分享独家资源了

  1. 打开 qBittorrent Enhanced Edition 主界面
  2. 依次点击“工具”→“制作 Torrent”
  3. 选择要分享的文件/文件夹路径
  4. (可选)添加 Tracker 列表
  5. 点击“制作”并选择 .torrent 文件的保存路径
  6. 完成后即可分享 .torrent 文件,或在种子列表中右键→复制“磁力链接”给其他人

zako-1749672378114 zako-1749672729021 zako-1749672750571

补充 - 种子文件的编辑

.torrent 实际上是 bencoded 编码后的文本文件
我们可以使用一些工具来查看/编辑它
比如https://chocobo1.github.io/bencode_online/,在线的编解码器
跨平台可视化 .torrent 编辑器:https://github.com/torrent-file-editor/torrent-file-editor

祝大家天天开心呀~~~

本文以CC BY-NC许可

重新编辑于 - 2025-06-12 - 13:36

#1
2025-06-11 - 21:49
#3

好哦,会尝试使用BT,打算先攒钱购置一台小服务器丢宿舍运转Sticker

2025-06-12 - 04:37
zako
zako

1187

#4

感谢提醒 已修正QwQ

2025-06-12 - 04:55
zako
zako

1187

#5

感谢,其实写了qBittorrent-ClientBlocker和PeerBanHelper的

>w<

2025-06-12 - 04:57 (已编辑于 2025-06-12 - 04:57)
zako
zako

1187

#6

好耶!zako-1749704789879

2025-06-12 - 05:06 (已编辑于 2025-06-12 - 05:08)
#7

好用心的文章!解决了我对BT的很多疑惑!谢谢楼主(≧∇≦)

2025-06-12 - 05:29
fylcr
fylcr

1529

#8

当然,bt是有缺点的,比如你开心地下载比特彗星后发现你用的是校园网不让用p2p

(提到p2p,我突然想起来syncthing这个软件,最近几天搞一搞syncthing再讲)

(当然,p2p有n种方法防屏蔽,但是这些方法貌似对bt不太生效,因为这些方法主要是libp2p才支持的,等回来也研究研究)

2025-06-12 - 06:14
zako
zako

1187

#9

确实是这样的,一些地方的运营商对BT流量的QoS也很严重(可能开启强制加密可以部分缓解(但是只能是缓解了))
校园网有个好处是部分IPv6流量免费,校园网内已有知名的PT站点(不过不太open QwQ)

说到Syncthing,印象里是 Resilio Sync(BTSync)的部分功能开源替代,但是似乎不像 Resilio Sync 那样利于分享,而倾向于个人用途的多设备数据同步?
说到libp2p,似乎 IPFS 的公共网关少了很多(

zako-1749723865577

2025-06-12 - 10:24 (已编辑于 2025-06-12 - 10:28)

评论

fylcr
fylcr评论zako

Resilio Sync的中继服务器基本被屏完,基本上只有付费的可以用 IPFS的公共网关基本上都被GFW干掉了(不过可以用cf worker反代),但IPFS真的很难上传文件 如果我选的话,我可能会选btfs(但是tron对于btfs似乎不上心,一堆子Bug)

zako
zako评论fylcr

我使用具有DHT功能的旧版本目前倒还可以,新版本挂上代理也可以用(确实不方便) <https://ipfs.github.io/public-gateway-checker/>列出的少了很多的样子

fylcr
fylcr评论zako

就github上的公共网关不开代理就只有pinate能打开,结果pinate是要有apikey才能用的 如果你用dht的话...我觉得下载速度还不如用百度网盘 再说了,pin服务也不好用,要么太贵,要么便宜的crust传不动,ipfs基本上一点点都用不了

zako
zako评论fylcr

某个热门key可以有5~9MiB/s 其他的就很不妙了 QAQ

fylcr
fylcr评论zako

什么key

妄言
妄言

1009

#10

请问GGbases上的磁力链接文件下不动是链接不行了吗

2025-06-13 - 17:27
#11

GGBase上的torrent下载不动有很多情况,如果是那种很老的资源那大概率是死种子,只能祈祷有人用迅雷下过了。如果是最近发的那就是你的网络设置有问题,DTH节点不够多或者网络质量太差劲

2025-06-13 - 18:50
kohaku