这节是我们在科普之后的第一次实践章节,Aria2 在最近被越来越多的人认识和使用,大部分人给出了十分不错的评价。如果你还没有听说过 Aria2 也没有关系,这节内容里面我将会给你详细介绍 Aria2 的各种好处,同时教你如何自己动手搭建一个专属 Aria2。
什么是 Aria2?
首先我们来讲下什么是 Aria2,Aria2 是一个开源的命令行下轻量级(4-9MB占用)、多协议(支持 HTTP/HTTPS、FTP、BitTorrent 也就是 BT 下载、磁力链接、Metalink)、多来源(从多个源地址下载同一个文件)的下载工具,它的特点是可以轻松装在主流系统,路由器和 NAS 甚至旧手机上实现多线程同步下载多个文件,并且内存和 CPU 占用极少。
虽然它十分好用,以至于有许多用户直呼「替代迅雷」(目前来讲还是差太多了),不过 Aria2 本身是通过命令行进行添加下载和暂停等操作的,操作起来门槛高又繁琐。看到这里大家也许会担心接下来文章会不会出现一堆代码,不用怕,Aria2 支持图形化界面通过接口控制,让它不至于变成极客们专属的玩具。随着用户的增多,各种傻瓜懒人一键安装包和好用的管理 App 也相继出现,只要花点时间就能轻松装上它。
Aria2 的优点
Aria2 最大的优点,也是人们愿意不辞繁琐去用它的最大原因是隐私和文件安全保证。开源的 Aria2 确保不会将你下载的文件,机器上的其他文件或者个人信息上传到各种奇奇怪怪的公司和组织。不会像某些下载器一样拦截篡改下载文件,把某些文件变成「敏感资源」,只要你的地址正确有效,下载回来的一定是正确完整的文件。也不会有各种会员和超贵的正版费用,还三天两头要你更新。
支持全自动多线程下载和断点续传。这个是所有高级下载器都必须有的功能。
超级轻量化。官方测试的结果是普通下载占用 4MB 内存,BT 下载占用 9MB 内存,20M 宽带满速下载占用6% 的 CPU。 不说电脑,只要不是远古级别的手机,甚至普通的路由器都能轻松 Hold 住 Aria2。下载时不仅不会影响机器性能,挂机下载时还可以节约不少电。
BT 下载和 Metalink 支持。这是 macOS 和一众 Linux 系统的福音,从此种子和磁力链接可以通过自己的 VPS (Virtual Private Server,远程的私人服务器)或者 NAS (Network Attached Storage:网络附属存储,简单理解为私人云)离线下载。
支持 RPC(Remote Procedure Call,远程过程调用)远程控制。通俗的讲,Aria2 是一个「核」,它支持人们通过各自制作各种各样的「壳」来操作它。这个壳可以是一个 App,一个网站甚至一个本地网页,这些「壳」不仅没有其他下载器的各种花式广告,界面也相当的漂亮。当然有能力的朋友也可以自己动手写一个「壳」或者直接通过命令行操作 Aria2 实现高级自定义下载。
如何在电脑与上搭建 Aria2
在搭建之前附上的必要信息:
在 Windows 上搭建 Aria2
懒人直达
一般用户会觉得搭建步骤太难懂太麻烦,懒得动手,完全没问题。这里提供了一个我自己提纯的懒人包,免去一切步骤,只需下载解压即可使用,保证最精简最纯正,中文文件名加下载速度比官方 Aria2 更快。懒人包已经包含整个教程(不止这节)里关于 Aria2 需要用到的所有文件和配置,下载地址。 自己动手
其实在 Windows 上搭建 Aria2 并没有大家想的那样复杂,首先我们要从上面最新 release 版本下载地址下载对应 32位/64位的压缩包(需要自己配置网络)。
解压下载好的压缩包到你喜欢的目录,之后需要在同一个目录建立两个 txt 文件然后改名 aria2.conf 和 aria2.session(这里点号后面的是格式名,aria2.conf.txt 这样子是错误的),前者用来保存 aria2 设置,后者用来保存下载列表和下载进度以便断点续传。
建好后 aria2.session 先放着不管,先用记事本等文本编辑器打开 aria2.conf,在里面填入下面的默认设置就算配置完毕了。
## '#'开头为注释内容, 选项都有相应的注释说明, 根据需要修改 ##
## 被注释的选项填写的是默认值, 建议在需要修改时再取消注释 ##
## 文件保存相关 ##
# 文件的保存路径(可使用绝对路径或相对路径), 默认: 当前启动位置
dir=~/downloads
# 启用磁盘缓存, 0为禁用缓存, 需1.16以上版本, 默认:16M
#disk-cache=32M
# 文件预分配方式, 能有效降低磁盘碎片, 默认:prealloc
# 预分配所需时间: none < falloc ? trunc < prealloc
# falloc和trunc则需要文件系统和内核支持
# NTFS建议使用falloc, EXT3/4建议trunc, MAC 下需要注释此项
#file-allocation=none
# 断点续传
continue=true
## 下载连接相关 ##
# 最大同时下载任务数, 运行时可修改, 默认:5
#max-concurrent-downloads=5
# 同一服务器连接数, 添加时可指定, 默认:1
max-connection-per-server=5
# 最小文件分片大小, 添加时可指定, 取值范围1M -1024M, 默认:20M
# 假定size=10M, 文件为20MiB 则使用两个来源下载; 文件为15MiB 则使用一个来源下载
min-split-size=10M
# 单个任务最大线程数, 添加时可指定, 默认:5
#split=5
# 整体下载速度限制, 运行时可修改, 默认:0
#max-overall-download-limit=0
# 单个任务下载速度限制, 默认:0
#max-download-limit=0
# 整体上传速度限制, 运行时可修改, 默认:0
#max-overall-upload-limit=0
# 单个任务上传速度限制, 默认:0
#max-upload-limit=0
# 禁用IPv6, 默认:false
#disable-ipv6=true
# 连接超时时间, 默认:60
#timeout=60
# 最大重试次数, 设置为0表示不限制重试次数, 默认:5
#max-tries=5
# 设置重试等待的秒数, 默认:0
#retry-wait=0
## 进度保存相关 ##
# 从会话文件中读取下载任务
input-file=/etc/aria2/aria2.session
# 在Aria2退出时保存`错误/未完成`的下载任务到会话文件
save-session=/etc/aria2/aria2.session
# 定时保存会话, 0为退出时才保存, 需1.16.1以上版本, 默认:0
#save-session-interval=60
## RPC相关设置 ##
# 启用RPC, 默认:false
enable-rpc=true
# 允许所有来源, 默认:false
rpc-allow-origin-all=true
# 允许非外部访问, 默认:false
rpc-listen-all=true
# 事件轮询方式, 取值:[epoll, kqueue, port, poll, select], 不同系统默认值不同
#event-poll=select
# RPC监听端口, 端口被占用时可以修改, 默认:6800
#rpc-listen-port=6800
# 设置的RPC授权令牌, v1.18.4新增功能, 取代 --rpc-user 和 --rpc-passwd 选项
#rpc-secret=<TOKEN>
# 设置的RPC访问用户名, 此选项新版已废弃, 建议改用 --rpc-secret 选项
#rpc-user=<USER>
# 设置的RPC访问密码, 此选项新版已废弃, 建议改用 --rpc-secret 选项
#rpc-passwd=<PASSWD>
# 是否启用 RPC 服务的 SSL/TLS 加密,
# 启用加密后 RPC 服务需要使用 https 或者 wss 协议连接
#rpc-secure=false
# 在 RPC 服务中启用 SSL/TLS 加密时的证书文件,
# 使用 PEM 格式时,您必须通过 --rpc-private-key 指定私钥
#rpc-certificate=/path/to/certificate.pem
# 在 RPC 服务中启用 SSL/TLS 加密时的私钥文件
#rpc-private-key=/path/to/certificate.key
## BT/PT下载相关 ##
# 当下载的是一个种子(以.torrent结尾)时, 自动开始BT任务, 默认:true
#follow-torrent=true
# BT监听端口, 当端口被屏蔽时使用, 默认:6881-6999
listen-port=51413
# 单个种子最大连接数, 默认:55
#bt-max-peers=55
# 打开DHT功能, PT需要禁用, 默认:true
enable-dht=false
# 打开IPv6 DHT功能, PT需要禁用
#enable-dht6=false
# DHT网络监听端口, 默认:6881-6999
#dht-listen-port=6881-6999
# 本地节点查找, PT需要禁用, 默认:false
#bt-enable-lpd=false
# 种子交换, PT需要禁用, 默认:true
enable-peer-exchange=false
# 每个种子限速, 对少种的PT很有用, 默认:50K
#bt-request-peer-speed-limit=50K
# 客户端伪装, PT需要
peer-id-prefix=-TR2770-
user-agent=Transmission/2.77
# 当种子的分享率达到这个数时, 自动停止做种, 0为一直做种, 默认:1.0
seed-ratio=0
# 强制保存会话, 即使任务已经完成, 默认:false
# 较新的版本开启后会在任务完成后依然保留.aria2文件
#force-save=false
# BT校验相关, 默认:true
#bt-hash-check-seed=true
# 继续之前的BT任务时, 无需再次校验, 默认:false
bt-seed-unverified=true
# 保存磁力链接元数据为种子文件(.torrent文件), 默认:false
bt-save-metadata=true
经过测试,缺少 aria2.conf 或者内容为空启动 aria2 之后会报错。每项设置都有详细的注释,日常使用只需要原样粘贴即可,之后我们可以通过管理 App 像普通设置一样更改它们,想要一步到位的朋友也可以直接在文本编辑器里修改。
有些朋友可能就会问了,既然需要手动建立文件和粘贴,为什么作者不直接在 release 版本里面自带一个 aria2.conf?最大的原因当然是 —— 它不需要这个文件也能用,作者本身就是以「命令行下载工具」来打造它,需要下载的时候再在命令行窗口给 aria2c.exe 各种参数(也就是 aria2.conf 文件里面的配置)。aria2.conf 和 aria2.session 这两个文件只是为了方便我们通过控制台使用 Aria2 建立的。
由于 Aria2 通过命令行控制,双击 Aria2c.exe 就不能直接启动它,每次都要通过命令提示符输入命令才能打开它。这么麻烦的方法我们当然不会用,只需要新建一个 txt 文件,填入下面的内容:
CreateObject("WScript.Shell").Run "aria2c.exe --conf-path=aria2.conf",0
把文件格式改为 .vbs,以后双击这个 vbs 文件就能启动 Aria2 啦。
在 Mac OS 上搭建 Aria2
懒人直达
Mac OS 上也有 Aria2 的懒人版,名字叫做 Aria2GUI for MAC OS X,日常使用上有些不影响使用的小 Bug,我还是推荐安装原版 + 自己找控制台。
自己动手
先说简单的方法,和 Windows 一样,首先我们需要把 Aria2 本体装上,上面附上的最新 release 版本下载地址有 Aria2 的 DMG 安装包,双击安装即可。
另一个方法是用 HomeBrew 安装 Aria2,HomeBrew 是 Mac OS 上一个包管理软件,就像 Windows 下各种安全管家自带的「软件宝库」,方便安全地下载一些软件和工具的最新版而不用去找它们官网或者官方下载地址之类的信息。
HomeBrew 安装也很简单,终端下输入这条命令回车:
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
接下来就是等待它那一串安装代码滚动完毕,有时候会让你输入系统密码(password),这是因为它需要申请权限来执行创建文件夹写入系统文件等操作。这时候输入,输入内容是空白的,直接输入密码回车即可。当出现 successful 时代表 HomeBrew 已经安装成功,如果出现任何错误输入下面的命令卸载 HomeBrew 重新安装即可:
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/uninstall)"
安装完 HomeBrew 之后输入 brew install aria2 即可安装最新版本的 Aria2,以后也可以以这种方式安装其他软件。
附上 HomeBrew 常用操作:
安装软件:brew install 软件名
搜索软件:brew search 软件名
卸载软件:brew uninstall 软件名
更新软件:brew update 软件名
之后和 windows 下的步骤一样,建立两个文件 + 复制粘贴,不过这两个文件可以随便放在你喜欢的位置。
最后在终端输入 aria2c --conf-path="这里填你建立 aria2.conf 的位置" -D 即可启动。
如何将旧 Android 手机改造成 Aria2 下载器
旧 Android 手机如何处理一直是个令人头疼的问题,卖了觉得血亏,拿来当闹钟又觉得太浪费,把它们改造成下载器不失为一个好选择。我自己就把旧手机改造成了一个 Aria2 下载器,不仅利用上旧手机不算少的几十 G 容量(一些手机还支持内存卡),大文件睡觉挂着下载也不用担心耗电(同时还能当闹钟和监控摄像头,进一步压榨旧手机的价值)。另外,得益于 Aria2 超低的内存占用,边玩游戏边下载也不会让下载软件占用多少性能。
改造步骤也是非常非常简单,安装 Aria2Android 这个 App 即可,打开之后选择列表最上面的最新版本,App 会自动在手机安装好 Aria2 服务。之后点击界面上的「关闭」按钮,按钮显示「开始」即表示 Aria2 已经成功启动。 至于其他平台(路由器,Linux,NAS 等)搭建 Aria2 的教程,经过对教程难度和受众的衡量这里暂时就不放上来了。大家有需要的话可以给我留言,我会在回复的文章中附上这些教程。
用 Aria2 下载文件
前面也有提到 Aria2 本身只是一个「核」,在启动它之后它没有界面也没有反馈,只会静静地躺在进程列表里,许多开发者为它做了许多把复杂的命令行命令转化为直观图形操作的「壳(以下用控制台表示)」,让使用 Aria2 就像使用迅雷那样直观。这里通过几个常见的控制台教你如何使用 Aria2。
Aria2 启动后,最简单最直接的控制方法就是在浏览器里面访问 Aria2c.com,如果你用的是默认的 aria2.conf 直接就能连接成功,接下来就像普通下载器一样添加下载链接下载即可。 Aria2c.com 优点是直接快速,缺点是比较简陋,设置和能看的下载信息都比较少,适合随时访问看一下下载进度。
webui-aria2.ghostry.cn 是另一个可以直接在线访问的控制台,它的界面漂亮上不少,同时可以轻松地改变 aria2.conf 的设置,各种速度和下载统计信息也十分详细。在 windows Aria2 懒人包里面有它的本地版。 AriaNg 是很多人都在使用的漂亮的本地控制台,走的简洁商务风格的路线,动画很多也很舒服,设置与信息在这三个控制台中最为详细。不过在我这里设置为中文之后界面语言仍然保持英语,所幸对影响使用不大。 除了这 3 个控制台,大家也可以根据自己的需求和审美去寻找更多好看好用的 Aria2 控制台。这三个控制台都是使用 HTML 前端网页制作,有基础的同学可以直接修改成自己喜欢的界面。
这里就以 webui-aria2.ghostry.cn 为例说明下不同设备如何连接 Aria2。
连接 Aria2
点击控制台上方的设置——连接设置,我们看到主机是 localhost,端口是 6800,RPC 密码令牌为空,一些控制台会直接显示 http://localhost:6800/jsonrpc,这几个就是连接 Aria2 需要的所有信息。
我们直接在运行 Aria2 的设备上打开控制台时主机输入 localhost,端口保证和 aria2.conf 里 rpc-listen-port 后面的数字一致即可,一般来讲这就是控制台默认的参数,所以不必修改即可直连。
当我们想用局域网内的设备管理另一台设备上的 Aria2 时(例如电脑或新手机管理旧手机上的 Aria2),主机地址需要从 localhost 变成运行 Aria2 设备的局域网地址,这个地址可以在路由器后台的已连接设备处查到,一般是 192.168.1.* 的形式。
至于外网连接 Aria2 的方法,同样是经过对教程难度和受众的衡量这里暂时就不放上来。加上国内一般运营商也不给家庭用户公网 IP,大家有需要的话还是可以给我留言,我会在回复的文章中附上这些教程。
端口则是指定控制台通过哪个通道去和 Aria2 沟通,就跟对讲机频道一样,默认是 6800,除非端口被占用不然不要修改。
RPC 密码令牌则是保证连接安全的方法,当你在 aria2.conf 的 rpc-secret= 后面填上一个密码之后,只有在控制台连接设置——RPC 密码令牌里面填入相同的密码才能成功连接 Aria2,避免了所有人都能控制你的 Aria2 的问题。
提示:再说一个大家经常遇到的问题,就是有时候主机地址,端口和 RPC 密码令牌都是对的却还是提示连接失败,这个时候可以看下设置——连接设置里——启用 SSL\TLS 加密有没有勾上和 aria2.conf 的 rpc-secure= 是否为 true。当 rpc-secure=true 时启用 SSL\TLS 加密必须勾选才能连接 Aria2,反之亦然。
到这里,属于你的 Aria2 已经打造完毕啦,接下来请尽情享受它给你带来的便利吧。
用 Aria2App 管理 Aria2
除了网页和本地控制台,理所当然地我们也能通过 App 来控制 Aria2,Android 上强烈推荐使用 Aria2App 来控制 Aria2(遗憾的是,iOS 目前并没有 Aria2 控制 App)。
当你有几台设备都搭建了 Aria2 的时候一个统一管理的 App 就显得非常重要,Aria2App 最大的优点就是它可以同时管理多个设备的下载任务。
Aria2 使用上非常简单和直观,稍微复杂的步骤是在添加设备的时候,这里简单教大家如何添加设备:
第一步是选择什么情况下连接运行 Aria2 的设备,只有当你的设备有公网 IP(前面也有提到这一步比较复杂,有折腾欲望的朋友可以私信我)时才能用无线和移动网络链接,这里我们选择局域网创建即可。
第二步先起个像是书房路由器之类的好分辨的配置名称,地址填你要连接的设备的局域网地址(远程连接的话是公网 IP 地址),端口填 6800 或者你自己定义的端口,根据 aria2.conf 的 #rpc-secure 的值决定要不要勾选「启用 TLS/SSL 加密」。
这里的局域网地址除了用路由器查看之外还可以安装 Fing 这个专门管理局域网设备的 App 直接查看局域网内所有设备的地址。 连接方法默认即可,如果设置了 RPC 密码令牌一定要记得向右划在验证方法里选择令牌填写正确的令牌,这个是很多人经常忽略的导致连接失败的原因。
确认之前你可以在测试里面检查连接配置是否正确,通过颜色判断,绿色通过红色连接失败(not found 字样代表连接地址错误,refused 一般是端口错误,Unauthorized 是指 RPC 令牌错误。按照提示重新填写正确的即可。)
最后点击右上角的钩,一个新设备就添加到了 Aria2App 啦,接下来的使用和普通下载器并无区别,Enjoy!