目前用的爽的下载工具,通过搭配 Chrome 和 自己写的一些脚本达到不输迅雷的用户体验。

本文在 MacOS 下可以通过所有步骤,其他平台需要自行修改相关步骤

Aria2 下载

推荐使用 Homebrew 安装

brew install aria2

配置 Aria2

将下面的内容复制到 /Users/用户名/.aria2/aria2.conf 里面,用户名是你 Mac 的用户名。
同时建立session文件

touch ~/.aria2/aria2.session

文中注释了一些选项含义,所以的含义需要看这个网址获取 aria2c(1) — aria2 1.34.0 documentation

不建议修改下面的除了 用户文件夹之外的内容,这些内容都是经过实践得出的比较优秀的配置,下载速度较快

需要修改下面的用户名 jacob 改为你自己的用户名方可使用。

## '#'开头为注释内容, 选项都有相应的注释说明, 根据需要修改 ##
## 被注释的选项填写的是默认值, 建议在需要修改时再取消注释 ##
## 添加了@和默认启用的选项都是系统需要调用的,请不要随意改动否则可能无法正常运行


## 日志
#log-level=info
#log=/Users/jacob/.aria2/aria2.log

## 文件保存相关 ##
# 文件的保存路径(可使用绝对路径或相对路径), 默认: 当前启动位置
# 此项 OS X 无法使用 $HOME 及 ~/ 设置路径 建议使用 /users/用户名/downloads
dir=/Users/jacob/Downloads
# 启用磁盘缓存, 0为禁用缓存, 需1.16以上版本, 默认:16M
disk-cache=0M
# 文件预分配方式, 能有效降低磁盘碎片, 默认:prealloc
# 预分配所需时间: none < falloc ? trunc < prealloc
# falloc和trunc则需要文件系统和内核支持
# NTFS建议使用falloc, EXT3/4建议trunc, MAC 下需要注释此项
# file-allocation=none
# 断点续传
continue=true
# 最大重试次数, 设置为0表示不限制重试次数, 默认:5
max-tries=5
# 设置重试等待的秒数, 默认:0
retry-wait=5
## 下载连接相关 ##

# 最大同时下载任务数, 运行时可修改, 默认:5
max-concurrent-downloads=20
# 同一服务器连接数, 添加时可指定, 默认:1
max-connection-per-server=16
# 最小文件分片大小, 添加时可指定, 取值范围1M -1024M, 默认:20M
# 假定size=10M, 文件为20MiB 则使用两个来源下载; 文件为15MiB 则使用一个来源下载
min-split-size=1024K
# 单个任务最大线程数, 添加时可指定, 默认:5
split=16
# 整体下载速度限制, 运行时可修改, 默认: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=false
#运行覆盖已存在文件
allow-overwrite=true
#自动重命名
auto-file-renaming=true

## 进度保存相关 ##

# 从会话文件中读取下载任务
input-file=/Users/jacob/.aria2/aria2.session
# 在Aria2退出时保存`错误/未完成`的下载任务到会话文件
save-session=/Users/jacob/.aria2/aria2.session
# 定时保存会话, 0为退出时才保存, 需1.16.1以上版本, 默认:0
save-session-interval=30

## 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=maria.rpc.2018

## BT/PT下载相关 ##

# 当下载的是一个种子(以.torrent结尾)时, 自动开始BT任务, 默认:true
#follow-torrent=true
# BT监听端口, 当端口被屏蔽时使用, 默认:6881-6999
listen-port=51413
# 单个种子最大连接数, 默认:55
#bt-max-peers=55
# 打开DHT功能, PT需要禁用, 默认:true
enable-dht=true
# 打开IPv6 DHT功能, PT需要禁用
#enable-dht6=false
# DHT网络监听端口, 默认:6881-6999
#dht-listen-port=6881-6999
# 本地节点查找, PT需要禁用, 默认:false
bt-enable-lpd=true
# 种子交换, PT需要禁用, 默认:true
enable-peer-exchange=true
# 每个种子限速, 对少种的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

# bt-tracker数据来自https://github.com/ngosang/trackerslist/blob/master/trackers_all_udp.txt

