1. 程式人生 > >如何配置 Aria2 來進行檔案下載

如何配置 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/p/public_files/git/raw/master/go_to_bottom_button.png 測試,是一張 2KB 大小的 PNG 格式的圖片)。

通過 JSON-RPC 介面下載檔案

當檔案比較多的時候,我們不可能每次都複製一個檔案的下載地址進來手動新增下載任務,這時就能用到 Aria2 的 JSON-RPC 介面。RPC(Remote Procedure Call)是遠端過程呼叫的意思,你可以在你的程式(Python、JavaScript、Java 等等)中建立一個網路請求,來呼叫我們之前配置好的 Aria2 下載檔案。

如何在 Python 中利用 JSON-RPC 傳送請求下載檔案

假設我們要下載的檔案的下載地址為 https://coding.net/u/mofiter/p/public_files/git/raw/master/go_to_bottom_button.png,我們要將其儲存的路徑為 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/accessibility/2018-04/1397/download.html。我也寫了幾個油猴指令碼,可以用來批量下載網易雲課堂的免費課程批量下載中國大學 MOOC 的課程批量下載 Udemy 的訂閱課程,歡迎體驗。 (正文完)

參考文章:

  1. Mac 下開機啟動 Aria2
  2. aria2 懶人安裝教程
  3. win10的開機啟動資料夾在哪及開機自動啟動軟體