各位老友们好,我是 Chlorine。

本期讲讲下载神器 Aria2 的配置。网上关于 Aria2 的配置教程已经极为丰富,所以本文主要起一个备份的作用,其教学内容大多还是拾人牙慧。

感谢 GitHub 上的各路大佬,特别感谢博主月青悠的教程 macOS系统配置Aria2

前言

本段接近于自言自语,不想看的老友可以直接跳过。

小氯在用 Windows 时(那大概是半年前,但感觉似乎是很久很久以前了),使用开心版的IDM(INTERNET DOWNLOAD MANAGER)作为下载器,用着还挺舒服的。不过换到 macOS 了就没那个好事了,于是我选择了 IDM 的有力竞争者 FDM。

美好的日子就这样一天天过去。FDM 整体虽然看起来有一点点古老,但是用着还可以。不过随着时间的推移,闲得发慌的我又开始挑毛病了:感觉 FDM 的下载速度不够快,而且没有 Firefox 版本的扩展(我的备用浏览器是 LibreWolf),而且不是开源的。

于是我接触到了 Motrix。不过 Motrix 很久不更新了,我使用的是 Motrix 的衍生品 Imfile。

Imfile 总体而言还可以,虽然启动时会报出一个莫名其妙的错误提一提我的血压(开发者目前对此持摆烂态度)。不过最近用 Imfile 的时候,经常动弹不了一点,让我很头痛。而且这软件应该是个 Electron 的,我对这类软件没什么好感(但是你现在的主力软件 Obsidian 和 VSCodium 不就是 Electron 的吗)。

于是我盯上了据说很出色的狗屁下载器够快下载器(Gopeed)。具体体验不说了,一言难尽。反正我是没找到正确的打开方式。

思前想后之下我还是决定用之前没搞明白的命令行版 Aria2,反正我不怕耍命令行。经过折腾,现在已经达到了比较良好的效果。

Aria2 简介

不想看的老友依然可以跳过。

Aria2 是一个跨平台的命令行下载器,具有轻量级、多线程、高速度、多协议支持(HTTP、FTP、BT 等)和高度可定制性(命令行工具基本都这样:)等优点。

不过需要注意:Aria2 并不是 Aria 的第二代。没有叫 Aria 的工具。

(冷知识:aria 的含义是「咏叹调」)

安装 Aria2

我们依然使用万能的 Homebrew。

brew install aria2

一般来说 M 芯片的默认下载位置是 /opt/homebrew/bin/aria2c,记好这个路径。如果不确定,请使用:

where aria2c

设置 aria2.conf

注意,以下所有配置,请将 chlorine 替换为你的用户名。

我们在你的用户根目录下创建一个配置文件夹 .aria2。注意,下面所有的 <user> 都需要替换为你的用户名,例如 chlorine

mkdir -p ~/.aria2 && cd $_
touch aria2.conf aria2.session aria2.log
nano aria2.conf # 或者你的编辑器

我的配置文件主要是照抄了博主月青悠的,只不过修改了几个地方:

  • 修改端口为 7800:之前这样是因为 6800 被占用了,有可能是因为 Imfile 的缘故。奇怪的是,7800 下载比 6800 快很多。
  • 配置了 all-proxy,适配某一只会科学技术的小猫的配置。
  • 注释掉了通知 hook,因为我们不需要。

为了文章不至于有太长的代码,请在此处自取。

你需要做的:

  • 将复制的配置粘到文件中。
  • 修改 rpc-secret 为你自己的密钥。可以自己随便写,但是推荐生成一个长字符串,使用 openssl rand -base64 32 即可。
  • 你其他的自定义。

配置开机自启

这里比较麻烦,所幸万能的开源社区已经替我们做好了一切。

touch ~/Library/LaunchAgents/aria2.plist
nano ~/Library/LaunchAgents/aria2.plist

