-
Notifications
You must be signed in to change notification settings - Fork 8
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
完善中文文档,使其更加正式和清晰 #18
base: master
Are you sure you want to change the base?
完善中文文档,使其更加正式和清晰 #18
Changes from 4 commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,37 +1,37 @@ | ||
# 连接 BTN | ||
|
||
要参与 BTN 计划,只需要将 BTN 客户端连接到 BTN 服务器就好了。本文使用 PeerBanHelper 作为 BTN 客户端,Sparkle 作为 BTN 服务端进行演示。 | ||
若要参与 BTN 计划,您只需将 BTN 客户端与 BTN 服务器进行连接即可。本文将以 PeerBanHelper(简称 PBH)作为 BTN 客户端,Sparkle 作为 BTN 服务端为例进行演示。 | ||
|
||
## Sparkle | ||
|
||
Sparkle 是 PBH-BTN 的官方 BTN 服务器。 | ||
Sparkle 是 PBH-BTN 组织的官方 BTN 服务器。 | ||
|
||
### 注册账号,创建 UserApp | ||
### 注册账号并创建 UserApp | ||
|
||
浏览器打开 [https://btn-prod.ghostchu-services.top](https://btn-prod.ghostchu-services.top) 并使用 GitHub 授权登录,就会自动创建一个账号。 | ||
请在浏览器中打开 [https://btn-prod.ghostchu-services.top](https://btn-prod.ghostchu-services.top) 并使用 GitHub 授权登录,系统将自动为您创建一个账号。 | ||
|
||
点击顶部菜单的 “用户应用程序” 链接来到管理页面。 | ||
接着,点击页面顶部的“用户应用程序”链接,进入管理页面。 | ||
|
||
![homepage](./assets/btn-homepage.png) | ||
|
||
点击 “创建新用户应用程序”,输入一个备注,然后点击按钮创建。 | ||
点击“创建新用户应用程序”,输入一个备注信息后,点击按钮完成创建。 | ||
|
||
![management](./assets/userapp-management.png) | ||
|
||
现在记下页面上显示的 `AppID` 和 `AppSecret`,因为一旦关闭这个页面,`AppSecret` 就不会再显示了。 | ||
请务必记录页面上显示的 `AppID` 和 `AppSecret`,因为一旦关闭该页面,`AppSecret` 将不再显示。 | ||
|
||
![created](./assets/userapp-created.png) | ||
|
||
## 在 PBH 上加入 BTN 网络 | ||
## 在 PeerBanHelper 上加入 BTN 网络 | ||
|
||
转到 设置 -> 基础设置 选项。 | ||
请前往设置 -> 基础设置 选项。 | ||
|
||
![btn1](./assets/btn1.jpg) | ||
|
||
向下滑动找到 BTN 设置,打开 “启用 BTN 模块”,并填写刚刚在上面获取的 AppID 和 App Secret: | ||
向下滑动至 BTN 设置部分,勾选“启用 BTN 模块”,并填入之前获取的 AppID 和 App Secret: | ||
|
||
![btn2](./assets/btn2.jpg) | ||
|
||
滚动到底部,点击“保存”按钮,然后重启 PeerBanHelper 使其生效。 | ||
滚动至页面底部,点击“保存”按钮,并重启 PeerBanHelper 以使设置生效。 | ||
|
||
![btn3](./assets/btn3.jpg) | ||
![btn3](./assets/btn3.jpg) |
Original file line number | Diff line number | Diff line change | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
|
@@ -4,75 +4,60 @@ sidebar_position: 1 | |||||||||||
|
||||||||||||
# 什么是 BTN | ||||||||||||
|
||||||||||||
在开始了解什么是 BTN 之前,我们首先需要了解一下历史上的各种反吸血手段。 | ||||||||||||
在深入探讨 BTN 之前,我们有必要先回顾一下反吸血技术的发展历程。 | ||||||||||||
|
||||||||||||
## 反吸血的前世今生 | ||||||||||||
## 反吸血技术的发展 | ||||||||||||
|
||||||||||||
### 史前时代 | ||||||||||||
### 初始阶段 | ||||||||||||
|
||||||||||||
最开始时,人们使用基于 PeerID 和 ClientName 的黑名单来屏蔽特定一类客户端,阻止他们连接到下载器来反吸血。 | ||||||||||||
这种反吸血方式粗暴好用,但前提是下载器不会对 PeerID 和 ClientName 伪装,一旦进行了伪装,则此功能则完全失效。 | ||||||||||||
最初,人们采用基于 PeerID 和 ClientName 的黑名单策略,以阻止特定类型的客户端连接到下载器进行吸血。这种策略虽然简单有效,但前提是下载器不会对这些标识符进行伪装,一旦伪装成功,该策略即失效。 | ||||||||||||
|
||||||||||||
### 流量检测时代 | ||||||||||||
### 流量监测阶段 | ||||||||||||
|
||||||||||||
后来,BitComet 等下载器引入了流量监测方式。如果下载文件的时候,一个 Peer 超过一段时间没有发送给下载器任何片段,就认为是吸血并封禁。 | ||||||||||||
然而对于 101. 打头的这批吸血者,它们会给很小的上传流量,但足以骗过这种流量监测的反吸血方式。此外此方式对做种用户毫无作用。 | ||||||||||||
随后,BitComet 等下载器引入了流量监测机制。如果某个 Peer 在一段时间内未向下载器发送任何数据片段,则被视为吸血行为并被封禁。然而,对于以 101. 开头的 IP 地址段的吸血者,它们通过发送微量上传流量来规避这种监测,同时该策略对做种用户无效。 | ||||||||||||
|
||||||||||||
### 以牙还牙的算法反吸血时代 | ||||||||||||
### 算法反吸血阶段 | ||||||||||||
|
||||||||||||
LibTorrent 引入了一种以牙还牙,针锋相对的反吸血算法。如果一个 Peer 不愿意提供文件片段,这个 Peer 在 LT 的优先级就会慢慢降低,直至完全不传输数据。 | ||||||||||||
和流量监测相似,一点上传就足以骗过检测,且对做种用户毫无用处(因为做种不会下载任何片段)。 | ||||||||||||
LibTorrent 引入了一种以牙还牙的反吸血算法。如果一个 Peer 不愿提供数据片段,其在 LibTorrent 中的优先级将逐渐降低,直至完全停止数据传输。与流量监测类似,微量上传足以绕过检测,且对做种用户无影响。 | ||||||||||||
|
||||||||||||
### 启发式检测算法 | ||||||||||||
### 启发式检测阶段 | ||||||||||||
|
||||||||||||
由 PeerBanHelper 提出的启发式检测算法(进度检查器/PCB)可以有效的检测如进度回退、过量下载这类作弊手段。但其也有自己的缺点——反应慢。 | ||||||||||||
当检测被触发的时候,吸血者已经恶意下载了不少量的数据。因此通过这种方式反吸血尽管效果不错,但效率较低。只能用作尽可能减少损失。 | ||||||||||||
PeerBanHelper 提出了启发式检测算法(如进度检查器/PCB),能有效检测进度回退、过量下载等作弊行为。然而,该算法反应较慢,当检测触发时,吸血者已下载大量数据。因此,尽管效果显著,但效率较低,主要用于减少损失。 | ||||||||||||
|
||||||||||||
## 所以怎么办 | ||||||||||||
## 应对策略 | ||||||||||||
|
||||||||||||
答案是:共享 IP 规则。 | ||||||||||||
面对上述挑战,共享 IP 规则应运而生。最初,人们通过口口相传传递高风险 IP 段,但随着吸血者频繁更换 IP,这种方法时效性有限。因此,需要一种能够快速响应的数据分析和 IP 封禁技术。 | ||||||||||||
|
||||||||||||
最开始我们通过人传人互相传递高风险 IP 段。但随着游击战的开始,IP 你封我换,而很遗憾这又是一个时效性很高的东西。在还没来得及让更多人知道新规则之前,吸血者可能就已经更换到了下一个 IP 地址。 | ||||||||||||
因此,必须有一种可以快速和及时响应的数据分析和 IP 封禁技术出现。 | ||||||||||||
## BTN 的诞生 | ||||||||||||
|
||||||||||||
## 答案是 BTN | ||||||||||||
BTN(全称 BitTorrent Threat Network)由 BTN 服务器和 BTN 客户端组成,通过 [BTN 协议](https://github.com/PBH-BTN/BTN-Spec) 实现数据交换。 | ||||||||||||
|
||||||||||||
BTN(全称 BitTorrent Threat Network),它由 BTN 服务器和 BTN 客户端组成。通过 [BTN 协议](https://github.com/PBH-BTN/BTN-Spec) 交换数据。 | ||||||||||||
BTN 客户端通过 PCB 等方式发现异常 Peer 后,会定时通过 BTN 协议上报给服务器。服务器收集大量客户端数据,生成异常 IP 列表,并通过 BTN 协议下发给不同客户端,从而在吸血行为发生前将其屏蔽。 | ||||||||||||
|
||||||||||||
BTN 客户端通过 PCB 等方式发现了异常 Peer 后,便会通过 BTN 协议定时上报到服务器。这样我们就可以集合大量客户端的数据,生成一份异常 IP 列表,并通过 BTN 协议再下发给不同的客户端,在开始吸血之前就将它们屏蔽在外。 | ||||||||||||
## BTN 的功能 | ||||||||||||
|
||||||||||||
## BTN 能做什么? | ||||||||||||
### 收集与分析封禁报告 | ||||||||||||
|
||||||||||||
### 收集、分析封禁报告 | ||||||||||||
|
||||||||||||
BTN 能够接收客户端上报的封禁报告,如果一个 IP(/段)被多个人封禁,那么它就是一个高风险 IP 地址。BTN 会自动将其封禁,并通知其它客户端也一起封禁它。 | ||||||||||||
BTN 接收客户端上报的封禁报告,如果一个 IP(或 IP 段)被多人封禁,则视为高风险 IP 地址。BTN 会自动封禁该 IP,并通知其他客户端进行同步封禁。 | ||||||||||||
|
||||||||||||
### 阻止分散吸血 | ||||||||||||
|
||||||||||||
一些吸血者很聪明,它们在不同的人那里下载相同文件。 | ||||||||||||
这样从每一个人的角度来看,吸血者都只在自己这里下载了一次文件,但实际上吸血者已远远下载了超过文件本身体积大量的数据。 | ||||||||||||
|
||||||||||||
BTN 通过分析每个 IP(段)在每个种子上的总下载量,检查是否有分散吸血的情况,并将它们自动封禁。 | ||||||||||||
部分吸血者采取分散策略,在不同用户处下载相同文件。从单个用户角度看,吸血者仅下载一次文件,但实际上已远超文件本身体积。BTN 通过分析 IP(或 IP 段)在每个种子上的总下载量,检测分散吸血行为,并自动封禁。 | ||||||||||||
|
||||||||||||
### 发现新型客户端 | ||||||||||||
|
||||||||||||
在数据上报时,BTN 还会检查是否是一个从未见过的新客户端。并记录首次出现和最后一次见到的时间。 | ||||||||||||
这有利于推断恶意吸血者进行吸血活动的大致时间范围。 | ||||||||||||
|
||||||||||||
在 24 年 8 月,还帮助我们发现了一起使用随机 PeerID 的吸血客户端。 | ||||||||||||
|
||||||||||||
### 避免 PBH 被针对绕过 | ||||||||||||
在数据上报过程中,BTN 检查是否出现新客户端,并记录首次出现和最后一次见到的时间。这有助于推断恶意吸血者的活动时间范围。例如,在 2024 年 8 月,BTN 帮助我们发现了一起使用随机 PeerID 的吸血客户端。 | ||||||||||||
|
||||||||||||
除了封禁数据,BTN 客户端还会定时拍摄一次下载器上的实时状态快照。这样我们能够检测是否有恶意吸血者通过新的方式绕过了现有的检测。 | ||||||||||||
### 避免 PeerBanHelper 被绕过 | ||||||||||||
|
||||||||||||
## 隐私安全的顾虑 | ||||||||||||
除了封禁数据,BTN 客户端还会定时拍摄下载器的实时状态快照。这有助于检测恶意吸血者是否通过新方式绕过现有检测。 | ||||||||||||
|
||||||||||||
听起来要做到这些要向服务器上传大量数据。答案是:是的。 | ||||||||||||
## 隐私与安全 | ||||||||||||
|
||||||||||||
要进行这些分析操作,BTN 必须收集和上传大量必须数据,所有上传的数据类型可在 [BTN 协议规范](https://github.com/PBH-BTN/BTN-Spec) 中找到。 | ||||||||||||
要实现上述功能,BTN 必须收集和上传大量数据。所有上传的数据类型可在 [BTN 协议规范](https://github.com/PBH-BTN/BTN-Spec) 中找到。 | ||||||||||||
|
||||||||||||
特别需要提及的是:在上传时,我们不会上传种子的 info_hash 和种子的名称。取而代之的是不可逆哈希过的 torrent_identifier 和种子大小。这样我们就不会知道您提交的种子是什么(我们也不关心这些),我们只关注是否是相同的种子/不同的种子。 | ||||||||||||
特别说明:在上传数据时,我们不会包含种子的 info_hash 和名称,而是使用不可逆哈希生成的 torrent_identifier 和种子大小。这样,我们无法得知您提交的种子内容(我们也不关心),只关注是否为相同或不同的种子。 | ||||||||||||
|
||||||||||||
如果您不愿意提供数据,BTN 客户端也通常有提交控制选项。将其关闭就可以只接收规则,不提交数据了。 | ||||||||||||
如果您不愿提供数据,BTN 客户端通常提供提交控制选项。关闭该选项后,您仍可接收规则,但不上传数据。 | ||||||||||||
|
||||||||||||
永远记住:只连接到你信任的 BTN 服务器。 | ||||||||||||
请始终牢记:只连接到您信任的 BTN 服务器。 | ||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🛠️ Refactor suggestion 建议补充安全建议 在提醒用户只连接可信服务器时,建议提供更具体的验证方法。 -请始终牢记:只连接到您信任的 BTN 服务器。
+请始终牢记:只连接到您信任的 BTN 服务器。建议通过以下方式验证服务器可信度:
+1. 确认服务器的 SSL 证书是否有效
+2. 验证服务器域名是否在官方文档列表中
+3. 检查服务器的安全记录和社区反馈 📝 Committable suggestion
Suggested change
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
需要更新时间引用
文档中提到"2024年8月"作为未来时间点,但现在已是2024年11月。建议修改为过去时态。
📝 Committable suggestion