Releases: PBH-BTN/PeerBanHelper
6.0.0-RC1
Note
这是一个候选发布版本,并非正式版,请不要用于生产环境。升级前请做好数据备份。如果遇到错误,欢迎报告错误。
Note
v5 升级到 v6 的用户:建议您删除 data/scripts 文件夹,以便 PeerBanHelper 释放新的检测用户脚本,以对抗最近新出现的无法使用 IP 规则解决的威胁
Warning
v6 与 v5 版本的 Banlist 不兼容,升级将会清空当前封禁列表。
新功能
- [WebUI][PBH+] 新增趋势、日流量、位置与运营商三图表
- 趋势图表:可展示指定时间段内的正常 Peers 与被封禁的 Peers 占比数据
- 日流量图表:可展示每日 PBH 统计的上传与下载流量数据(不支持 Transmission)(可能与真实数据和下载器统计数据有较大出入,仅供参考)
- 位置与运营商图表:提供运营商/AS、省、城市、国家/地区四个维度数据,可分别查看所有 Peers 数据和仅封禁的 Peers 的数据。需要配置 GeoIP 库
- [WebUI] 新增 IP、端口、ASN、国家/地区、城市 规则管理页面,管理相关规则无需编辑配置文件
- IP 过滤器现在支持按照城市名称过滤(GeoCN 将按照完整名称过滤: 省份/自治区 城市/直辖市 区/县)
- 在支持的 Windows 平台设备上,现在为 PeerBanHelper 启用 EcoQoS API 效能模式,优化功耗
- 这可以有效避免 PBH 执行规则检查时,引发的频繁 CPU 短暂睿频导致的能源消耗
- 不支持 Linux/macOS
- 启用成功时,除了控制台会出现成功提示,GUI 窗口标题将新增显示
[🍃EcoQoS]
的标识
- 订阅规则现在支持 eMule/DAT 规则(将转换为 CIDR)
- 封禁排行现在支持翻页
- 封禁列表的解除封禁按钮旁边现在新增一个威胁分析查询按钮,可在微步威胁情报社区(使用简体中文时)和 Censys Search (使用 English 时)快速跳转查询指定 IP 地址的威胁和特征信息
- 下载器封禁列表提供端点新增 RawIP 类型
- GUI 现在适配系统亮色/暗色模式,系统模式切换时,PBH 将跟随切换其 GUI 主题
- 已知在切换颜色模式时,可能出现切不回去的 BUG,暂时无修复思路
- GUI 新增 “调试” 菜单,可转储内存快照和打印线程堆栈
配置文件更改
Gopeed dev
,Rain 0.0.0
在升级后将加入默认屏蔽名单- all-in-one 规则订阅源将切换为 CloudFlare Pages。这改善了在不少地区的可访问性,但仍建议根据 https://github.com/PBH-BTN/BTN-Collected-Rules 配置最适合您的规则源
错误修复
- 添加的 Transmission 下载器可能会错误的重新启动已被用户手动暂停的种子,现在原本已处于暂停状态的种子将被跳过重启环节
- 为部分配置项添加默认内容,避免被 SnakeYAML 吞掉
- 修复订阅日志排序异常的问题
- 修复下载器配置
non-proxy-hosts
错误的问题,现在错误的配置字段将被自动迁移到正确的配置字段,默认值将被修改为localhost|127.*|192.168.*|10.*|172.16.*|172.17.*|172.18.*|172.19.*|172.20.*|172.21.*|172.22.*|172.23.*|172.24.*|172.25.*|172.26.*|172.27.*|172.28.*|172.29.*|172.30.*|172.31.*
- 在发现 Peer 重复封禁时,PBH 将尝试重新应用全量封禁列表到下载器
- 修复封禁日志自动清理功能不起效果的问题
- 修复针对
uTorrent Mac
和Aria2Explorer
的伪装检测误判问题 - 修复错误 Etag 头导致版本升级后白屏的问题
- 修复 BTN 上报在出现异常后,后续计划任务被停止的问题
- 修复下载器名称包含
.
后,配置文件损坏的问题,建议您在任何输入名称的文本框中避免输入.
符号 - 修复 TopN 封禁排行榜页面不显示任何数据的问题
- 修复 ActiveMonitoring 统计数据不正确的问题
- 修复 BTN 网络模块重新配置时没有取消过往调度器导致频繁重复上报的问题
- 修复 BTN 协议版本号检查逻辑错误
- 现在 PBH 在检测到尝试封禁已处于封禁名单的 IP 时,将强制全量更新封禁列表到下载器,修复封禁列表失去同步的问题
- 修复进度检查器对 IPV6 地址处理错误导致错误封禁的问题,感谢 @paulzzh
即将到来的新功能&未来计划
以下功能正在进行中或已计划,目前我们已完成基础架构编写,但仍需一段时日打磨、调校和 Debug,它们会在未来版本中推出:
- [进行中]配置文件重载
- [已完成,但API接口需要更改]WebUI 实时日志控制台
- 提供网页控制台接口,可以查看控制台中打印的日志信息,不再需要查看 GUI/Docker Logs
- [已完成,等待前端适配]种子列表
- 由 PBH 在检查过程中保存的种子数据列表,在误删种子后,提供一个后悔药
- 当然更重要的是为下面的功能服务
- [已完成,等待前端适配]种子详细信息查询
- 可查询以下数据
- 种子名称
- 种子大小
- 种子 InfoHash
- 连接过此种子的 Peers 数量
- 连接过此种子的 Peers 详细信息
- 在此种子上被封禁的 Peers 数量
- 在此种子上被封禁的 Peers 详细信息
- 可查询以下数据
- [已完成,等待前端适配]Peer 详细信息查询
- 可查询以下数据
- IP 地址
- 首次连接时间
- 最后一次连接时间
- 封禁计数
- 种子访问会话数
- 历史上传量
- 历史下载量
- GeoIP 信息
- 访问过的所有种子列表,以及历史会话详细数据,包括
- 历史会话 Torrent 信息
- 历史会话下载器名称
- 历史会话 PeerId
- 历史会话 ClientName
- 历史会话上传量下载量
- 历史会话 uTP Flags
- 历史会话开始时间
- 历史会话结束时间
- 可查询以下数据
正式推出 PeerBanHelper+ 计划
PBH-BTN 社区的所有项目都由我们的社区志愿者更新和维护。我们的志愿者每周会花费数十个小时来维护我们的社区项目并更新反吸血规则。尽管志愿者们都秉承无私奉献的精神,不求回报的参与其中。但除了提供精神上的支持以外,物质上的支持也同样重要
购买此许可证的费用将用于建设和维护社区基础设施,并分配给志愿者们作为物质上的奖励
我们将部分在开发过程中逻辑较复杂、耗时较久、技术难度较高的功能列入 PBH+ 计划。请不要担心,重要和基础功能永远对所有人可用。
您可以在这里查看 PBH+ 计划的定价和描述:爱发电电铺。
我们建议您仅在确实会用到 PBH+ 的功能时再购买 PBH+ 许可证,切勿掉入消费陷阱,造成不必要的额外开销。
在 v6 版本中,以下功能为 PBH+ 功能:
- [WebUI][PBH+] 新增趋势、日流量、位置与运营商三图表
Docker 用户
DockerHub: ghostchu/peerbanhelper:v6.0.0-RC1
阿里云国内镜像加速: registry.cn-hangzhou.aliyuncs.com/ghostchu/peerbanhelper:v6.0.0-RC1
v5.1.0
Note
这是一个计划外版本
技术对抗升级
我们注意到部分吸血者正在利用 PeerBanHelper 的缓存逐出漏洞绕过反吸血检查。因此我们决定临时发布中间版本,以修复该漏洞。此版本可能没有上个版本稳定,如果发现问题,欢迎向我们报告。
新功能
- ProgressCheatBlocker 新增磁盘持久化存储功能并默认保留 14 天的记录数据。任何 Peer 在 14 天内重新连接相同种子时,记录保存期限会重置回 14 天。这有助于对抗利用 PeerBanHelper 的缓存逐出漏洞进行的"缓慢失忆攻击"。
- 缓慢失忆攻击指的是:利用 PeerBanHelper 内存有限的特点,当一个 Peer 断开一段时间后,PBH 会丢弃其记录的数据以释放内存空间的缺陷。通过在即将触发检测阈值时,断开连接,更换 IP 地址,并在缓存过期后重新连接以继续吸血的漏洞。目前已发现在野利用,建议您更新。
- 现在 PCB 最多允许缓存 16MB 的记录数据在内存中,缓存逐出后,其记录将被写入本地 SQLite 数据库
- OOBE 向导
- 首次启动的 PBH 用户现在会有一个向导,辅助用户设置 Token 和首个下载器
- 新增基于 “网络类型”的 IP 黑名单功能。由于 GeoIP 数据库限制,此功能仅对中国大陆的 IP 地址有效。用户可以设置对特定类别的 IP 地址进行屏蔽,例如“数据中心”。
- 使用此功能需要正确配置并启用 GeoIP 库
性能改进
- 大幅减少 PBH 的内存占用
- 大幅减少 BanWave 期间的对象分配,减轻 GC 压力
- 改进 SQLite I/O 性能,在部分文件系统上的性能表现应得到改善
删除
- GUI 的 WebUI 标签卡,现在建议使用系统浏览器打开 WebUI,您可以通过 GUI 的 WebUI 菜单,快速打开 WebUI 并跳过登录
错误修复
- 修复 ProgressCheatBlocker 语言文本占位符问题,并改进了令人困惑的部分文本
- 修复查看 Top 50 IP 地址时遇到 SQL 错误的问题
国际化
- 配置文件新增英语注释
测试功能
- Active Monitoring 功能数据记录部分现已开启测试,您可以测试此功能的数据记录功能和对磁盘造成的读写压力情况,并与我们反馈此功能在您的设备上的体验表现。此功能暂时没有任何前端查询可用,我们计划在 v6 中添加相关查询支持。目前您只能使用 Navicat 等数据库管理工具查看其记录的数据。
Docker 用户
DockerHub: ghostchu/peerbanhelper:v5.1.0
阿里云国内镜像加速: registry.cn-hangzhou.aliyuncs.com/ghostchu/peerbanhelper:v5.1.0
v5.0.7
这是一个阶段性稳定版本,我们计划在接下来的一段时间投入到新的功能开发中
错误修复
- 由于默认配置字段丢失,导致新安装的 PBH 的 ProgressCheatBlocker 默认封禁时长为 0 毫秒。调整后跟随全局设置
- 由于 v5 更新后,新的封禁时长起步 14 天,但是 Top15 排行榜只查询最近 15 天的封禁记录,且需要条目数量 > 2,导致事实上此排行榜完全不显示任何内容。现在调整为查询最近 60 天
- 修复因 v5 重构,MOTD 消息丢失,导致只依赖日志信息的情况下,难以判断目前运行的版本信息
- 修复图表菜单过滤 1% 以下的数据开关在除了 PeerID 以外的选项上无效的问题
更改
- 对新安装的默认配置文件的各个模块封禁时间进行了调整
- 当无数据上传 BTN 时,不再发起请求
新功能
- [Beta] Windows 安装器现在支持安装为系统服务
Docker 用户
DockerHub: ghostchu/peerbanhelper:v5.0.7
阿里云国内镜像加速: registry.cn-hangzhou.aliyuncs.com/ghostchu/peerbanhelper:v5.0.7
v5.0.6
v5.0.5
错误修复
- 修复 BTN 封禁列表提交缓存的内存泄漏问题,这可能导致 PBH 长时间运行时,内存无法释放并导致崩溃
- 自动更新 Torrent 的数据库数据(如果已存在),而不是直接忽略并显示首次插入的信息,这导致在索引元数据时封禁的 Torrent,此后一直显示不正确的数据
Docker 用户
DockerHub: ghostchu/peerbanhelper:v5.0.5
阿里云国内镜像加速: registry.cn-hangzhou.aliyuncs.com/ghostchu/peerbanhelper:v5.0.5
v5.0.4
新功能
- 当下载器连续多次登陆失败(>= 15次)时,暂停 30 分钟,以避免持续请求导致 IP 一直被下载器封禁(如:qBittorrent)
错误修复
- 修复一个 SQL 唯一约束错误
- 修复 JavaFx 模式下,托盘消息错误触发为对话框消息的问题
- 修复配置文件损坏时,PBH 尝试调用未初始化的 GuiManager 弹出对话框导致空指针的问题
Docker 用户
DockerHub: ghostchu/peerbanhelper:v5.0.4
阿里云国内镜像加速: registry.cn-hangzhou.aliyuncs.com/ghostchu/peerbanhelper:v5.0.4
v5.0.3
默认配置文件设置改进
- 多拨侦测现在 IPV6 前缀长度截取
/60
而不是/64
- 现在默认订阅 all-in-one 规则
错误修复
- 修复种子 Peers 列表出现重复条目的问题
- 修复一些边缘情况下,启用了增量封禁开关的 qBittorrent 可能无法封禁部分 IP 地址的问题
- 修复一个显示问题,导致 WebUI 显示的封禁数量与提供的 blocklist 不匹配的问题,现在统一进行去重显示
- 修复规则统计 UI 界面,匹配器名称可能显示不正确的问题
Docker 用户
DockerHub: ghostchu/peerbanhelper:v5.0.3
阿里云国内镜像加速: registry.cn-hangzhou.aliyuncs.com/ghostchu/peerbanhelper:v5.0.3
v5.0.2
更改
- 重新封禁 Xunlei 0.0.1.9 (-XL0019-) 参见 [社区通报] 重新封禁 -XL0019- (Xunlei 0.0.1.9) 客户端
1.1. 升级后,与 0019 有关的白名单规则将在配置文件升级时被自动移除
错误修复
- GUI 安全模式日志换行错误
- 修复 5.0.1 中数据库错误的问题
Docker 用户
DockerHub: ghostchu/peerbanhelper:v5.0.2
阿里云国内镜像加速: registry.cn-hangzhou.aliyuncs.com/ghostchu/peerbanhelper:v5.0.2
v5.0.1
更改
- 重新封禁 Xunlei 0.0.1.9 (-XL0019-) 参见 [社区通报] 重新封禁 -XL0019- (Xunlei 0.0.1.9) 客户端
1.1. 升级后,与 0019 有关的白名单规则将在配置文件升级时被自动移除
错误修复
- GUI 安全模式日志换行错误
Docker 用户
DockerHub: ghostchu/peerbanhelper:v5.0.1
阿里云国内镜像加速: registry.cn-hangzhou.aliyuncs.com/ghostchu/peerbanhelper:v5.0.1
v5.0.0
欢迎来到 v5.0.0 正式版!
破坏性更改
- 数据库部分得到了大修,不兼容之前的数据库文件。封禁历史记录、封禁列表和统计数据将不会继承,其它配置等数据将会平滑升级
新功能
- GeoIP 模块现在也使用来自 ljxi/GeoCN 的 IP 数据
- 位于中国大陆的 IP 地址位置现在将能够精确到区县
- 位于中国大陆的 IP 地址现在将显示网络类型,支持以下网络类型的显示:
- 宽带
- 基站
- 政企专线
- 业务平台
- 骨干网
- IP专网
- 网吧
- 物联网
- 数据中心
- 此功能需要配置 GeoIP 库
- 各个功能模块的封禁时间现在可以独立调整,或跟随全局设定
- 封禁列表现在显示触发封禁的规则
- 用户现在能够在封禁列表界面上解除对特定 IP 的封禁
- 前后端现在全面支持 i18n,欢迎提交翻译 PR!
- PBH WebUI 现在添加了暴力破解防护
- PBH WebAPI 现在默认禁止 CORS 跨站请求,除非用户手动启用
- 现在允许用户从外部文件系统加载 WebUI 文件
- Peers 列表现在将显示 Peer Flags (仅在支持的下载器上显示)
- 配置文件 (config.yml) 新增代理服务器设置
- PeerID 统计图表现在支持合并同类客户端查看
- 封禁日志现在可以按时间指定查询,时间粒度新增按小时
用户交互体验改进
- GUI 日志框现在更换为了 ListView,并根据日志等级,为日志行染色,错误、提示、警告一目了然
- 新用户安装时不再弹窗提醒退出,而是直接启动,并在控制台引导进入 WebUI (并显示 WebUI Token)
- 配置文件升级时,将对丢失配置文件注释的配置项重新复制注释
- WebUI Peers 列表的种子和 Peers 现在按实时上传速度,倒序排序,方便用户快速定位高上传带宽的种子/Peers
- 多项 WebUI 细节优化
- 下载器出现错误时,WebUI 将提供更加有用的悬浮 Tooltip 提示信息
- 下载器出现错误时,控制台将提供更加有用的日志提示信息
性能优化
- 现在 Peers 封禁检查操作支持多线程并发
- GeoIP 查询任务现在采用懒加载机制,仅在需要时才查询 IP 的 Geo 信息
- 重构缓存系统,极大的改善了缓存命中率,并降低了 CPU 时间
- 现在 PBH WebUI 与 PBH 通讯、PBH 与下载器通讯,皆支持 gzip, deflate 压缩
- 调整 AviaorScript 缓存,不缓存编译结果以节省 RAM 使用
- 对于频繁返回的 CheckResult,进行静态重用
- 其它性能优化
错误修复
- 测试下载器配置创建的临时 Downloader 没有正确关闭导致资源泄漏
- 修复 WebUI 发生更改时,因缓存头设置指定错误,用户可能看到白屏的问题(您需要手动清理一次浏览器缓存,才能使此修复生效)
- 修复封禁日志、封禁列表中,当流量数据为 -1 时,渲染为 NaN Undefined 的问题
- 修复用户同时添加 Transmission 和其它非 Transmission 下载器时,Transmission 封禁可能会失效的问题
- 修复初始化 BTN 失败后,PBH 不再尝试重新初始化 BTN 的问题
- 修复提交封禁列表失败后,本次提交的封禁列表被就地丢弃,而不是排队到下次重试窗口的问题
- 修复 qBittorrent 的部分不交换 Client Name 的 Peers,获取 Client Name 无效/无意义的问题,现在将截取其 16 进制 PeerID 对应的前 8 个 ASCII 字符的字节,并转化为可读文字
- 修复 Transmission 和 qBittorrent 混合使用时,操作列表可能混入其它下载的数据,导致 Transmission RPC 调用时出现类型转换错误崩溃,并导致种子无法被重启、还原状态
- 修复编辑订阅规则后,编辑成功但却提示错误的问题
- 修复订阅规则中存在以
#
开头的注释行时,订阅规则解析可能失败的问题 - 修复 qBittorrent 下载器有时处理 PeerID 可能返回错误结果导致伪装检测脚本检测出错的问题
- 修复触发 BanWave Watchdog 时,创建对话框时出现 JavaFx 线程错误
- 修复创建 HTTP 协议为 HTTP 2.0 的下载器配置时,出现错误的问题
杂项
- 微调 qBittorrent 增量封禁逻辑
- 调整 docker-compose.yml / Docker 示例命令,给予 PBH 更多时间用来安全退出
- 封禁列表不再保存到 banlist.dump,而是存储到数据库
- 现在每个小时都会自动保存一次封禁列表
- 现在 PBH 启动完成后,不会清空暂存的封禁列表
- 32 位有关的支持库文件现在不再参与编译
- 现在存储时不再硬编码字符串,而是存储翻译组件,以支持前端动态 i18n
- 用户脚本现在支持返回 String 类型返回值作为封禁理由
- 如果返回值以 @ 打头,则设置 Action 为 SKIP
- Heap 最大内存从 256MB 调整为 386MB,除了 PBH 需要更多一点的内存以外,386 这个数字灵感来自 Intel 80386 CPU 名称
- PeerID/ClientName 模块不再等待流量,而是在有 PeerID/ClientName 获取成功后,立刻停止等待,进行检查
Docker 用户
DockerHub: ghostchu/peerbanhelper:v5.0.0
阿里云国内镜像加速: registry.cn-hangzhou.aliyuncs.com/ghostchu/peerbanhelper:v5.0.0