美文网首页
如何给 Transmission 配置代理

如何给 Transmission 配置代理

作者: 虚胖一场 | 来源:发表于2020-05-10 19:32 被阅读0次

    本文链接个人站 | 简书 | CSDN

    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 上凑合还能用。

    相关文章

      网友评论

          本文标题:如何给 Transmission 配置代理

          本文链接:https://www.haomeiwen.com/subject/ecycnhtx.html