bt-tracker=udp://tracker.coppersurfer.tk:6969/announce,udp://tracker.open-internet.nl:6969/announce,udp://tracker.leechers-paradise.org:6969/announce,udp://tracker.internetwarriors.net:1337/announce,udp://9.rarbg.to:2710/announce,udp://9.rarbg.me:2710/announce,udp://tracker.opentrackr.org:1337/announce,http://tracker3.itzmx.com:6961/announce,http://tracker1.itzmx.com:8080/announce,udp://exodus.desync.com:6969/announce,udp://explodie.org:6969/announce,udp://ipv4.tracker.harry.lu:80/announce,udp://denis.stalker.upeer.me:6969/announce,udp://tracker.torrent.eu.org:451/announce,udp://tracker.tiny-vps.com:6969/announce,udp://open.demonii.si:1337/announce,http://vps02.net.orel.ru:80/announce,http://re-tracker.uz:80/announce,http://open.acgnxtracker.com:80/announce,udp://tracker4.itzmx.com:2710/announce,

## 一些脚本
#下载完成后字段执行操作
on-bt-download-complete=/Users/jacob/.aria2/aria2_on_bt_download_complete.sh
on-download-complete=/Users/jacob/.aria2/aria2_on_download_complete.sh
on-download-error=/Users/jacob/.aria2/aria2_on_download_error.sh
on-download-pause=/Users/jacob/.aria2/aria2_on_download_pause.sh
on-download-start=/Users/jacob/.aria2/aria2_on_download_start.sh
on-download-stop=/Users/jacob/.aria2/aria2_on_download_stop.sh

调试 Aria2

Aria2 启动可能会有问题,我们需要调试成功之后才然后设置开机启动,否则无法查看错误信息,

/usr/local/bin/aria2c --conf-path=/Users/jacob/.aria2/aria2.conf

通过上面的命令可以看到提示,如果没有错误就可以进入下一步了。如果有错误根据错误提示解决问题

配置 Aria2 开机启动

aira2 每次都要自己启动,十分麻烦,但是 aria2 资源占用很低,适合在后台常驻,所以可以设置为开机启动。

cd ~/Library/LaunchAgents
touch com.aria2c.plist

将下面的内容放入 com.aria2c.plist

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>KeepAlive</key>
<true/>
<key>Label</key>
<string>com.aria2c</string>
<key>ProgramArguments</key>
<array>
<string>/usr/local/bin/aria2c</string>
<string>--conf-path=/Users/jacob/.aria2/aria2.conf</string>
</array>
<key>RunAtLoad</key>
<true/>
</dict>
</plist>

加载配置

launchctl load ~/Library/LaunchAgents/com.aria2c.plist

此时 通过 ps aux | grep "aria2"可以看到 aria2 已经启动,如果没有启动可以注销Mac用户后登陆即可看到 aria2 在运行中。以后 aira2 就可以开机启动了。

GUI 推荐

Aria2 有很多 GUI,这个推荐一个 Chrome 插件用作 GUI, Chrome 的功能我们可以让他看起来像一个独立的应用。

安装 Aria2 for Chrome - Chrome 网上应用店

image-20190409195941716

右键插件图标进入选项,设置 rpc 网址为 http://token:maria.rpc.2018@localhost:6800/jsonrpc

image-20190409200110273

然后单击插件图标即可看到提示 Aria2 已连接的提示

image-20190409200222405

如果这里无法连接,需要在 GUI 内部设置token等信息

image-20190410120509073

下面我们可以让这个插件变成一个应用,如果你不感兴趣可以直接看下一节。

右键点击 插件 图标,点击 打开AriaNG 文字,进入页面

image-20190409200528048

然后将这个页面导出为应用

image-20190409200644372

此时在mac的应用里就会有一个 AriaNG 应用了,图标可以自行定制,如何修改图标自己搜索下吧

image-20190409200728757

效果如下

image-20190410120344344

使用 Aria2 下载磁力链接

普通下载不必多讲,按照插件和 GUI 的页面可以很容易的进行下载,这里说说如何下载 磁力链接。Aria2 磁力链接的速度会很慢,甚至可能无法下载,此时我们可以通过修改 配置中的 bt-tracker 选项来获得高速下载,速度不输迅雷。

可以通过复制 https://raw.githubusercontent.com/ngosang/trackerslist/master/trackers_best.txt 的内容然后修改一下格式,配置给 Aria2,因为 trackers 一直在变化我也写了一个python3 的脚本来辅助更新。内容如下

import urllib.request
import urllib.parse

path = '/Users/jacob/.aria2/aria2.conf'

url = 'https://raw.githubusercontent.com/ngosang/trackerslist/master/trackers_best.txt'
f = urllib.request.urlopen(url)
s = f.read().decode('utf-8')
bt_tracker = s.replace('\n\n', ',')

