如何配置 Aria2 來進行文件下載

什麼是 Aria2?

aria2 是一個輕量級的多協議和多源命令行下載實用程序。 它支持 HTTP / HTTPS,FTP,SFTP,BitTorrent 和 Metalink。 aria2 可以通過內置的 JSON-RPC 和 XML-RPC 接口進行操作。

上面是官網對 Aria2 的介紹,講的直白一點,Aria2 就是一個下載工具,它最大的優勢就是下載速度快,基本可以達到你網絡帶寬的滿速,同時支持的協議很多,不管你的下載鏈接是以 http,https 開頭,還是以 magent 開頭的磁力鏈接以及 BT 種子,它都可以下載。

如何在 Mac 上配置 Aria2

安裝 Aria2

如果你沒有安裝包管理工具 Homebrew,那麼先在終端輸入下面的命令安裝:

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

然後在終端輸入下面的命令安裝Aria2:

brew install aria2

配置 Aria2

安裝完成後,我們需要創建一個配置文件 aria2.conf,將其放在 ~/.aria2文件夾中。依次在終端輸入以下命令:

cd ~
mkdir .aria2
cd .aria2
touch aria2.conf

其中,命令cd的作用是切換路徑,mkdir的作用是創建文件夾,touch的作用是新建文件。
然後打開 Finder,同時按下 commandshiftG,進入文件夾:~/.aria2(以 . 開頭的文件夾爲隱藏文件夾,如果想直接從 Finder 中找到這個文件夾,需要先同時按下 commandshift. 顯示隱藏文件),就可以看到配置文件 aria2.conf,利用文本編輯器打開,將下面的信息複製進去:

## '#' 開頭爲註釋內容, 選項都有相應的註釋說明, 根據需要修改 ##
## 被註釋的選項填寫的是默認值, 建議在需要修改時再取消註釋  ##

## 文件保存相關 ##

# 文件的保存路徑 (可使用絕對路徑或相對路徑), 默認: 當前啓動位置
dir=/Users/mofiter/Downloads
# 啓用磁盤緩存, 0 爲禁用緩存, 需 1.16 以上版本, 默認:16M
#disk-cache=32M
# 文件預分配方式, 能有效降低磁盤碎片, 默認:prealloc
# 預分配所需時間: none < falloc ? trunc < prealloc
# falloc 和 trunc 則需要文件系統和內核支持
# NTFS 建議使用 falloc, EXT3/4 建議 trunc, MAC 下需要註釋此項
# file-allocation=none
# 斷點續傳
continue=true

## 下載連接相關 ##

# 最大同時下載任務數, 運行時可修改, 默認:5
max-concurrent-downloads=5
# 同一服務器連接數, 添加時可指定, 默認:1
max-connection-per-server=5
# 最小文件分片大小, 添加時可指定, 取值範圍 1M -1024M, 默認:20M
# 假定 size=10M, 文件爲 20MiB 則使用兩個來源下載; 文件爲 15MiB 則使用一個來源下載
min-split-size=10M
# 單個任務最大線程數, 添加時可指定, 默認:5
split=5
# 整體下載速度限制, 運行時可修改, 默認: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=true

## 進度保存相關 ##

# 從會話文件中讀取下載任務
input-file=/usr/local/Cellar/aria2/aria2.session
# 在 Aria2 退出時保存 ` 錯誤 / 未完成 ` 的下載任務到會話文件
save-session=/usr/local/Cellar/aria2/aria2.session
# 定時保存會話, 0 爲退出時才保存, 需 1.16.1 以上版本, 默認:0
#save-session-interval=60

## 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=<TOKEN>
# 設置的 RPC 訪問用戶名, 此選項新版已廢棄, 建議改用 --rpc-secret 選項
#rpc-user=<USER>
# 設置的 RPC 訪問密碼, 此選項新版已廢棄, 建議改用 --rpc-secret 選項
#rpc-passwd=<PASSWD>

## BT/PT 下載相關 ##

# 當下載的是一個種子(以.torrent 結尾) 時, 自動開始 BT 任務, 默認:true
#follow-torrent=true
# BT 監聽端口, 當端口被屏蔽時使用, 默認:6881-6999
listen-port=51413
# 單個種子最大連接數, 默認:55
#bt-max-peers=55
# 打開 DHT 功能, PT 需要禁用, 默認:true
enable-dht=false
# 打開 IPv6 DHT 功能, PT 需要禁用 
#enable-dht6=false
# DHT 網絡監聽端口, 默認:6881-6999
#dht-listen-port=6881-6999
# 本地節點查找, PT 需要禁用, 默認:false
#bt-enable-lpd=false
# 種子交換, PT 需要禁用, 默認:true
enable-peer-exchange=false
# 每個種子限速, 對少種的 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

