Mac自编译Aria2突破百度云限速并接管系统下载器
Chrome固然功能强大,但是一直以来,其内建的下载管理器并不是很好用,加上国内某度盘惨不忍睹的限速,此时一个功能强大但是却不那么笨重的下载器就成了刚需。
序言
Aria2 是一个命令行下运行、多协议、多来源下载工具(HTTP/HTTPS、FTP、BitTorrent、Metalink),内建 XML-RPC 用户界面。
与某些下载工具相比较,Aria2 足够的轻量,而功能却又足够,搭配 Chrome 插件更是可以直接接管其下载功能,是一个很棒的选择。(关于磁力链/种子的下载,不想折腾的话,在国内还是用迅雷吧,毕竟吸血雷……当然如果是 PT 站,请自觉遵守规则,使用其规定的下载工具。)
准备相关环境
#需要 homebrew,若未安装请自行搜索安装
brew install libtool
brew install automake
brew install autoconf-archive
获取源码
- Aria2的项目地址为 https://github.com/aria2/aria2 但是自编译的话建议使用 releases 版本的源代码,其中包含了必要的一些依赖,会更加方便。本篇所用版本为 aria2-1.34.0.tar.gz 。
在存放压缩文档的目录启动终端,用以下命令解压之。
tar zxvf aria2-1.34.0.tar.gz
修改源码,去除线程数目限制
将
OptionHandler* op(new NumberOptionHandler(PREF_MAX_CONNECTION_PER_SERVER,
TEXT_MAX_CONNECTION_PER_SERVER,
"1", 1, 16, 'x'));
修改为
OptionHandler* op(new NumberOptionHandler(PREF_MAX_CONNECTION_PER_SERVER,
TEXT_MAX_CONNECTION_PER_SERVER,
"128", 1, -1, 'x'));
将
PREF_MIN_SPLIT_SIZE, TEXT_MIN_SPLIT_SIZE, "20M", 1_m, 1_g, 'k'));
修改为
PREF_MIN_SPLIT_SIZE, TEXT_MIN_SPLIT_SIZE, "4K", 1_k, 1_g, 'k'));
将
PREF_CONNECT_TIMEOUT, TEXT_CONNECT_TIMEOUT, "60", 1, 600));
修改为
PREF_CONNECT_TIMEOUT, TEXT_CONNECT_TIMEOUT, "30", 1, 600));
将
PREF_PIECE_LENGTH, TEXT_PIECE_LENGTH, "1M", 1_m, 1_g));
修改为
PREF_PIECE_LENGTH, TEXT_PIECE_LENGTH, "4k", 1_k, 1_g));
将
new NumberOptionHandler(PREF_RETRY_WAIT, TEXT_RETRY_WAIT, "0", 0, 600));
修改为
new NumberOptionHandler(PREF_RETRY_WAIT, TEXT_RETRY_WAIT, "2", 0, 600));
将
new NumberOptionHandler(PREF_SPLIT, TEXT_SPLIT, "5", 1, -1, 's'));
修改为
new NumberOptionHandler(PREF_SPLIT, TEXT_SPLIT, "8", 1, -1, 's'));
编译源码并安装
值得注意的是,在 1.34.0 的源代码中出现了一个bug,并且打包进了 release 版本中,所以会导致编译失败。如果是编译
1.34.0 版本的源代码,需要先进入 aria2-1.34.0/src 文件夹,执行下列命令拉取已经修复 bug 的代码
curl -O https://raw.githubusercontent.com/aria2/aria2/master/src/bignum.h
然后开始编译
cd ../ #回到 aria2-1.34.0 目录
autoconf configure.ac
autoconf -i
./configure
make #此步骤结束后会在 src 文件夹内生成 aria2c 可执行文件
sudo make install
至此,修改好的 Aria2 已经安装到系统,终端内直接执行 aria2c 即可看到效果。
配置 Aria2 以实现百度云高速下载
aria2 在启动时会自动读取 ~/.aria2/aria2.conf
的内容,我们可以自行在此位置新建文件,写入以下内容。
#用户名
#rpc-user=user
#密码
#rpc-passwd=passwd
#设置加密的密钥
#rpc-secret=secret
#允许rpc
enable-rpc=true
#允许所有来源, web界面跨域权限需要
rpc-allow-origin-all=true
#是否启用https加密,启用之后要设置公钥,私钥的文件路径
#rpc-secure=true
#启用加密设置公钥
#rpc-certificate=/home/name/.config/aria2/example.crt
#启用加密设置私钥
#rpc-private-key=/home/name/.config/aria2/example.key
#允许外部访问,false的话只监听本地端口
rpc-listen-all=true
#RPC端口, 仅当默认端口被占用时修改
#rpc-listen-port=6800
#最大同时下载数(任务数), 路由建议值: 9
max-concurrent-downloads=6
#断点续传
continue=true
#同服务器连接数
max-connection-per-server=64
#最小文件分片大小, 下载线程数上限取决于能分出多少片, 对于小文件重要
min-split-size=5M
#单文件最大线程数, 路由建议值: 5
split=64
#下载速度限制
max-overall-download-limit=0
#单文件速度限制
max-download-limit=0
#上传速度限制
max-overall-upload-limit=0
#单文件速度限制
max-upload-limit=0
#断开速度过慢的连接
#lowest-speed-limit=0
#验证用,需要1.16.1之后的release版本
#referer=*
#文件保存路径, 默认为当前启动位置
dir=/Volumes/akvo/Downloads
#文件缓存, 使用内置的文件缓存, 如果你不相信Linux内核文件缓存和磁盘内置缓存时使用, 需要1.16及以上版本
#disk-cache=0
#另一种Linux文件缓存方式, 使用前确保您使用的内核支持此选项, 需要1.15及以上版本(?)
#enable-mmap=true
#文件预分配, 能有效降低文件碎片, 提高磁盘性能. 缺点是预分配时间较长
#所需时间 none < falloc ? trunc << prealloc, falloc和trunc需要文件系统和内核支持
file-allocation=prealloc
#不进行证书校验
check-certificate=false
# 设置 User-Agent
user-agent=Mozilla/5.0 (Series40; Nokia2055/03.20; Profile/MIDP-2.1 Configuration/CLDC-1.1) Gecko/20100401 S40OviBrowser/5.5.0.0.27
接管浏览器的下载
在终端中 输入 aria2c -D
启动 aria2 服务
安装插件 YAAW2 for Chrome ,然后按照提示配置好 rpc 连接的相关信息,即可在 WebUI 中看到“已连接”的提示。在需要下载时,在下载链接上点击右键,选择 导出到 Aria2 RPC
即可开始下载。
百度云下载
推荐油猴脚本 Ci-Aria2 ,安装后在百度云下载页面选择Ci-Aria2 下载
即可。
至此,完整的配置过程全部结束。