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 配置代理:
export ALL_PROXY="socks5://127.0.0.1:1080"
./transmission-daemon
我使用的是 socks5 代理,请酌情修改。
通常情况下,我们很少手动启停 transmission-daemon,而是交给一些系统管理工具,以实现开机自启等功能,这就需要一些技巧。
macOS
macOS 的 init 程序是 launchd
,使用 launchctl
管理服务。当然,通常我们会使用 brew services
,它封装了 launchctl
。我们可以修改 ~/Library/LaunchAgents/homebrew.mxcl.transmission-cli.plist
文件,来添加启动 Transmission 时的环境变量,示例如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>homebrew.mxcl.transmission-cli</string>
<key>ProgramArguments</key>
<array>
<string>/usr/local/opt/transmission-cli/bin/transmission-daemon</string>
<string>--foreground</string>
<string>--config-dir</string>
<string>/usr/local/var/transmission/</string>
<string>--log-info</string>
<string>--logfile</string>
<string>/usr/local/var/transmission/transmission-daemon.log</string>
</array>
<key>KeepAlive</key>
<dict>
<key>NetworkState</key>
<true/>
</dict>
<key>RunAtLoad</key>
<true/>
+ <key>EnvironmentVariables</key>
+ <dict>
+ <key>ALL_PROXY</key>
+ <string>socks5://127.0.0.1:1080</string>
+ </dict>
</dict>
</plist>
修改完成之后执行:
brew services reload transmission-cli
brew services restart transmission-cli
Linux
目前主流的 Linux 发行版都使用 systemd
作为 init 程序,使用 systemctl
管理服务。我们可以修改 /etc/systemd/system/transmission-daemon.service
文件,来添加启动 Transmission 时的环境变量,示例如下:
[Unit]
Description=Transmission BitTorrent Daemon
After=network.target
[Service]
User=debian-transmission
+ Environment=ALL_PROXY=socks5://127.0.0.1:1080
Type=notify
ExecStart=/usr/bin/transmission-daemon -f --log-error
ExecReload=/bin/kill -s HUP $MAINPID
NoNewPrivileges=true
[Install]
WantedBy=multi-user.target
修改完成之后执行:
sudo systemctl reload transmission-daemon.service
sudo systemctl restart transmission-daemon.service
Windows
没研究过,不知道咋整。反正 μTorrent 在 Windows 上凑合还能用。
网友评论