Mac自编译Aria2突破百度云限速并接管系统下载器

in with 3 comments

Chrome固然功能强大,但是一直以来,其内建的下载管理器并不是很好用,加上国内某度盘惨不忍睹的限速,此时一个功能强大但是却不那么笨重的下载器就成了刚需。

序言

Aria2 是一个命令行下运行、多协议、多来源下载工具(HTTP/HTTPS、FTP、BitTorrent、Metalink),内建 XML-RPC 用户界面。

与某些下载工具相比较,Aria2 足够的轻量,而功能却又足够,搭配 Chrome 插件更是可以直接接管其下载功能,是一个很棒的选择。(关于磁力链/种子的下载,不想折腾的话,在国内还是用迅雷吧,毕竟吸血雷……当然如果是 PT 站,请自觉遵守规则,使用其规定的下载工具。)

准备相关环境

#需要 homebrew,若未安装请自行搜索安装
brew install libtool
brew install automake
brew install autoconf-archive

获取源码

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 下载即可。

至此,完整的配置过程全部结束。

Responses
  1. Ques

    博主你好
    有个疑惑是为什么自动生成的aria2.conf的注释是中文?

    Reply
  2. sarkrui

    未登录百度云账号(防止被拉黑)使用 ci-aria2 导出失败,提示【未获取链接】

    Reply
  3. 游荡

    我有个比博主还快的办法
    1.开机
    2.打开该链接https://pan.baidu.com/buy/checkoutcounter?&from=homepage&svip=1
    3.支付
    4.完成突破

    Reply