該程序不提供任何保證。您必須自行承擔使用該程式的風險。
aria2 是用於下載檔案的實用程式。支援的協定包括 HTTP(S)、FTP、SFTP、BitTorrent 和 Metalink。 aria2 可以從多個來源/協定下載文件,並嘗試利用您的最大下載頻寬。它支援同時從HTTP(S)/FTP/SFTP和BitTorrent下載文件,同時從HTTP(S)/FTP/SFTP下載的資料上傳到BitTorrent swarm。使用 Metalink 的區塊校驗和,aria2 在下載 BitTorrent 等檔案時自動驗證資料區塊。
專案頁面位於https://aria2.github.io/。
請參閱 aria2 線上手冊(俄語翻譯、葡萄牙語翻譯)以了解如何使用 aria2。
以下是功能列表:
命令列介面
透過 HTTP(S)/FTP/SFTP/BitTorrent 下載文件
分段下載
Metalink 版本 4 (RFC 5854) 支援(HTTP/FTP/SFTP/BitTorrent)
Metalink 3.0 版支援(HTTP/FTP/SFTP/BitTorrent)
Metalink/HTTP (RFC 6249) 支持
HTTP/1.1 實作
HTTP 代理支援
HTTP BASIC 驗證支持
HTTP 代理驗證支援
眾所周知的代理環境變數: http_proxy
、 https_proxy
、 ftp_proxy
、 all_proxy
和no_proxy
HTTP gzip、deflate 內容編碼支持
使用 HTTPS 中給定的受信任 CA 憑證驗證對等方
HTTPS 中的用戶端憑證驗證
分塊傳輸編碼支持
使用 Firefox3 格式、Chromium/Google Chrome 和 Mozilla/Firefox (1.x/2.x)/Netscape 格式從檔案載入 Cookie。
以 Mozilla/Firefox (1.x/2.x)/Netscape 格式儲存 Cookie。
自訂 HTTP 標頭支持
持久連接支援
透過 HTTP 代理的 FTP/SFTP
下載/上傳速度限制
BitTorrent 擴充:快速擴充、DHT、PEX、MSE/PSE、多重追蹤器、UDP 追蹤器
BitTorrent 網路播種。 aria2 請求的區塊大小大於片段大小,以減少請求開銷。它還支援具有片段大小的管道請求。
BitTorrent 本地對等發現
完全重命名/更改 BitTorrent 下載的目錄結構
JSON-RPC(透過 HTTP 和 WebSocket)/XML-RPC 接口
作為守護程式運行
在多檔案 torrent/Metalink 中選擇性下載
Metalink 中的區塊校驗與驗證
可以在Metalink中停用分段下載
網路資源庫支持
設定檔支援
下載在文字檔案或標準輸入中找到的 URI,並且可以選擇指定目標目錄和輸出檔案名
參數化 URI 支持
Happy Eyeballs 支援 IPv6
磁碟緩存以減少磁碟活動
我們對 aria2 版本使用 3 個數字:MAJOR.MINOR.PATCH。 我們將在每月 15 日發布次要更新。 如果自上次版本以來沒有發生任何更改,我們可能會跳過某個版本。 對於翻譯團隊來說,功能和文件凍結發生在發布日(每月 5 日)前 10 天。 我們將在當天左右提出有關即將發布的版本的問題。
如果有安全性問題,我們可能會在常規版本之間發布修補程式版本。
MAJOR版本暫時維持為1。
我們在 Github 上維護原始碼:https://github.com/aria2/aria2
若要取得最新的原始程式碼,請執行以下命令:
$ git 克隆 https://github.com/aria2/aria2.git
這將在您的當前目錄中建立一個 aria2 目錄,並將來源檔案儲存在此處。
特徵 | 依賴性 |
---|---|
HTTPS | OSX 或 GnuTLS 或 OpenSSL 或 Windows |
SFTP | libssh2 |
BT | 沒有任何。選用:libnettle+libgmp 或 libgcrypt 或 OpenSSL(請參閱註解) |
梅塔林克 | libxml2 或 Expat。 |
校驗和 | 沒有任何。選用:OSX 或 libnettle 或 libgcrypt 或 OpenSSL 或 Windows(請參閱註解) |
gzip、HTTP 中的 deflate | 茲庫 |
非同步DNS | C-戰神 |
Firefox3/Chromium cookie | libsqlite3 |
XML-RPC | libxml2 或 Expat。 |
基於 WebSocket 的 JSON-RPC | libnettle 或 libgcrypt 或 OpenSSL |
筆記
如果安裝了兩個函式庫,libxml2 優先於 Expat。如果您更喜歡 Expat,請使用--without-libxml2
運行配置。
筆記
在 Apple OSX 上,作業系統級 SSL/TLS 支援將是首選。因此,該平台上不需要 GnuTLS 或 OpenSSL。如果您想停用此行為,請使用--without-appletls
執行設定。
如果安裝了兩個函式庫,GnuTLS 優先於 OpenSSL。如果您更喜歡 OpenSSL,請使用--without-gnutls
--with-openssl
運行設定。
在 Windows 上,有基於本機 Windows SSL 功能 (Schannel) 的可用 SSL 實現,並且它將是首選。 因此,該平台上不需要 GnuTLS 或 OpenSSL。 如果您想停用此行為,請使用--without-wintls
執行設定。
筆記
在 Apple OSX 上,作業系統級校驗和支援將是首選,除非 aria2 配置為--without-appletls
。
如果安裝了兩個函式庫,libnttle 的優先權高於 libgcrypt。 如果您喜歡 libgcrypt,請使用--without-libnettle --with-libgcrypt
來執行設定。如果選擇 OpenSSL 而非 GnuTLS,則 libnettle 和 libgcrypt 都不會被使用。
如果未安裝任何可選依賴項,則將使用僅支援 md5 和 sha1 的內部實作。
在 Windows 上,有基於本機 Windows 功能的 SSL 實作可用,而且它將是首選,除非 aria2 配置為--without-wintls
。
使用者可以對 SSL 和加密庫進行以下配置之一:
開放式SSL
GnuTLS + libgcrypt
GnuTLS + libnettle
Apple TLS(僅限 OSX)
Windows TLS(僅限 Windows)
您可以透過分別提供設定腳本--disable-bittorrent
和--disable-metalink
來停用 BitTorrent 和 Metalink 支援。
要啟用非同步 DNS 支持,您需要 c-ares。
c-ares:http://c-ares.haxx.se/
aria2 主要用 C++ 寫。最初,它是基於C++98/C++03標準特性編寫的。我們現在正在將 aria2 遷移到 C++11 標準。目前原始碼需要支援 C++11 的編譯器。對於眾所周知的編譯器,例如 g++ 和 clang,必須支援-std=c++11
或-std=c++0x
標誌。
要從原始碼套件建立 aria2,您需要以下開發套件(套件名稱可能會根據您使用的發行版而有所不同):
libgnutls-dev(HTTPS、BitTorrent、校驗和支援所需)
nettle-dev(BitTorrent、校驗與支援所需)
libgmp-dev(BitTorrent 必備)
libssh2-1-dev(SFTP 支援所需)
libc-ares-dev(非同步 DNS 支援所需)
libxml2-dev(Metalink 支援所需)
zlib1g-dev(gzip、HTTP 中的 deflate 解碼支援必需)
libsqlite3-dev(Firefox3/Chromium cookie 支援所需)
pkg-config(檢測已安裝的程式庫所需)
您可以使用 libgcrypt-dev 來取代 nettle-dev 和 libgmp-dev:
libgpg-error-dev(BitTorrent、校驗與支援所需)
libgcrypt-dev(BitTorrent、校驗與支援所需)
您可以使用 libssl-dev 取代 libgnutls-dev、nettle-dev、libgmp-dev、libgpg-error-dev 和 libgcrypt-dev:
libssl-dev(HTTPS、BitTorrent、校驗和支援所需)
您可以使用 libexpat1-dev 來取代 libxml2-dev:
libexpat1-dev(Metalink 支援所需)
在 Fedora 上,您需要以下軟體包:gcc、gcc-c++、kernel-devel、libgcrypt-devel、libxml2-devel、openssl-devel、gettext-devel、cppunit
如果您從 git 儲存庫下載了原始程式碼,則必須安裝下列軟體包才能取得 autoconf 巨集:
libxml2-dev
libcppunit-dev
自動配置
汽車製造商
自動工具開發
自動點
庫工具
並執行以下命令以產生配置腳本和建置程式所需的其他檔案:
$ autoreconf -i
此外,您還需要 Sphinx 來建立手冊頁。
如果您正在為 Mac OS X 建立 aria2,請查看 makerelease-osx.mk GNU Make makefile。
建置 aria2 的最快方法是先執行配置腳本:
$ ./配置
若要建立靜態連結的 aria2,請使用ARIA2_STATIC=yes
命令列選項:
$ ./配置 ARIA2_STATIC=yes
配置完成後,執行make
編譯程式:
$ 製作
請參閱交叉編譯 Windows 二進位檔案以建立 Windows 二進位。請參閱交叉編譯 Android 二進位檔案以建立 Android 二進位。
配置腳本檢查可用的庫並啟用盡可能多的功能,預設未啟用的實驗性功能除外。
從1.1.0開始,aria2預設檢查HTTPS伺服器的憑證。如果您使用 OpenSSL 或具有gnutls_certificate_set_x509_system_trust()
函數的最新版本的 GnuTLS 進行構建,並且該庫已正確配置為定位系統範圍的 CA 憑證存儲,則 aria2 將在啟動時自動載入這些憑證。如果不是這種情況,我建議提供 CA 捆綁檔案的路徑。例如,在 Debian 中,CA 捆綁檔案的路徑是「/etc/ssl/certs/ca-certificates.crt」(在 ca-certificates 套件中)。這可能會因您的發行版而異。您可以使用--with-ca-bundle option
讓它配置腳本:
$ ./configure --with-ca-bundle='/etc/ssl/certs/ca-certificates.crt' $ 製作
如果沒有--with-ca-bundle
選項,您在存取 HTTPS 伺服器時將會遇到錯誤,因為沒有 CA 套件就無法驗證憑證。在這種情況下,您可以使用 aria2 的--ca-certificate
選項來指定 CA 捆綁檔案。 如果您沒有安裝 CA 捆綁包文件,那麼最後的方法是使用--check-certificate=false
來停用憑證驗證。
使用本機 OSX (AppleTLS) 和/或 Windows (WinTLS) 實作將自動使用系統憑證存儲,因此--with-ca-bundle
不是必需的,並且在使用這些實作時將被忽略。
預設情況下,名為aria2c
的 bash_completion 檔案安裝到目錄$prefix/share/doc/aria2/bash_completion
。 若要變更檔案的安裝目錄,請使用--with-bashcompletiondir
選項。
make
後,可執行檔位於src/aria2c
。
aria2 使用 CppUnit 進行自動化單元測試。要運行單元測試:
$ 進行檢查
在本節中,我們將描述如何在 Debian Linux 上使用 mingw-w64 (http://mingw-w64.org/doku.php) 交叉編譯器建立 Windows 二進位。 MinGW (http://www.mingw.org/) 可能無法建置 aria2。
建立 Windows 二進位檔案最簡單的方法是使用 Dockerfile.mingw。 請參閱 Dockerfile.mingw 如何建置二進位檔案。 如果您無法使用 Dockerfile,請繼續閱讀以下段落。
基本上,在編譯和安裝依賴函式庫後,您只需傳遞適當的--host
選項並指定要設定的CPPFLAGS
、 LDFLAGS
和PKG_CONFIG_LIBDIR
變數即可進行交叉編譯。為了方便起見並降低我們自己的開發成本,我們提供了一種更簡單的方法來配置建置設定。
mingw-config
腳本是 mingw-w64 的設定腳本包裝器。我們用它來創建官方 Windows 版本。 該腳本假設已建置以下程式庫用於交叉編譯:
c-戰神
外籍人士
sqlite3
茲庫
libssh2
單元
可以調整一些環境變數來更改建置設定:
HOST
交叉編譯以建立在HOST
上運行的程式。它預設為i686-w64-mingw32
。若要建置 64 位元二進位檔案,請指定x86_64-w64-mingw32
。
PREFIX
安裝依賴函式庫的目錄的前綴。 它預設為/usr/local/$HOST
。 -I$PREFIX/include
將會被加入到CPPFLAGS
中。 -L$PREFIX/lib
將會被加入到LDFLAGS
中。 $PREFIX/lib/pkgconfig
將設定為PKG_CONFIG_LIBDIR
。
例如,要建置 64 位元二進位檔案,請執行下列操作:
$ HOST=x86_64-w64-mingw32 ./mingw-config
如果您想要使用--enable-libaria2
的 libaria2 dll,請勿使用ARIA2_STATIC=yes
並準備外部程式庫的 DLL 版本。
在本節中,我們將介紹如何在 Debian Linux 上使用 Android NDK 交叉編譯器建立 Android 二進位。
在撰寫本文時,Android NDK r21e 應該可以正確編譯 aria2。
android-config
腳本是 Android 建置的設定腳本包裝器。 我們用它來創建官方 Android 版本。 該腳本假設已建置以下程式庫用於交叉編譯:
c-戰神
開放式SSL
外籍人士
茲庫
libssh2
建置上述程式庫時,請確保已停用共享庫並僅啟用靜態庫。我們將靜態連結這些函式庫。
android-config
假定定義了$ANDROID_HOME
和$NDK
環境變數。
我們目前使用 Android NDK r21e。 $NDK
應指向 Android NDK 的目錄。 建置工具位於$NDK/toolchains/llvm/prebuilt/linux-x86_64/bin/
下。
所有相依性庫必須安裝在$ANDROID_HOME/usr/local
下。
在android-config
之後,執行make
來編譯原始碼。
Sphinx 用於建置文件。如果 aria2 手冊頁不是最新的,則當您執行make
時將建置它們。 您也可以透過make html
建立 aria2 手冊頁的 HTML 版本。 HTML 版本的手冊也可在線上取得(俄語翻譯、葡萄牙語翻譯)。
下載檔案的檔案名稱確定如下:
單一檔案模式
如果 .torrent 檔案中存在「name」鍵,則檔案名稱是「name」鍵的值。否則,檔案名稱是 .torrent 檔案的基本名稱並附加「.file」。例如,.torrent 檔案是“test.torrent”,則檔案名稱是“test.torrent.file”。 可以透過-d選項指定儲存下載檔案的目錄。
多檔案模式
.torrent 檔案中提到的完整目錄/檔案結構已建立。 可透過-d選項指定存放下載檔案的頂層目錄的目錄。
在下載開始之前,如果需要,會建立完整的目錄結構。預設情況下,aria2 最多開啟 .torrent 檔案中提到的 100 個文件,並直接寫入和讀取這些文件。同時開啟的檔案數量可以透過--bt-max-open-files
選項控制。
aria2 支援主線相容的 DHT。預設情況下,IPv4 DHT 的路由表儲存到$XDG_CACHE_HOME/aria2/dht.dat
,IPv6 DHT 的路由表儲存到$XDG_CACHE_HOME/aria2/dht6.dat
除非$HOME/.aria2/dht.dat
$HOME/.aria2/dht6.dat
。 aria2 使用相同的連接埠號碼來偵聽 IPv4 和 IPv6 DHT。
啟用 IPv4 DHT 時會啟用 UDP 追蹤器支援。 UDP追蹤器的連接埠號碼與DHT共用。使用--dht-listen-port
選項更改連接埠號碼。
-o
選項用於更改 .torrent 檔案本身的檔案名,而不是更改 .torrent 檔案中檔案的檔案名稱。為此,請改用--index-out
選項。
aria2 預設使用的 TCP 和 UDP 連接埠號碼為 6881-6999。
aria2 不會自動配置連接埠轉送。請手動設定您的路由器或防火牆。
對等點的最大數量為 55。可以使用--bt-request-peer-speed-limit
選項調整此下載速率。
從版本 0.10.0 開始,aria2 在選擇性下載完成後停止傳送請求訊息。
目前實作支援 HTTP(S)/FTP/SFTP/BitTorrent。 其他 P2P 協定將被忽略。支援 Metalink4 (RFC 5854) 和 Metalink 3.0 版文件。
對於校驗和驗證,支援 md5、sha-1、sha-224、sha-256、sha-384 和 sha-512。如果提供多種雜湊演算法,aria2 將使用更強的一種。如果整個檔案校驗和驗證失敗,aria2 不會重試下載,只是以非零回傳程式碼退出。
支援的使用者首選項包括版本、語言、位置、協定和作業系統。
如果 Metalink 檔案中提供了區塊校驗和,則 aria2 在下載過程中會自動驗證資料區塊。可以透過命令列選項關閉此行為。
如果 Metalink 檔案中包含簽名,則 aria2 在下載完成後會將其儲存為檔案。 檔案名稱是下載檔案名稱+“.sig”。如果相同的文件已存在,則不儲存簽署文件。
在Metalink4中,多檔案torrent可以出現在metalink:metaurl元素中。 由於 aria2 無法同時下載 2 個相同的 torrent,因此 aria2 將檔案分組到具有相同 BitTorrent metaurl 的 metalink:file 元素中,並從單一 BitTorrent 群下載它們。這基本上是一個帶有文件選擇的多文件 torrent 下載,因此也會創建不在 Metalink 文件中但與所選文件共享同一塊的相鄰文件。
如果在metalink:url或metalink:metaurl元素中指定了相對URI,則aria2使用Metalink檔案的URI作為基本URI來解析相對URI。如果在從本機磁碟讀取的 Metalink 檔案中找到相對 URI,則 aria2 使用--metalink-base-uri
選項的值作為基本 URI。如果未指定此選項,則相對 URI 將被忽略。
目前的實作僅使用 rel=duplicate 連結。 aria2 瞭解摘要標頭欄位並檢查它是否與其他來源的摘要值相符。如果不同,則斷開連線。下載完成後,aria2 也會使用此摘要值來執行校驗和驗證。 aria2 辨識地理價值。要告訴 aria2 您喜歡哪個位置,您可以使用--metalink-location
選項。
預設為 HTTP(S)/FTP/SFTP 啟用 netrc 支援。 若要停用 netrc 支持,請指定 -n 命令列選項。 您的 .netrc 檔案應該具有正確的權限(600)。
aria2 中嵌入的 WebSocket 伺服器實作了 RFC 6455 中定義的規格。
libaria2 是一個 C++ 函式庫,為客戶端程式碼提供 aria2 功能。目前,libaria2 不是預設建置的。若要啟用 libaria2,請使用--enable-libaria2
配置選項。 預設情況下,僅建置共享庫。要建置靜態庫,還可以使用--enable-static
配置選項。請參閱 libaria2 文件以了解如何使用 API。
aria2 線上手冊
https://aria2.github.io/
RFC 959 檔案傳輸協定 (FTP)
RFC 1738 統一資源定位符 (URL)
RFC 2428 IPv6 和 NAT 的 FTP 擴展
RFC 2616 超文本傳輸協定-HTTP/1.1
RFC 3659 FTP 擴充
RFC 3986 統一資源識別碼 (URI):通用語法
RFC 4038 IPv6 過渡的應用面
RFC 5854 Metalink 下載描述格式
RFC 6249 Metalink/HTTP:鏡像與哈希
RFC 6265 HTTP 狀態管理機制
RFC 6266 超文本傳輸協定 (HTTP) 中內容處置標頭欄位的使用
RFC 6455 WebSocket 協議
RFC 6555 快樂眼球:雙堆疊主機的成功
BitTorrent 協定規範
BitTorrent:DHT 協議
BitTorrent:快速擴展
BitTorrent:IPv6 追蹤器擴展
BitTorrent:對等方傳送元資料檔案的擴展
BitTorrent:擴充協議
BitTorrent:多追蹤器元資料擴展
BitTorrent:BitTorrent 的 UDP 追蹤器協定和 BitTorrent udp 追蹤器協定規範。
BitTorrent:WebSeed - HTTP/FTP 播種(GetRight 風格)
BitTorrent:私人種子
BitTorrent:適用於 IPv6 的 BitTorrent DHT 擴充
BitTorrent:訊息流加密
Kademlia:基於 XOR 度量的點對點資訊系統