各位老友们好,我是 Chlorine。
本期讲讲下载神器 Aria2 的配置。网上关于 Aria2 的配置教程已经极为丰富,所以本文主要起一个备份的作用,其教学内容大多还是拾人牙慧。
感谢 GitHub 上的各路大佬,特别感谢博主月青悠的教程 macOS系统配置Aria2。
前言
本段接近于自言自语,不想看的老友可以直接跳过。
小氯在用 Windows 时(那大概是半年前,但感觉似乎是很久很久以前了),使用开心版的IDM(INTERNET DOWNLOAD MANAGER)作为下载器,用着还挺舒服的。不过换到 macOS 了就没那个好事了,于是我选择了 IDM 的有力竞争者 FDM。
美好的日子就这样一天天过去。FDM 整体虽然看起来有一点点古老,但是用着还可以。不过随着时间的推移,闲得发慌的我又开始挑毛病了:感觉 FDM 的下载速度不够快,而且没办法用 Firefox 版本的扩展(更正:这个扩展是存在的,但是我的备用浏览器是 基于 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>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。直接点击安装即可。
安装后需要进行一点配置,这是我的配置,大家可以参考。
然后打开扩展页面。如果显示 Aria2 已连接,那么就大功告成了。
最终效果
我们家的宽带大概是百兆的,网络很一般,于是我测试速度的时候吓了一跳。我测试用的是飞书的 .dmg
,Obsidian 的那个(测试系统代理)只用了两秒钟。
再次感谢伟大的开源社区。祝各位老友资源获取愉快。