aria2 是一個輕量級的多協議和多源命令行下載實用程序。 它支持 HTTP / HTTPS,FTP,SFTP,BitTorrent 和 Metalink。 aria2 能夠經過內置的 JSON-RPC 和 XML-RPC 接口進行操做。
上面是官網對 Aria2 的介紹,講的直白一點,Aria2 就是一個下載工具,它最大的優點就是下載速度快,基本能夠達到你網絡帶寬的滿速,同時支持的協議不少,無論你的下載連接是以 http,https 開頭,仍是以 magent 開頭的磁力連接以及 BT 種子,它均可如下載。html
若是你沒有安裝包管理工具 Homebrew,那麼先在終端輸入下面的命令安裝:python
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
而後在終端輸入下面的命令安裝Aria2:git
brew install aria2
安裝完成後,咱們須要建立一個配置文件 aria2.conf
,將其放在 ~/.aria2
文件夾中。依次在終端輸入如下命令:github
cd ~ mkdir .aria2 cd .aria2 touch aria2.conf
其中,命令cd
的做用是切換路徑,mkdir
的做用是建立文件夾,touch
的做用是新建文件。
而後打開 Finder,同時按下 command
、shift
、G
,進入文件夾:~/.aria2
(以 .
開頭的文件夾爲隱藏文件夾,若是想直接從 Finder 中找到這個文件夾,須要先同時按下 command
、shift
、.
顯示隱藏文件),就能夠看到配置文件 aria2.conf
,利用文本編輯器打開,將下面的信息複製進去:web
## '#' 開頭爲註釋內容, 選項都有相應的註釋說明, 根據須要修改 ## ## 被註釋的選項填寫的是默認值, 建議在須要修改時再取消註釋 ## ## 文件保存相關 ## # 文件的保存路徑 (可以使用絕對路徑或相對路徑), 默認: 當前啓動位置 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
改成本身想要保存下載文件的路徑。ajax
在終端輸入下面命令便可啓用(注意更改其中的 xxx 爲你本身的電腦用戶名):chrome
aria2c --conf-path="/Users/xxx/.aria2/aria2.conf" -D
若是你不想每次用的時候都要在終端輸入上面的命令開啓,你能夠將其設爲開機自啓,這樣就方便多了。在終端依次輸入下列命令:json
cd ~/Library/LaunchAgents touch aria2.plist
而後打開 Finder,同時按下 command
、shift
、G
,進入文件夾: ~/Library/LaunchAgents
,用文本編輯器打開咱們剛纔建立的文件aria2.plist
,將下面的信息複製進去:windows
<?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>
中的值改成本身的下載路徑。而後在終端依次輸入下列命令:api
chmod 644 aria2.plist launchctl load aria2.plist launchctl start aria2
這樣,開機自啓就設置成功了,若是你從新啓動 Mac,你會發如今活動監視器裏面進程 aria2c 是存在的。
官方沒有給出 Windows 版本的安裝包,須要本身利用源代碼 build,這對通常人來講太難了,因此不少網友自制了懶人版,我這裏選用青小蛙的版本,在此表示感謝,因爲他給的下載地址是百度雲盤,我擔憂資源失效,因此將其另存到了 coding.net,能夠點此下載,下載完以後解壓並將其保存到一個你經常使用的軟件安裝路徑便可,並不須要安裝什麼。
在解壓後的文件夾裏面有一個config.conf
文件,用文本編輯器打開,而後根據本身的須要修改相應選項,這裏可能須要修改的是dir=./downloads
,是下載文件的保存路徑,若是你不修改,下載的文件將會保存在你解壓的文件夾裏面的downloads
文件夾裏面。
點擊文件夾裏面的aria2啓動.VBS
,便可開啓 Aria2,這時你去任務管理器的進程能夠看到名爲aria2c.exe
的進程。
每次開機以後都要從新打開上面的文件來啓動 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 文件夾都是隱藏文件夾,請先選中查看隱藏的項目。
當你在 Mac 或者 Windows 上安裝配置好 Aria2 時,你就能夠經過其下載文件了。Aria2 有命令行,web UI,GUI 三種使用方式,這裏推薦 web UI(命令行太麻煩,GUI 也不是太穩定,而 web UI 使用不區分平臺,很方便)。能夠選擇的 web UI 有 Aria2 WebUI、Aria2 Web 控制檯、Aria2管理 等,我這裏選擇 Aria2 WebUI。打開網站後,在設置→鏈接設置
裏面將主機改成127.0.0.1
,端口改成6800
,而後應該就會提示鏈接成功。
若是仍然提示沒法鏈接到 Aria2 服務器,請檢查本身在以前配置文件aria2.conf
(Mac)或config.conf
(Windows)中的端口是否是 6800 以及本身電腦是否是設置了代理。
鏈接成功後,點擊添加→使用連接
,將你要下載的文件地址輸入進去就能夠下載了(能夠用這個連接 https://coding.net/u/mofiter/... 測試,是一張 2KB 大小的 PNG 格式的圖片)。
當文件比較多的時候,咱們不可能每次都複製一個文件的下載地址進來手動添加下載任務,這時就能用到 Aria2 的 JSON-RPC 接口。RPC(Remote Procedure Call)是遠程過程調用的意思,你能夠在你的程序(Python、JavaScript、Java 等等)中建立一個網絡請求,來調用咱們以前配置好的 Aria2 下載文件。
假設咱們要下載的文件的下載地址爲 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,裏面包含id
、jsonrpc
、result
等字段。而後你去 D:\Downloads
就能找到咱們要的文件 button.png
了,固然若是你要下載的文件很大時,它可能還在下載,這時會有一個同名的以 .aria2
結尾的文件,當下載結束後這個文件就會消失。
假設咱們要下載的文件地址,文件保存地址以及文件名和上面的同樣,那咱們能夠這樣寫:
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); } });
理論上,只要是互聯網上你能找到下載地址的音樂,視頻,圖片等等任何東西,你均可以經過這種接口調用的方式來下載。使用比較普遍的有百度雲盤導出下載 https://chrome.google.com/webstore/detail/baiduexporter/jgebcefbdjhkhapijgbhkidaegoocbjj,打不開的看這裏 http://chromecj.com/accessibi...。我也寫了幾個油猴腳本,能夠用來批量下載網易雲課堂的免費課程、批量下載中國大學 MOOC 的課程、批量下載 Udemy 的訂閱課程,歡迎體驗。最後,經過公衆號「極課助手」去購買「極客時間」全部課程,能夠得到高額返現,最高可返 51 元,想了解更多技術知識,能夠關注「極課助手」公衆號。
(正文完)
參考文章: