群晖系统中,transmission如何屏蔽迅雷
众所周知,迅雷作为一款P2P下载软件,一直秉承着“人人为我”的精神,对正规P2P下载用户进行“吸血”行为(只下载不上传或少上传,优先上传迅雷用户,甚至是迅雷会员用户),严重破坏了P2P下载的公平性。
本文将介绍如何通过交叉编译,实现群辉系统中Transmission对迅雷的屏蔽。
随着NAS的普及,越来越多的用户选择NAS作为自己的下载机/做种机,群辉系统中实现离线下载的几个比较方便的方法分别是:
- 使用DSM自带的下载程序(Download Station),分析源码后发现P2P部分仍然是Transmission;
- 通过第三方源安装Transmission。
- 通过Docker安装一些P2P下载软件(例如qBittorrent)。
对于没有基础的或者希望少折腾的用户,都是比较不错的办法。然而,以上几种方法都无法实现对迅雷的屏蔽,好在提供Transmission第三方安装源的SynoCommunity为我们提供了方便的交叉编译工具,这让自己改装Transmission成为可能。
通过Docker安装其它可以屏蔽迅雷的P2P客户端,例如superng6/qbittorrentee和johngong/qbittorrent,都实现了屏蔽迅雷的功能。但是上述方法有一定的局限性,因为并不是所有群辉都可以开启Docker。
而本文介绍的通过交叉编译生成transmission的方案解决了全系群辉的适配问题。
硬盘和带宽资源本就宝贵,岂能容忍迅雷的滥用。
本文撰写时相关工具及系统版本:
- Windows 10, Version 1903, Build 18362 or higher(为了使用WSL 2,WSL1+Docker我没有实验过)
- Docker Desktop Community, Version 2.3.0.4, stable
- DSM 6.2.3-25426 Update 2
- DS418play
- CPU: INTEL Celeron J3355
- spksrc official version: commit 4593f81
- Transmission official source version: 3.00 stable
Docker怎么安装和Windows怎么升级,我就不做过多介绍了,直接切入正题。
设置编译环境
拉取修改过的spksrc
1 | git clone --config core.autocrlf=false https://github.com/firedent/spksrc.git |
拉取docker镜像
1 | # 此处为了确保下载的Docker镜像与本教程绝对一致,拉取了指定digest。 |
启动Docker镜像并挂载本地目录
Windows下,请使用绝对目录
Windows下,请使用绝对目录
Windows下,请使用绝对目录
1 | # 请自行将‘~/spksrc’替换第一步中git拉取的目标目录 |
进行编译
经过上述步骤,你已进入Docker容器中
进入这个页面查看你的CPU架构,并对下面的代码进行替换
1 | make setup |
安装
直接上传安装包,在“套件中心”选择“手动安装”即可。
本教程完成于2020.9.1,最新在线版本为3.00-18,因此使用自己编译的软件包可以直接覆盖安装,原有的下载记录不会丢失。如果在线版本比自编译新,会出现“无法降级安装”的警告。解决办法是修改SPK_REV。
1 | # cross/transmission/Makefile |
我做了什么
- 修改Transmission源码,使其具备屏蔽迅雷客户端的能力。详见:在Debian上修改并编译Transmission屏蔽迅雷吸血
- 将修改后的源码打包,上传至GitHub。貌似直接打包GitHub的Transmission源码不行,好像是因为没有经过Autotools处理,所以我就直接修改了官方的releases。Autotool
- 将spksrc源码中的Transmission官方源码地址替换为上方地址。详见:Comparing changes
安装包
得益于GitHub Actions和SynoCommunity已经编写好的配置文件,做到了自动化云端编译。

DSM6.1和7.0下不同CPU架构的安装包:transmission-3.00
NAS对应的架构请参考:Architecture per Synology model
参考资料
群晖系统中,transmission如何屏蔽迅雷