將其中的 dir 改爲自己想要保存下載文件的路徑。

開啓 Aria2

在終端輸入下面命令即可啓用(注意更改其中的 xxx 爲你自己的電腦用戶名):

aria2c --conf-path="/Users/xxx/.aria2/aria2.conf" -D

讓 Aria2 開機自啓

如果你不想每次用的時候都要在終端輸入上面的命令開啓,你可以將其設爲開機自啓,這樣就方便多了。在終端依次輸入下列命令:

cd ~/Library/LaunchAgents
touch aria2.plist

然後打開 Finder,同時按下 commandshiftG,進入文件夾: ~/Library/LaunchAgents,用文本編輯器打開我們剛纔創建的文件aria2.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>RunAtLoad</key>
        <true />
        <key>Label</key>
        <string>aria2</string>
        <key>ProgramArguments</key>
        <array>
            <string>/usr/local/bin/aria2c</string>
        </array>
        <key>WorkingDirectory</key>
        <string>/Users/mofiter/Downloads</string>
    </dict>
</plist>

<array></array>中的值改爲自己電腦上 aria2c 命令的路徑,可以在終端輸入which aria2c查看,將WorkingDirectory後面的<string></string>中的值改爲自己的下載路徑。然後在終端依次輸入下列命令:

chmod 644 aria2.plist
launchctl load aria2.plist
launchctl start aria2

這樣,開機自啓就設置成功了,如果你重新啓動 Mac,你會發現在活動監視器裏面進程 aria2c 是存在的。

如何在 Windows 上配置 Aria2

安裝 Aria2

官方沒有給出 Windows 版本的安裝包,需要自己利用源代碼 build,這對一般人來說太難了,所以很多網友自制了懶人版,我這裏選用青小蛙的版本,在此表示感謝,由於他給的下載地址是百度雲盤,我擔心資源失效,所以將其另存到了 coding.net,可以點此下載,下載完之後解壓並將其保存到一個你常用的軟件安裝路徑即可,並不需要安裝什麼。

配置 Aria2

在解壓後的文件夾裏面有一個config.conf文件,用文本編輯器打開,然後根據自己的需要修改相應選項,這裏可能需要修改的是dir=./downloads,是下載文件的保存路徑,如果你不修改,下載的文件將會保存在你解壓的文件夾裏面的downloads文件夾裏面。

開啓 Aria2

點擊文件夾裏面的aria2啓動.VBS,即可開啓 Aria2,這時你去任務管理器的進程可以看到名爲aria2c.exe的進程。

讓 Aria2 開機自啓

每次開機之後都要重新打開上面的文件來啓動 Aria2 也有點煩,你可以將其設爲開機自啓。Windows 上面將一個程序設爲開機自啓有兩種方式,一種是和登錄用戶綁定,即用戶登錄時才啓動,假如你電腦上有 2 個用戶 A 和 B,你給 A 設置了一個開機啓動的任務,那麼當你電腦開機後是 B 用戶登錄時,這個任務就不會啓動。某個用戶的啓動文件夾爲:C:\Users\xxx\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup,這裏的xxx爲用戶名,然後給前面的aria2啓動.VBS文件創建一個快捷方式,將這個快捷方式放到這個啓動文件夾裏面就可以了,注意不要直接將aria2啓動.VBS文件放到文件夾,因爲此文件在啓動 Aria2 時用的是相對路徑,如果你將此文件放到啓動文件夾,它將找不到 Aria2 程序。第二種是和登錄用戶無關的,不管登錄哪個用戶都能啓動,這個啓動文件夾是:C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp,將創建的aria2啓動.VBS文件的快捷方式放到此文件夾就可以了。設置了開機自啓之後,你關機重啓電腦仍然可以在任務管理器裏看到aria2c.exe進程。
注意: AppData 和 ProgramData 文件夾都是隱藏文件夾,請先選中查看隱藏的項目。

如何使用 Aria2 下載文件