把这段粘进去:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>EnvironmentVariables</key>
    <dict>
        <key>LC_MESSAGES</key>
        <string>C</string>
    </dict>
    <key>KeepAlive</key>
    <true/>
    <key>Label</key>
    <string>aria2</string>
    <key>ProgramArguments</key>
    <array>
        <string>/opt/homebrew/bin/aria2c</string>
    </array>
    <key>RunAtLoad</key>
    <true/>
    <key>WorkingDirectory</key>
    <string>/Users/chlorine/Downloads</string>
</dict>
</plist>

如果一切顺利,系统会提示你已经添加了一个开机启动项。

然后检查文件语法:

plutil ~/Library/LaunchAgents/aria2.plist

如果 OK,修改文件权限:

chmod 644 ~/Library/LaunchAgents/aria2.plist

然后加载启动项并启动服务:

launchctl load ~/Library/LaunchAgents/aria2.plist
launchctl start aria2

这样,系统会在后台替你料理好一切。

自动更新 BT tracker

这个事情我用不太到,但是还是写上吧。

touch ~/.aria2/trackers-list-aria2.sh
nano ~/.aria2/trackers-list-aria2.sh

写入:

#!/usr/bin/env zsh
# 如果你的电脑没有 Zsh,请把 zsh 改为 bash,但是我更推荐安装一个
# 文件名 trackers-list-aria2.sh
# aria2 设置文件路径
CONF=${HOME}/.aria2/aria2.conf

# 设置选择的 trackerlist (可选 all_aria2.txt, best_aria2.txt, http_aria2.txt)
trackerfile=all_aria2.txt
# downloadfile=https://raw.githubusercontent.com/ngosang/trackerslist/master/${trackerfile}
downloadfile=https://trackerslist.com/${trackerfile}

list=$(curl -fsSL ${downloadfile})
if ! grep -q "bt-tracker" "${CONF}" ; then
    echo -e "\033[34m==> 添加 bt-tracker 服务器信息......\033[0m"
    echo -e "\nbt-tracker=${list}" >> "${CONF}"
else
    echo -e "\033[34m==> 更新 bt-tracker 服务器信息.....\033[0m"
    sed -i '' "s@bt-tracker.*@bt-tracker=${list}@g" "${CONF}"
fi

## 重启 aria2 服务
echo -e "\033[34m==> 停止 aria2 服务......\033[0m"
launchctl stop aria2
echo -e "\033[34m==> 启动 aria2 服务......\033[0m"
launchctl start aria2

然后添加定时任务:

(crontab -l 2&> /dev/null; echo "0 18 * * * ~/.aria2/trackers-list-aria2.sh") | crontab

这会在每天 18 点更新列表。如果希望频率不那么高,可以修改配置,比如每周日一次:

(crontab -l 2>&1 /dev/null; echo "0 18 * * 0 ~/.aria2/trackers-list-aria2.sh") | crontab

如果你希望就算是关机了还能在开机期间执行任务,那可以用 launchd。不过这个我没测试过,谨慎使用。

创建服务文件:

touch ~/Library/LaunchAgents/com.user.trackers-list.plist
nano ~/Library/LaunchAgents/com.user.trackers-list.plist
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>com.user.trackers-list</string>
    <key>ProgramArguments</key>
    <array>
        <string>/bin/sh</string>
        <string>/Users/chlorine/.aria2/trackers-list-aria2.sh</string>
    </array>
    <key>StartInterval</key>
    <integer>86400</integer> <!-- 每24小时执行一次 -->
    <key>RunAtLoad</key>
    <true/>
</dict>
</plist>

然后按照类似上面的方法加载服务。

Chrome 扩展

每次都打开命令行下载无疑很痛苦,所幸我们可以通过 Chrome 扩展自动接管浏览器下载事件。

我们选择广受好评的 Aria2 Explorer。直接点击安装即可。

安装后需要进行一点配置,这是我的配置,大家可以参考。

An image to describe post

然后打开扩展页面。如果显示 Aria2 已连接,那么就大功告成了。

最终效果

我们家的宽带大概是百兆的,网络很一般,于是我测试速度的时候吓了一跳。我测试用的是飞书的 .dmg,Obsidian 的那个(测试系统代理)只用了两秒钟。

An image to describe post

再次感谢伟大的开源社区。祝各位老友资源获取愉快。