Mac编译安装Aria2 – 突破百度网盘下载限速

为什么要安装Aria2

百度网盘限速,而Aria2是个十分强大的文件分片多线程下载工具,可以有效抵制限速。

为什么要采取编译安装

  1. Aria2的参数中-max-server-connection和-min-split-files很大程度上决定了网盘的下载速度。
  2. 默认参数中-max-server-connection(1,16),-min-split-files(1m,1g),下载服务器最大连接数16,肯定是不能满足高速下载要求的,而最小文件分片1M,尤其是当我们下载网盘上的小文件是,10M的文件按照最小1M的规格,要分成10片,Aria2最多只会分配10个线程去下载,即使是10M的小文件,也要耗用将近好几分钟的时间,效率党简直不能忍啊。
  3. 编译安装采取源代码的安装方式,允许我们修改Aria2核心的运行参数。在这里,我将-max-server-connection最高设置为256,-min-split-files最小设置为256k,大家可以根据自己电脑的性能来合理设置参数以提高下载速度。

具体安装过程

#下载源码
cd ~/Download/
git clone https://github.com/aria2/aria2.git
#修改源码
#aira2的基本配置选项大多都存储在文件OptionHandlerFactory.cc中
vi aria2/src/OptionHandlerFactory.cc
#定位到441行
#将服务器最大连接数16修改为256
    OptionHandler* op(new NumberOptionHandler(PREF_MAX_CONNECTION_PER_SERVER,
                                              TEXT_MAX_CONNECTION_PER_SERVER,
                                           // "1", 1, 16, 'x'));
                                              "1", 1, 256, 'x'));
#定位到第503行
#将最文件分片大小设置为256_k
#到此源代码需要修改的地方改完了
  OptionHandler* op(new UnitNumberOptionHandler(
//PREF_MIN_SPLIT_SIZE, TEXT_MIN_SPLIT_SIZE, "1M", 1_m, 1_g, 'k'));
 PREF_MIN_SPLIT_SIZE, TEXT_MIN_SPLIT_SIZE, "1M", 256_k, 1_g, 'k'));

#安装编译依赖
#以下依赖仅限于macosx,linux参照官方文档
brew install libtool
brew install automake
brew install autoconf-archive

#编译安装
autoconf configure.ac
autoconf -i
./configure
make check
make
sudo make install
#如果你遇到 error: possibly undefined macro这说明编译缺乏依赖,需要安装相关依赖
#
#查看编译后的Aria2参数
aria2c --help
# 可以看到设置项的参数范围已经改变了
 -x, --max-connection-per-server=NUM The maximum number of connections to one
                              server for each download.

                              Possible Values: 1-256
                              Default: 1
                              Tags: #basic, #http, #ftp

 -k, --min-split-size=SIZE    aria2 does not split less than 2*SIZE byte range.
                              For example, let's consider downloading 20MiB
                              file. If SIZE is 10M, aria2 can split file into 2
                              range [0-10MiB) and [10MiB-20MiB) and download it
                              using 2 sources(if --split >= 2, of course).
                              If SIZE is 15M, since 2*15M > 20MiB, aria2 does
                              not split file and download it using 1 source.
                              You can append K or M(1K = 1024, 1M = 1024K).

                              Possible Values: 262144-1073741824
                              Default: 1M
                              Tags: #basic, #http, #ftp

#修改~/.aria2/aria2.conf配置文件使Aria2新设置生效
vi ~/.aria2/aria2.conf
#这里我只截取主要设置项
#断点续传
continue=true
#同服务器连接数
max-connection-per-server=256
#最小文件分片大小, 下载线程数上限取决于能分出多少片, 对于小文件重要
min-split-size=256k
#单文件最大线程数, 路由建议值: 5
split=256
#下载速度限制
max-overall-download-limit=0
#单文件速度限制
max-download-limit=0
...

到此结束。