當你在 Mac 或者 Windows 上安裝配置好 Aria2 時,你就可以通過其下載文件了。Aria2 有命令行,web UI,GUI 三種使用方式,這裏推薦 web UI(命令行太麻煩,GUI 也不是太穩定,而 web UI 使用不區分平臺,很方便)。可以選擇的 web UI 有 Aria2 WebUIAria2 Web 控制檯Aria2管理 等,我這裏選擇 Aria2 WebUI。打開網站後,在設置→連接設置裏面將主機改爲127.0.0.1,端口改爲6800,然後應該就會提示連接成功。


如果仍然提示無法連接到 Aria2 服務器,請檢查自己在之前配置文件aria2.conf(Mac)或config.conf(Windows)中的端口是不是 6800 以及自己電腦是不是設置了代理。
連接成功後,點擊添加→使用鏈接,將你要下載的文件地址輸入進去就可以下載了(可以用這個鏈接 https://coding.net/u/mofiter/... 測試,是一張 2KB 大小的 PNG 格式的圖片)。

通過 JSON-RPC 接口下載文件

當文件比較多的時候,我們不可能每次都複製一個文件的下載地址進來手動添加下載任務,這時就能用到 Aria2 的 JSON-RPC 接口。RPC(Remote Procedure Call)是遠程過程調用的意思,你可以在你的程序(Python、JavaScript、Java 等等)中創建一個網絡請求,來調用我們之前配置好的 Aria2 下載文件。

如何在 Python 中利用 JSON-RPC 發送請求下載文件

假設我們要下載的文件的下載地址爲 https://coding.net/u/mofiter/...,我們要將其保存的路徑爲 D:\Downloads,要保存的文件名爲 button.png,那麼我們可以這樣寫:

import requests
import json
url = 'http://127.0.0.1:6800/jsonrpc'
download_url = "https://coding.net/u/mofiter/p/public_files/git/raw/master/go_to_bottom_button.png"
json_rpc = json.dumps({
    'id': '',
    'jsonrpc': '2.0',
    'method': 'aria2.addUri',
    'params': [[download_url], {'dir': 'D:\Downloads', 'out': 'button.png'}]
})
response = requests.post(url=url, data=json_rpc)
print(response)

params 是一個數組,裏面的第一個數組元素裏面放的是下載路徑,而第二個字典元素裏面的 dir 表示文件的保存路徑,out 表示文件名。請求成功後會返回一個 json,裏面包含idjsonrpcresult 等字段。然後你去 D:\Downloads 就能找到我們要的文件 button.png 了,當然如果你要下載的文件很大時,它可能還在下載,這時會有一個同名的以 .aria2結尾的文件,當下載結束後這個文件就會消失。

如何在 JavaScript 中利用 JSON-RPC 發送請求下載文件

假設我們要下載的文件地址,文件保存地址以及文件名和上面的一樣,那我們可以這樣寫:

url = 'http://127.0.0.1:6800/jsonrpc'
download_url = "https://coding.net/u/mofiter/p/public_files/git/raw/master/go_to_bottom_button.png"
var json_rpc = {
            id:'',
            jsonrpc:'2.0',
            method:'aria2.addUri',
            params:[
                [download_url],
                {
                    dir:"'D:\Downloads'",
                    out:"button.png"
                }
            ]
        };
$.ajax({
            url:url,
            type:'POST',
            crossDomain:true,
            processData:false,
            data:JSON.stringify(json_rpc),
            contentType: 'application/json',
            success:function(response){
                console.log(response);
            }
        });

JSON-RPC 可以用來做什麼

理論上,只要是互聯網上你能找到下載地址的音樂,視頻,圖片等等任何東西,你都可以通過這種接口調用的方式來下載。使用比較廣泛的有百度雲盤導出下載 https://chrome.google.com/webstore/detail/baiduexporter/jgebcefbdjhkhapijgbhkidaegoocbjj,打不開的看這裏 http://chromecj.com/accessibi...。我也寫了幾個油猴腳本,可以用來批量下載網易雲課堂的免費課程批量下載中國大學 MOOC 的課程批量下載 Udemy 的訂閱課程,歡迎體驗。最後,通過公衆號“極課助手”去購買“極客時間”所有課程,可以獲得高額返現,最高可返 51 元,想了解更多技術知識,可以關注“極課助手”公衆號。

(正文完)

參考文章:

  1. Mac 下開機啓動 Aria2
  2. aria2 懶人安裝教程
  3. win10的開機啓動文件夾在哪及開機自動啓動軟件
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章