data = ''
with open(path, 'r+') as f:
for line in f.readlines():
if line.find('bt-tracker') == 0:
line = 'bt-tracker=%s' % bt_tracker + '\n'

data += line

with open(path, 'r+') as f:
f.writelines(data)

通过运行上面的脚本可以一键更新 bt-tracker 内容,注意配置修改之后必须要重启 Aria2 才可以生效。可以通过 kill 进程来实现,我们的开机启动配置会自动重启一个 Aria 进程。

配置使用下载完成后通知

先看看效果:

image-20190410120230775

上面的插件是没有实现下载完成后通知的,这样其实有些尴尬,每次都要去看看写没写完,可以通过 Aria2 自带的 钩子函数来实现。对应在 conf 里的配置是这些

## 一些脚本
#下载完成后字段执行操作
on-bt-download-complete=/Users/jacob/.aria2/aria2_on_bt_download_complete.sh
on-download-complete=/Users/jacob/.aria2/aria2_on_download_complete.sh
on-download-error=/Users/jacob/.aria2/aria2_on_download_error.sh
on-download-pause=/Users/jacob/.aria2/aria2_on_download_pause.sh
on-download-start=/Users/jacob/.aria2/aria2_on_download_start.sh
on-download-stop=/Users/jacob/.aria2/aria2_on_download_stop.sh

这些脚本的内容如下

/Users/jacob/.aria2/aria2_on_bt_download_complete.sh

/usr/local/bin/terminal-notifier -title "Aria2" -subtitle "BT下载完成" -message "" -activate com.google.Chrome.app.Default-hpjnfnejkleckpmhmjppopcbnedoocmg  -appIcon /Users/jacob/Applications/Chrome\ Apps.localized/Default\ hpjnfnejkleckpmhmjppopcbnedoocmg.app/Contents/Resources/app.icns

/Users/jacob/.aria2/aria2_on_download_complete.sh

/usr/local/bin/terminal-notifier -title "Aria2" -subtitle "下载完成" -message $msg -execute "/usr/bin/open $3" -appIcon /Users/jacob/Applications/Chrome\ Apps.localized/Default\ hpjnfnejkleckpmhmjppopcbnedoocmg.app/Contents/Resources/app.icns

/Users/jacob/.aria2/aria2_on_download_error.sh

var=$3
msg=${var##*/}
/usr/local/bin/terminal-notifier -title "Aria2" -subtitle "下载失败" -message $msg -activate com.google.Chrome.app.Default-hpjnfnejkleckpmhmjppopcbnedoocmg -appIcon /Users/jacob/Applications/Chrome\ Apps.localized/Default\ hpjnfnejkleckpmhmjppopcbnedoocmg.app/Contents/Resources/app.icns

/Users/jacob/.aria2/aria2_on_download_pause.sh

var=$3
msg=${var##*/}
/usr/local/bin/terminal-notifier -title "Aria2" -subtitle "暂停下载" -message $msg -activate com.google.Chrome.app.Default-hpjnfnejkleckpmhmjppopcbnedoocmg -appIcon /Users/jacob/Applications/Chrome\ Apps.localized/Default\ hpjnfnejkleckpmhmjppopcbnedoocmg.app/Contents/Resources/app.icns

/Users/jacob/.aria2/aria2_on_download_start.sh

var=$3
msg=${var##*/}
/usr/local/bin/terminal-notifier -title "Aria2" -subtitle "开始下载" -message $msg -activate com.google.Chrome.app.Default-hpjnfnejkleckpmhmjppopcbnedoocmg -appIcon /Users/jacob/Applications/Chrome\ Apps.localized/Default\ hpjnfnejkleckpmhmjppopcbnedoocmg.app/Contents/Resources/app.icns

使用这些脚本需要安装软件 julienXX/terminal-notifier: Send User Notifications on macOS from the command-line.

安装方式 brew install terminal-notifier

appIcon 就是通知时候的图标,可以自定义。这样就实现了下载完成后通知,并且点击通知就能够打开下载的文件。terminal-notifier 一定要使用全路径名,否则无法生效。

Aria2 满速下载百度云文件

安装 Chrome 插件acgotaku/BaiduExporter: Assistant for Baidu to export download links to aria2/aria2-rpc

安装方式看 GitHub 的 readme, 然后配置本地 Aria2

设置在这里:

image-20190409204236064

配置 URL 为 http://token:maria.rpc.2018@localhost:6800/jsonrpc

以后使用 导出下载即可获得满速下载。