BEP 0036 指定了有关使用发布种子 RSS 订阅的相关规范,也就是 qBittorrent 等软件中的 “RSS阅读器” 功能。 实现了此规范的 Tracker 能够通过 RSS 发布订阅,客户端将会从订阅中自动下载 .torrent 文件。 Feed 类型 由于支持 Atom 的客户端非常稀少,因此推荐使用 RSS2.0 规范来发布 Feed。 标签 enclosure RSS 订阅中每个 Item 必须有一个 enclosure 标签,且 type 字段必须为 application/x-bittorrent,如果 Tracker 支持,还可以携带一个 length 字段代表 .to…
BEP 0048 为 Tracker 添加了一个新的协议:scrape (抓取)。 抓取协议允许客户端更新目前 Tracker 上活动的用户数,并以此决定是否应该通过 announce (宣告)协议与 Tracker 联系并更新对等方列表和自己的最新状态。 示例请求 客户端会将原有 Tracker URL 的 announce 替换为 scrape,并向这个接口发送 GET 请求。 GET /scrape?info_hash=xxxxxxxxxxxxxxxxxxxx&info_hash=yyyyyyyyyyyyyyyyyyyy 客户端可以添加多个 info_hash 在查询参数中来同时…
在 BEP 0003 中,我们介绍了对于 Peers 的响应返回。 但是当对等体过多的时候,peers 字段将会变得相当庞大,而且经过时间证明,其中 peer_id 字段完全可以被省略,没有存在的必要。因此,BitTorrent 对响应做出了改进,以便进一步压缩响应体的大小。 新增查询参数 客户端通过添加 compact 字段指示 Tracker 是否应该返回 compact 样式的响应,以下是一个示例请求: GET /announce?info_hash=j%25%7c%fe%12%0e%c0%9d%ee6%d5%df%03%bb%fda%cd%7b%97%b5&peer_id=-q…
BEP 0031 为 BEP 0003 的失败响应提供了一个额外字段 retry in,单位为秒,代表指定秒后客户端应当再次重试上个操作,例如 Tracker 服务器过载,客户端应当稍后再试。 此外,retry in 还可以被指定为 never,代表客户端不应再进行任何尝试,例如客户端请求的这个地址并不是一个 Tracker 服务器,或者指定的种子未在此 Tracker 上注册等等场景。 示例(使用 JSON 格式以提高可读性) { "failure reason": "Server is busy, please try again later.", "retry in": 600 }
BEP 0007 为 BitTorrent 协议引入了 IPV6 支持。 新增查询参数 ipv4 - 客户端向 Tracker 汇报自己的 IPV4 地址 ipv6 - 客户端向 Tracker 汇报自己的 IPV6 地址 key - 参考标志 客户端会生成一个随机的 key,并配合自己的 peer_id 来允许 Tracker 在多次 announce(宣告)期间识别你的客户端。 注1:这个 key 似乎不是很需要的样子,毕竟识别唯一身份 peer_id 可能就够了。 注2:BEP 中说不推荐使用 ipv4/ipv6 参数,可能会允许坏客户端引发拒绝服务攻击(DDoS),但实际上,大部分客户…
在开发 BitSapling/Sapling 的过程中,我意识到中文互联网似乎没有很好介绍 BitTorrent 协议的文章(当然,英文文献也并不是很多),同时 BitTorrent 官方的 BEP 介绍也含糊不清,特开新的一个文章系列来记录各个 BEP 的 Tracker 部分的具体实现方式。 BEP 0003 - The BitTorrent Protocol Specification 0003 号 BEP 是 BitTorrent 协议中最基础的规范,它规范了一个 BitTorrent Tracker 最基础的功能。 Bencode 编码 在 BT 协议中,客户端、.torrent 文…
Barbatos Realms 最近在搞统一认证,聚合 Blessing Skin, Xenforo, Wordpress 等一系列乱七八糟的各种程序到 Wordpress 上。 偷懒为先,最好的解决方案自然是 OAuth 2,上述程序都有它的 Client 实现,对接甚是方便,但主要问题是,谁来做 Server (Provider)? 探索 WordPress 现有解决方案 以 OAuth 为关键字搜索,基本上都是 Client,而作为 Server 的只有 miniOrange 这一家独占。 我打赌不少人肯定都试过 miniOrange 的 Server 但问题在于,免费版本接近无法使用,…
在我们自建这套系统之前,我们一直依赖 Crowdin 提供的 Over-The-Air Content Delivery 功能,为安装在众多服务器上的 QuickShop Hikari/Reremake 在线更新本地化语言文件。 那么好端端的,你们怎么突然自建了 很简单,付不起钱了?。 作为个人开发者维护的完全免费的软件,每年找要我们 100 USD 我们可吃不消,更何况用户越来越多。 最初 Crowdin 免费提供该功能,但在中途修改为了付费服务(然而我并不知情),直到22年12月圣诞节期间,Crowdin 团队年底清算的时候给我发来了一封邮件: Crowdin CDN payment (s…
本来计划是今年过年都好好见个面,好好过个年。 但好巧不巧,由于过年前,家里姥姥和奶奶都阳了一遍,由于担心重复感染,于是世界拒绝了我。 就在没事干的时候,我看到了我手边淘汰下来的 OnePlus 9R…… 没事干,刷个机 一加作为国内少数几个还给普通人几乎零门槛的BL解锁的品牌,拿到手的手机不刷个机那简直是对不起一加这个名字。 大年初一的晚上,我把手机插上了 USB 线…… 隔壁家叔叔今年大年初一还在 9008,你可千万不能变成那样 刷机目标是 Nameless AOSP,其基于 OOS 12/13 底层,所以需要先刷到氧,再升级到氧 OS,再升级氧 OS 13,最后刷入 Nameless。 备…