PBH-BTN / PeerBanHelper

BT 反吸血工具 - 自动封禁不受欢迎、吸血和异常的 BT 客户端,并支持自定义规则。PeerId黑名单/UserAgent黑名单/IP CIDR/假进度/超量下载/进度回退/多播追猎/连锁封禁/伪装检测 支持 qBittorrent/Transmission/Deluge/BiglyBT/Vuze(Azureus)/BitComet
GNU General Public License v3.0
1.53k stars 36 forks source link

群晖6.x系统上三方仓库的Transmission无法正确的启用黑名单 #24

Closed wods closed 6 months ago

wods commented 6 months ago

Transmission版本为3.0.19,群晖为DS918+黑群晖 版本为DSM 6.2.1-23824 Update 6。

目前遇到了以下2个问题: 1)Transmission的client-name用的是peer-id,所以需要从peer-id复制规则到Client-name。 [2024/04/07 14:22:32] [WARNING] [封禁] PeerAddress(ip=1.180.24.85, port=13042), PeerId=, ClientName=-DT0001-, Progress=0.3825, Uploaded=-1, Downloaded=-1, Torrent=*, Reason=匹配 ClientName (UserAgent): contains@DT0001

2)黑名单没有起作用,在检测到有恶意client后,种子会被停止,但不会再次开启,黑名单也没有用,再次打开种子还会连接到恶意client,再次触发自动停止。 [2024/04/07 14:29:49] [WARNING] [封禁] PeerAddress(ip=1.180.24.85, port=13042), PeerId=, ClientName=-DT0001-, Progress=0.5272, Uploaded=-1, Downloaded=-1, Torrent=e, Reason=匹配 ClientName (UserAgent): contains@DT0001
[2024/04/07 14:29:49] [INFO ] [重置] 正在断开 Transmission 上的 1 个种子连接的对等体,以便应用 IP 屏蔽列表的更改
[2024/04/07 14:30:04] [WARNING] [封禁] PeerAddress(ip=1.180.24.85, port=13042), PeerId=, ClientName=-DT0001-, Progress=0.5312, Uploaded=-1, Downloaded=-1, Torrent=
, Reason=匹配 ClientName (UserAgent): contains@DT0001
[2024/04/07 14:30:05] [INFO ] [重置] 正在断开 Transmission 上的 1 个种子连接的对等体,以便应用 IP 屏蔽列表的更改

Ghost-chu commented 6 months ago

是的,关于 PeerID 和暂停无法恢复 —— RC1 已经修复了这个问题,更新一下看看。

关于黑名单不起效果问题,你必须保证 TR 能够连接到你配置的黑名单提供端口上才行。如果 TR 连不上就屏蔽不了。

Ghost-chu commented 6 months ago

image

这里一定要显示屏蔽名单包含规则

点击更新需要提示更新成功才说明连接有效。

image

wods commented 6 months ago

嗯,这个连接有效的,也能提示获取到2个黑名单,但是点击继续后还是可以连接到恶意ip。 我是用docker拉镜像的,白天拉的lastest-native-linux,rc1不会拉... 刚刚3分钟前更新的是rc1么?

Ghost-chu commented 6 months ago

嗯,这个连接有效的,也能提示获取到2个黑名单,但是点击继续后还是可以连接到恶意ip。 我是用docker拉镜像的,白天拉的lastest-native-linux,rc1不会拉... 刚刚3分钟前更新的是rc1么?

是的,是 RC1。稍等一下吧,我正在发 RC2。

Ghost-chu commented 6 months ago

嗯,这个连接有效的,也能提示获取到2个黑名单,但是点击继续后还是可以连接到恶意ip。 我是用docker拉镜像的,白天拉的lastest-native-linux,rc1不会拉... 刚刚3分钟前更新的是rc1么?

拉取这个版本:sha-3bdff29

wods commented 6 months ago

已更新,可以自动恢复了,一开始还是会频繁的停止继续,停止继续,现在运行稳定,不知道是黑名单起作用了,还是恶意ip没连上。有新情况我再反馈。感谢。

Ghost-chu commented 6 months ago

已更新,可以自动恢复了,一开始还是会频繁的停止继续,停止继续,现在运行稳定,不知道是黑名单起作用了,还是恶意ip没连上。有新情况我再反馈。感谢。

嗯,每次更新 Banlist 都需要暂停受影响的种子。这是 Transmission 的设计缺陷,已经连接的 Peer 只有暂停种子才能断开它。

wods commented 6 months ago

