如何给 Transmission 配置代理
Transmission 是一个简洁易用的开源 BT 客户端。在 1.4.x 及更早的版本中,Transmission 是支持配置代理的,之后的版本不知道出于什么原因移除了这一特性。而我又有配置代理的需求,所以在很长一段时间里,我不得不使用 μTorrent。macOS 升级到 Catalina 之后便不再支持 32 位程序了,垃圾 μTorrent 又不提供 64 位版本,我只好再想别的办法了。
最简单的解决方案是使用 Proxifier,这个强大的工具支持在 macOS 和 Windows 上实现分应用代理。虽然这个功能在 Android 上很常见,但在桌面端还是很稀罕的。Proxifier 唯一的缺点是有点贵,当然,这不是它的问题,而是我的。
穷则思变。根据 Transmission 的 wiki,
Transmission uses the libcurl library for http- and https-based tracker announces and scrapes. Transmission doesn’t support proxies, but libcurl itself honors a handful of environment variables to customize its proxy behavior.
这意味着如果我们放弃 GUI 版本,转而使用 transmission-daemon + Web UI,就可以通过设置环境变量的方式给 Transmission 配置代理:
1 | export ALL_PROXY="socks5://127.0.0.1:1080" |
我使用的是 socks5 代理,请酌情修改。
通常情况下,我们很少手动启停 transmission-daemon,而是交给一些系统管理工具,以实现开机自启等功能,这就需要一些技巧。
macOS
macOS 的 init 程序是 launchd
,使用 launchctl
管理服务。当然,通常我们会使用 brew services
,它封装了 launchctl
。我们可以修改 ~/Library/LaunchAgents/homebrew.mxcl.transmission-cli.plist
文件,来添加启动 Transmission 时的环境变量,示例如下:
1 | <?xml version="1.0" encoding="UTF-8"?> |
修改完成之后执行:
1 | brew services reload transmission-cli |
Linux
目前主流的 Linux 发行版都使用 systemd
作为 init 程序,使用 systemctl
管理服务。我们可以修改 /etc/systemd/system/transmission-daemon.service
文件,来添加启动 Transmission 时的环境变量,示例如下:
1 | [Unit] |
修改完成之后执行:
1 | sudo systemctl reload transmission-daemon.service |
Windows
没研究过,不知道咋整。反正 μTorrent 在 Windows 上凑合还能用。