本文发自 http://www.binss.me/blog/the-wonderful-downloader-aria2/,转载请注明出处。

对Aria2垂涎已久了,但是嫌麻烦一直没弄。今天终于下决心,搞了一晚,终于搞好了,在此分享下。

什么是Aria2

aria2 is a utility for downloading files. The supported protocols are HTTP(S), FTP, SFTP, BitTorrent, and Metalink. aria2 can download a file from multiple sources/protocols and tries to utilize your maximum download bandwidth. It supports downloading a file from HTTP(S)/FTP/SFTP and BitTorrent at the same time, while the data downloaded from HTTP(S)/FTP/SFTP is uploaded to the BitTorrent swarm. Using Metalink's chunk checksums, aria2 automatically validates chunks of data while downloading a file like BitTorrent.

跨平台啊有木有!无视百度云和115的限速有木有!

为啥用使用Aria2

首先,个人觉得Mac下没有好用的下载器。百度云管家没有Mac版,迅雷的Mac版是残废。往常的下载,都是开Windows虚拟机来跑百度云管家或者迅雷,也还将就过了。

然而真正的逼我去搞Aria2的原因是——我的百度云会员过期了......结果就是今天像往常那样拖资源时,百度云管家在无耻地占满我的上传带宽后还把我限速在200k,占满上传带宽的后果就是别的什么都干不了,打开一个网页等半天,玩游戏ping上千。不能忍,Aria2开干。

就如devdocs,这种应用最方便还是放到Docker的容器里跑,然后暴露出端口用于外部访问,并挂载到外部的目录上用于下载。以下Dockerfile是我折腾了一晚,大家可以改改目录后直接拿去用:

FROM ubuntu:latest

MAINTAINER binss

RUN apt-get update && \
    apt-get -y upgrade && \
    mkdir -p /home && \
    mkdir -p /home/binss && \
    mkdir -p /home/binss/downloads && \
    DEBIAN_FRONTEND=noninteractive apt-get -y install aria2 && \
    apt-get -y install curl unzip busybox

RUN cd /home/binss/ && \
    curl -L https://github.com/ziahamza/webui-aria2/archive/master.zip > master.zip && \
    unzip master.zip

ADD aria2.conf /home/binss/aria2.conf

RUN echo

WORKDIR /home/binss
VOLUME ["/home/binss/downloads"]
EXPOSE 6800 6801

ENTRYPOINT busybox httpd -p 6801 -h /home/binss/webui-aria2-master && aria2c --conf-path=/home/binss/aria2.conf

这个Dockerfile主要安装了,Aria2和webui-aria2,后者是前者的网页版UI。将6800端口给Aria2供各种外部rpc调用,将6801端口给webui-aria2供外部浏览器访问。内部的下载目录为/home/binss/downloads,挂载在外部目录/Users/binss/Downloads/aria2下,即下载好的文件可以从/Users/binss/Downloads/aria2访问到。aria2.conf为配置文件,build时应放到Dockerfile的同目录下:

# 用户名
rpc-user=username
# 密码
rpc-passwd=password

# 允许rpc
enable-rpc=true
# 允许所有来源, web界面跨域权限需要
rpc-allow-origin-all=true
# 允许外部访问,false的话只监听本地端口
rpc-listen-all=true
# RPC端口, 仅当默认端口被占用时修改
rpc-listen-port=6800
# 最大同时下载数(任务数), 路由建议值: 3
max-concurrent-downloads=5
# 断点续传
continue=true
# 同服务器连接数
max-connection-per-server=10
# 最小文件分片大小, 下载线程数上限取决于能分出多少片, 对于小文件重要
min-split-size=10M
# 单文件最大线程数, 路由建议值: 5
split=10
# 下载速度限制
max-overall-download-limit=0
# 单文件速度限制
max-download-limit=0
# 上传速度限制
max-overall-upload-limit=0
# 单文件速度限制
max-upload-limit=0
# 断开速度过慢的连接
#lowest-speed-limit=0

enable-http-pipelining=true

# 文件保存路径, 默认为当前启动位置
dir=/home/binss/downloads
# 文件缓存, 使用内置的文件缓存, 如果你不相信Linux内核文件缓存和磁盘内置缓存时使用, 需要1.16及以上版本
#disk-cache=0
# 另一种Linux文件缓存方式, 使用前确保您使用的内核支持此选项, 需要1.15及以上版本(?)
#enable-mmap=true
# 文件预分配, 能有效降低文件碎片, 提高磁盘性能. 缺点是预分配时间较长
#所需时间 none < falloc ? trunc « prealloc, falloc和trunc需要文件系统和内核支持
file-allocation=prealloc

# 日志等级
log-level=warn

然后cd到Dockerfile的目录下开始build和run:

$ docker build -t binss/aria2 .
$ docker run -d -p 6800:6800 -p 6801:6801 -v /Users/binss/Downloads/aria2:/home/binss/downloads --name="aria2" binss/aria2

以上都执行成功就可以在浏览器打开你的管理页面了:地址为DOCKER_HOST:6801,我的是http://192.168.99.100:6801/

打开设置-服务器配置,填好主机、用户名、密码等字段

出现以下字样就代表配好了

下载百度云资源

请出我们下载百度云的关键组件:BaiduExporter,https://github.com/acgotaku/BaiduExporter,安装相应的浏览器插件,我用的是Chrome,商店地址是https://chrome.google.com/webstore/detail/baiduexporter/mjaenbjdjmgolhoafkohbhhbaiedbkno。 然后上百度云,发现多了个导出下载的按钮,我们先点设置:

按照之前的配置填好用户名、密码、host(拼成url,可以点下面的测试连接按钮来测试是否配置正确)、下载目录后点应用来保存。

然后选中要下载的文件,点导出下载-ARIA2 RPC,然后我们就可以在管理器中看到任务已经开始下载了,而且是满速哟!

限制上传速度

为了避免下载时占用过多的上传带宽导致网页加载缓慢,可以在管理器中配置max-overall-upload-limit,单位为kb。

好的,接下来让我们愉快地开始下载吧~