[2024/04/07 16:07:22] [WARNING] 在处理 transmission-002 (http://) 的 API 操作时出现了一个非预期的错误 com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_OBJECT but was STRING at line 1 column 1 path $ at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:397) at com.google.gson.Gson.fromJson(Gson.java:1227) at com.google.gson.Gson.fromJson(Gson.java:1137) at com.google.gson.Gson.fromJson(Gson.java:1047) at com.google.gson.Gson.fromJson(Gson.java:982) at cordelia.client.TrClient.execute(TrClient.java:95) at cordelia.client.TrClient.execute(TrClient.java:81) at com.ghostchu.peerbanhelper.downloader.impl.transmission.Transmission.getTorrents(Transmission.java:60) at com.ghostchu.peerbanhelper.PeerBanHelperServer.banDownloader(PeerBanHelperServer.java:173) at com.ghostchu.peerbanhelper.PeerBanHelperServer.banWave(PeerBanHelperServer.java:120) at com.ghostchu.peerbanhelper.PeerBanHelperServer$1.run(PeerBanHelperServer.java:102) at java.base/java.util.TimerThread.mainLoop(Unknown Source) at java.base/java.util.TimerThread.run(Unknown Source) Caused by: java.lang.IllegalStateException: Expected BEGIN_OBJECT but was STRING at line 1 column 1 path $ at com.google.gson.stream.JsonReader.beginObject(JsonReader.java:393) at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:386) ... 12 more

长时间运行后报这个错误...

Ghost-chu commented 6 months ago

[2024/04/07 16:07:22] [WARNING] 在处理 transmission-002 (http://) 的 API 操作时出现了一个非预期的错误 com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_OBJECT but was STRING at line 1 column 1 path $ at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:397) at com.google.gson.Gson.fromJson(Gson.java:1227) at com.google.gson.Gson.fromJson(Gson.java:1137) at com.google.gson.Gson.fromJson(Gson.java:1047) at com.google.gson.Gson.fromJson(Gson.java:982) at cordelia.client.TrClient.execute(TrClient.java:95) at cordelia.client.TrClient.execute(TrClient.java:81) at com.ghostchu.peerbanhelper.downloader.impl.transmission.Transmission.getTorrents(Transmission.java:60) at com.ghostchu.peerbanhelper.PeerBanHelperServer.banDownloader(PeerBanHelperServer.java:173) at com.ghostchu.peerbanhelper.PeerBanHelperServer.banWave(PeerBanHelperServer.java:120) at com.ghostchu.peerbanhelper.PeerBanHelperServer$1.run(PeerBanHelperServer.java:102) at java.base/java.util.TimerThread.mainLoop(Unknown Source) at java.base/java.util.TimerThread.run(Unknown Source) Caused by: java.lang.IllegalStateException: Expected BEGIN_OBJECT but was STRING at line 1 column 1 path $ at com.google.gson.stream.JsonReader.beginObject(JsonReader.java:393) at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:386) ... 12 more

长时间运行后报这个错误...

Transmission 如果没有返回有效响应就会出现此错误。加一下群看看吧:932978658

Ghost-chu commented 6 months ago

请更新到此版本:https://github.com/Ghost-chu/PeerBanHelper/actions/runs/8590155945

Docker版本:~sha-6f3a118~ sha-b83bfab

此版本添加了在更新 Transmission 的 BlockList 时添加了随机的 URL 查询参数(希望可以解决 TR 有时不是很想更新 BlockList 这个问题)。
此外出现 JSON 解析错误时会打印无法被解析的响应了。

wods commented 6 months ago

[2024/04/08 01:04:36] [WARNING] [封禁] PeerAddress(ip=123.184.152.104, port=5213), PeerId=-DT0001-, ClientName=-DT0001-, Progress=0.806, Uploaded=-1, Downloaded=-1, Torrent=1, Reason=匹配 PeerId 规则: startsWith@-DT
[2024/04/08 01:04:40] [INFO ] [响应] Transmission 屏蔽列表已更新成功,现在包含 1 条规则
[2024/04/08 01:04:40] [INFO ] [重置] 正在断开 Transmission 上的 1 个种子连接的对等体,以便应用 IP 屏蔽列表的更改
[2024/04/08 01:04:50] [WARNING] [封禁] PeerAddress(ip=123.184.152.104, port=5213), PeerId=-DT0001-, ClientName=-DT0001-, Progress=0.8111, Uploaded=-1, Downloaded=-1, Torrent=1, Reason=匹配 ClientName (UserAgent): contains@DT0001
[2024/04/08 01:04:55] [INFO ] [响应] Transmission 屏蔽列表已更新成功,现在包含 1 条规则
[2024/04/08 01:04:55] [INFO ] [重置] 正在断开 Transmission 上的 1 个种子连接的对等体,以便应用 IP 屏蔽列表的更改
[2024/04/08 01:05:10] [WARNING] [封禁] PeerAddress(ip=123.184.152.104, port=5213), PeerId=-DT0001-, ClientName=-DT0001-, Progress=0.819, Uploaded=-1, Downloaded=-1, Torrent=1, Reason=匹配 PeerId 规则: startsWith@-DT
[2024/04/08 01:05:14] [INFO ] [响应] Transmission 屏蔽列表已更新成功,现在包含 1 条规则
[2024/04/08 01:05:14] [INFO ] [重置] 正在断开 Transmission 上的 1 个种子连接的对等体,以便应用 IP 屏蔽列表的更改
[2024/04/08 01:05:24] [WARNING] [封禁] PeerAddress(ip=123.184.152.104, port=5213), PeerId=-DT0001-, ClientName=-DT0001-, Progress=0.8245, Uploaded=-1, Downloaded=-1, Torrent=1, Reason=匹配 PeerId 规则: startsWith@-DT
[2024/04/08 01:05:27] [INFO ] [响应] Transmission 屏蔽列表已更新成功,现在包含 1 条规则
[2024/04/08 01:05:27] [INFO ] [重置] 正在断开 Transmission 上的 1 个种子连接的对等体,以便应用 IP 屏蔽列表的更改

fc14acf5-747a-4d1c-aa6e-12810891629a:123.184.152.104-123.184.152.104

image

黑名单还是没有生效,黑名单格式不对?

wods commented 6 months ago

Transmission 会话失效的问题已经解决,30分钟触发错误时会重新登录下。

Ghost-chu commented 6 months ago

Transmission 会话失效的问题已经解决,30分钟触发错误时会重新登录下。

封禁不生效的问题试试更新到:https://github.com/Ghost-chu/PeerBanHelper/releases/tag/v2.5

wods commented 6 months ago

3.00-19貌似有bug,不起作用,升级到3.00-20后好了, 使用最新的CIDR格式的封禁规则。感谢修复。