Synology Download Station DLP SDC 群晖BTPT防吸血驴迅雷脚本 Deny Xunlei Thunder
本文最后更新于 701 天前,其中的信息可能已经有所发展或是发生改变。 原创文章保留所有权利,允许提前告知征得同意并在明显位置保留原文链接的转载,任何无视版权的行为将受到搜索引擎的 DMCA 投诉。

后记于2023:群晖的DownloadStation用的是Transmission/2.9.4。在入坑PT之后,我发现qBittorrent更好用,并且更能抢上传,于是欣然换了qBittorrent-Enhanced-Edition

历史车轮滚滚向前,但车辙下的印迹仍然有参考意义->我改qBittorrent-Enhanced-Edition的代码来模拟了Transmission/2.9.4因为一些PT站不认qBittorrent-Enhanced-Edition

Introduction

群晖的 Download Station 用的是 Transmission. 最近下载BT,发现有不少 Xunlei 0.0.1.8,只下载不上传.但是由于群晖的动态库不太一样,尝试加载DLP失败了.就另辟蹊径,通过 Download Station API 获取 Peer 信息,筛选出吸血驴,限速到 1 Package/S.不但能防止吸血驴吸血,还能拖住吸血驴的资源

Structure

Download Station API -> Python script -> IPtables

Highlight

  • 自动识别吸血驴并屏蔽+自动恢复
  • 支持 IPv6
  • Python 脚本,自定义度高

Efficacy


Configuration

data.json

修改 SYNOAPI_PREFIX, USERNAME, PASSWORD 三个字段, 保存即可

{
  "data": {
    "config": {
      "SYNOAPI_PREFIX": "http://IP:PORT/",
      "LOGIN_API": "webapi/auth.cgi?api=SYNO.API.Auth&version=2&method=login&account=USERNAME&passwd=PASSWORD&session=DownloadStation&format=sid'",
      "PEER_API": "webapi/DownloadStation/task.cgi?api=SYNO.DownloadStation.Task&version=1&method=list&additional=peer",
      "EMULE_API": "webapi/entry.cgi?api=SYNO.DownloadStation2.Task.eMule&version=1&method=list_upload",
      "USERNAME": "USERNAME(with admin permission)",
      "PASSWORD": "PASSWORD"
    },
    "blacklist": [
................

Installation

Dependence

在套件中心安装 Python3 即可

Run When Start

既然能看到这里, 开机启动应该不是一件难事,就可以跳过这一段

Debug

  • 标准输出和错误输出均重定向在 /tmp/deny.log
  • 防火墙可以使用 iptables-save, ip6tables-save 查看

代码解释

源代码有注释

这段代码是一个用于运行在Synology Download Station上的守护进程脚本。它的作用是拒绝迅雷下载客户端的连接,以及根据配置的黑名单拒绝一些其他下载任务的连接。以下是代码的主要逻辑:

导入必要的模块:

1. os:提供操作系统相关的功能。
2. time:提供时间相关的功能。
3. request:用于发送HTTP请求。
4. json:用于处理JSON数据。
主程序逻辑:
1. 读取存储在 data.json 文件中的配置信息和黑名单数据。
2. 通过登录API获取会话ID(sid)。
3. 进入主循环:
  1. 通过 PEER_API 获取正在下载的任务列表,提取任务中的下载客户端信息(peer_raw)。
  2. 遍历 peer_raw 中的每个下载客户端信息,如果客户端名称出现在黑名单中,则将其IP地址添加到deny_addr 中。
  3. 通过 EMULE_API 获取正在下载的eMule任务列表,根据黑名单,将需要拒绝连接的eMule任务加入deny_addr 中。
  4. 清空 peer_raw 列表,为下一轮数据准备。
  5. 更新防火墙规则,拒绝 deny_addr 中的IP地址连接,并设置一些限制策略。
  6. 更新已拒绝的IP地址列表 denied_addr。
  7. 清空 deny_addr 列表,为下一轮数据准备。
  8.等待5秒后继续下一轮循环。

4. 异常处理:
如果发生任何异常,将异常信息打印出来。

代码的主要功能是通过调用Synology Download Station的API来获取任务信息和会话ID,然后根据黑名单数据拒绝特定下载客户端的连接,同时根据eMule任务的黑名单拒绝连接。然后,使用iptables ip6tables设置防火墙规则来实际拒绝连接。整个过程在一个无限循环中进行,每轮循环等待5秒钟
半亩方塘 , 版权所有丨如未注明 , 均为原创丨本网站采用CC BY-NC-SA 3.0 CN协议进行授权
转载请注明原文链接:Synology Download Station DLP SDC 群晖BTPT防吸血驴迅雷脚本 Deny Xunlei Thunder
上一篇
下一篇