自从开发 PeerBanHelper 和 BTN 威胁情报网络以来,BTN 已经良好的运行了数月。是时候整理一下数据,水篇文章了。 注意:本数据仅来自于 BTN 网络所收集的数据,其数据样本由 BTN 网络参与者的下载器中添加的 Torrents 决定,可能并不具有典型代表性。 最受伪装者欢迎的客户端 客户端在握手时会传递自己的客户端名称和 Pee…
好久没写文章了,最近一直在搞自己 Minecraft 小服务器的事情,难得抽出时间来写写技术文章~ 最近为了 BR 的数据存档计划能更加顺利的实施,BR 也安装了一个 NexusPHP 用于追踪种子的上传/下载量和做种状态。但是 NexusPHP 自己用户系统相当难用,BR 也有自己的统一授权服务(基于 Casdoor),因此搓了个 OAuth 功…
BEP 0036 指定了有关使用发布种子 RSS 订阅的相关规范,也就是 qBittorrent 等软件中的 “RSS阅读器” 功能。 实现了此规范的 Tracker 能够通过 RSS 发布订阅,客户端将会从订阅中自动下载 .torrent 文件。 Feed 类型 由于支持 Atom 的客户端非常稀少,因此推荐使用 RSS2.0 规范来发布 Fee…
BEP 0048 为 Tracker 添加了一个新的协议:scrape (抓取)。 抓取协议允许客户端更新目前 Tracker 上活动的用户数,并以此决定是否应该通过 announce (宣告)协议与 Tracker 联系并更新对等方列表和自己的最新状态。 示例请求 客户端会将原有 Tracker URL 的 announce 替换为 scrape…
在 BEP 0003 中,我们介绍了对于 Peers 的响应返回。 但是当对等体过多的时候,peers 字段将会变得相当庞大,而且经过时间证明,其中 peer_id 字段完全可以被省略,没有存在的必要。因此,BitTorrent 对响应做出了改进,以便进一步压缩响应体的大小。 新增查询参数 客户端通过添加 compact 字段指示 Tracker …
BEP 0031 为 BEP 0003 的失败响应提供了一个额外字段 retry in,单位为秒,代表指定秒后客户端应当再次重试上个操作,例如 Tracker 服务器过载,客户端应当稍后再试。 此外,retry in 还可以被指定为 never,代表客户端不应再进行任何尝试,例如客户端请求的这个地址并不是一个 Tracker 服务器,或者指定的种子…
BEP 0007 为 BitTorrent 协议引入了 IPV6 支持。 新增查询参数 ipv4 - 客户端向 Tracker 汇报自己的 IPV4 地址 ipv6 - 客户端向 Tracker 汇报自己的 IPV6 地址 key - 参考标志 客户端会生成一个随机的 key,并配合自己的 peer_id 来允许 Tracker 在多次 annou…
在开发 BitSapling/Sapling 的过程中,我意识到中文互联网似乎没有很好介绍 BitTorrent 协议的文章(当然,英文文献也并不是很多),同时 BitTorrent 官方的 BEP 介绍也含糊不清,特开新的一个文章系列来记录各个 BEP 的 Tracker 部分的具体实现方式。 BEP 0003 - The BitTorrent …
最近一直在玩 PT,感叹 NexusPHP 的性能、代码质量和安全都实在是相当感人了,这种上古软件能活到今天也算是一个奇迹了。所以在自己悄悄搓 PT 程序。 对于一个 Private Tracker 程序,重要功能那自然是读取解析 Torrent,并把其中的 Tracker 换成我们自己的。本想用库来实现,但相当遗憾的是我没找到能够满足我需求的 V…
Ghost_chu 补丁2022-12-09 - 为 4.5.0, 4.6.0beta1 构建应用了语言选择器补丁,这是一个上游问题,并在本文中的构建中得到临时修复,本文提供的构建可以正常在 WebUI 中选择简中语言。 当前正在维护的 qBittorrent 版本v4.2.x -> 4.2.5v4.3.x -> 4.3.9v4.4.x -> …