Ce programme est livré sans garantie. Vous devez utiliser ce programme à vos propres risques.
aria2 est un utilitaire de téléchargement de fichiers. Les protocoles pris en charge sont HTTP(S), FTP, SFTP, BitTorrent et Metalink. aria2 peut télécharger un fichier à partir de plusieurs sources/protocoles et essaie d'utiliser votre bande passante de téléchargement maximale. Il prend en charge le téléchargement simultané d'un fichier depuis HTTP(S)/FTP/SFTP et BitTorrent, tandis que les données téléchargées depuis HTTP(S)/FTP/SFTP sont téléchargées vers l'essaim BitTorrent. À l'aide des sommes de contrôle de morceaux de Metalink, aria2 valide automatiquement des morceaux de données lors du téléchargement d'un fichier comme BitTorrent.
La page du projet se trouve à https://aria2.github.io/.
Consultez le manuel en ligne d’aria2 (traduction russe, traduction portugaise) pour apprendre à utiliser aria2.
Voici une liste de fonctionnalités :
Interface de ligne de commande
Téléchargez des fichiers via HTTP(S)/FTP/SFTP/BitTorrent
Téléchargement segmenté
Prise en charge de Metalink version 4 (RFC 5854) (HTTP/FTP/SFTP/BitTorrent)
Prise en charge de Metalink version 3.0 (HTTP/FTP/SFTP/BitTorrent)
Prise en charge de Metalink/HTTP (RFC 6249)
Implémentation HTTP/1.1
Prise en charge du proxy HTTP
Prise en charge de l'authentification HTTP BASIC
Prise en charge de l'authentification du proxy HTTP
Variables d'environnement bien connues pour proxy : http_proxy
, https_proxy
, ftp_proxy
, all_proxy
et no_proxy
HTTP gzip, prise en charge du codage de contenu dégonflé
Vérifier l'homologue à l'aide du certificat d'autorité de certification de confiance donné dans HTTPS
Authentification du certificat client en HTTPS
Prise en charge du codage de transfert fragmenté
Chargez les cookies du fichier au format Firefox3, Chromium/Google Chrome et le format Mozilla/Firefox (1.x/2.x)/Netscape.
Enregistrez les cookies au format Mozilla/Firefox (1.x/2.x)/Netscape.
Prise en charge des en-têtes HTTP personnalisés
Prise en charge des connexions persistantes
FTP/SFTP via proxy HTTP
Limitation de la vitesse de téléchargement/téléchargement
Extensions BitTorrent : extension rapide, DHT, PEX, MSE/PSE, Multi-Tracker, tracker UDP
BitTorrent WEB-ensemencement. aria2 demande un morceau supérieur à la taille des morceaux pour réduire la surcharge de requête. Il prend également en charge les demandes en pipeline avec la taille des morceaux.
Découverte locale par les pairs BitTorrent
Renommer/modifier complètement la structure des répertoires des téléchargements BitTorrent
Interface JSON-RPC (sur HTTP et WebSocket)/XML-RPC
Exécuter en tant que processus démon
Téléchargement sélectif en torrent multi-fichiers/Metalink
Validation de la somme de contrôle des morceaux dans Metalink
Peut désactiver le téléchargement segmenté dans Metalink
Prise en charge du réseau
Prise en charge des fichiers de configuration
Les URI de téléchargement trouvés dans un fichier texte ou stdin et le répertoire de destination et le nom du fichier de sortie peuvent être spécifiés en option
Prise en charge des URI paramétrés
Prise en charge d'IPv6 avec Happy Eyeballs
Cache disque pour réduire l'activité du disque
Nous utilisons 3 numéros pour la version aria2 : MAJOR.MINOR.PATCH. Nous expédierons des mises à jour MINEURES le 15 de chaque mois. Nous pouvons ignorer une version si nous n'avons eu aucun changement depuis la dernière version. Le gel des fonctionnalités et de la documentation intervient 10 jours avant le jour de sortie (le 5ème jour du mois) pour les équipes de traduction. Nous soulèverons un problème concernant la sortie prochaine ce jour-là.
Nous pouvons publier des versions PATCH entre les versions régulières si nous rencontrons des problèmes de sécurité.
La version MAJEURE restera à 1 pour le moment.
Nous maintenons le code source sur Github : https://github.com/aria2/aria2
Pour obtenir le dernier code source, exécutez la commande suivante :
$ git clone https://github.com/aria2/aria2.git
Cela créera un répertoire aria2 dans votre répertoire actuel et les fichiers sources y seront stockés.
caractéristiques | dépendance |
---|---|
HTTPS | OSX ou GnuTLS ou OpenSSL ou Windows |
SFTP | libssh2 |
BitTorrent | Aucun. Facultatif : libnettle+libgmp ou libgcrypt ou OpenSSL (voir note) |
Lien métallique | libxml2 ou Expat. |
Somme de contrôle | Aucun. Facultatif : OSX ou libnettle ou libgcrypt ou OpenSSL ou Windows (voir note) |
gzip, dégonfler en HTTP | zlib |
DNS asynchrone | C-Arès |
Cookie Firefox3/Chromium | libsqlite3 |
XML-RPC | libxml2 ou Expat. |
JSON-RPC sur WebSocket | libnettle ou libgcrypt ou OpenSSL |
Note
libxml2 a priorité sur Expat si les deux bibliothèques sont installées. Si vous préférez Expat, exécutez configure avec --without-libxml2
.
Note
Sur Apple OSX, la prise en charge SSL/TLS au niveau du système d'exploitation sera privilégiée. Par conséquent, ni GnuTLS ni OpenSSL ne sont requis sur cette plateforme. Si vous souhaitez désactiver ce comportement, exécutez configure avec --without-appletls
.
GnuTLS a priorité sur OpenSSL si les deux bibliothèques sont installées. Si vous préférez OpenSSL, exécutez configure avec --without-gnutls
--with-openssl
.
Sous Windows, il existe une implémentation SSL basée sur les capacités SSL natives de Windows (Schannel) et elle sera préférée. Par conséquent, ni GnuTLS ni OpenSSL ne sont requis sur cette plateforme. Si vous souhaitez désactiver ce comportement, exécutez configure avec --without-wintls
.
Note
Sur Apple OSX, la prise en charge de la somme de contrôle au niveau du système d'exploitation sera préférée, sauf si aria2 est configuré avec --without-appletls
.
libnettle a priorité sur libgcrypt si les deux bibliothèques sont installées. Si vous préférez libgcrypt, exécutez configure avec --without-libnettle --with-libgcrypt
. Si OpenSSL est sélectionné plutôt que GnuTLS, ni libnettle ni libgcrypt ne seront utilisés.
Si aucune des dépendances facultatives n'est installée, une implémentation interne prenant uniquement en charge md5 et sha1 sera utilisée.
Sous Windows, une implémentation SSL est disponible, basée sur les fonctionnalités natives de Windows et elle sera préférée, à moins que aria2 ne soit configuré avec --without-wintls
.
Un utilisateur peut avoir l'une des configurations suivantes pour les bibliothèques SSL et crypto :
OuvertSSL
GnuTLS + libgcrypt
GnuTLS + libnettle
Apple TLS (OSX uniquement)
Windows TLS (Windows uniquement)
Vous pouvez désactiver la prise en charge de BitTorrent et Metalink en fournissant respectivement --disable-bittorrent
et --disable-metalink
au script de configuration.
Pour activer la prise en charge DNS asynchrone, vous avez besoin de c-ares.
c-ares : http://c-ares.haxx.se/
aria2 est principalement écrit en C++. Initialement, il a été écrit sur la base des fonctionnalités standard C++98/C++03. Nous migrons actuellement aria2 vers le standard C++11. Le code source actuel nécessite un compilateur compatible C++11. Pour les compilateurs bien connus, tels que g++ et clang, l'indicateur -std=c++11
ou -std=c++0x
doit être pris en charge.
Pour construire aria2 à partir du package source, vous avez besoin des packages de développement suivants (le nom du package peut varier en fonction de la distribution que vous utilisez) :
libgnutls-dev (obligatoire pour la prise en charge HTTPS, BitTorrent et Checksum)
nettle-dev (obligatoire pour BitTorrent, prise en charge de la somme de contrôle)
libgmp-dev (obligatoire pour BitTorrent)
libssh2-1-dev (obligatoire pour la prise en charge SFTP)
libc-ares-dev (obligatoire pour la prise en charge du DNS asynchrone)
libxml2-dev (obligatoire pour la prise en charge de Metalink)
zlib1g-dev (obligatoire pour gzip, prise en charge du décodage dégonflé en HTTP)
libsqlite3-dev (obligatoire pour la prise en charge des cookies Firefox3/Chromium)
pkg-config (obligatoire pour détecter les bibliothèques installées)
Vous pouvez utiliser libgcrypt-dev au lieu de nettle-dev et libgmp-dev :
libgpg-error-dev (obligatoire pour BitTorrent, prise en charge de la somme de contrôle)
libgcrypt-dev (obligatoire pour BitTorrent, prise en charge de la somme de contrôle)
Vous pouvez utiliser libssl-dev au lieu de libgnutls-dev, nettle-dev, libgmp-dev, libgpg-error-dev et libgcrypt-dev :
libssl-dev (obligatoire pour la prise en charge HTTPS, BitTorrent et Checksum)
Vous pouvez utiliser libexpat1-dev au lieu de libxml2-dev :
libexpat1-dev (obligatoire pour la prise en charge de Metalink)
Sur Fedora, vous avez besoin des packages suivants : gcc, gcc-c++, kernel-devel, libgcrypt-devel, libxml2-devel, openssl-devel, gettext-devel, cppunit
Si vous avez téléchargé le code source depuis un référentiel git, vous devez installer les packages suivants pour obtenir les macros autoconf :
libxml2-dev
libcppunit-dev
autoconf
fabrication automatique
autotools-dev
pointage automatique
outil lib
Et exécutez la commande suivante pour générer le script de configuration et les autres fichiers nécessaires à la création du programme :
$ autoreconf -i
De plus, vous avez besoin de Sphinx pour créer la page de manuel.
Si vous construisez aria2 pour Mac OS X, jetez un œil au makefile makerelease-osx.mk GNU Make.
Le moyen le plus rapide de construire aria2 est d'abord d'exécuter le script de configuration :
$ ./configurer
Pour créer aria2 lié statiquement, utilisez l'option de ligne de commande ARIA2_STATIC=yes
:
$ ./configure ARIA2_STATIC=oui
Une fois la configuration terminée, exécutez make
pour compiler le programme :
$ faire
Voir Compilation croisée de binaire Windows pour créer un binaire Windows. Voir Compilation croisée de binaires Android pour créer un binaire Android.
Le script de configuration vérifie les bibliothèques disponibles et active autant de fonctionnalités que possible, à l'exception des fonctionnalités expérimentales non activées par défaut.
Depuis la 1.1.0, aria2 vérifie par défaut le certificat des serveurs HTTPS. Si vous construisez avec OpenSSL ou la version récente de GnuTLS qui a la fonction gnutls_certificate_set_x509_system_trust()
et que la bibliothèque est correctement configurée pour localiser le magasin de certificats CA à l'échelle du système, aria2 chargera automatiquement ces certificats au démarrage. Si ce n'est pas le cas, je recommande de fournir le chemin d'accès au fichier du bundle CA. Par exemple, dans Debian, le chemin d'accès au fichier du bundle CA est « /etc/ssl/certs/ca-certificates.crt » (dans le package ca-certificates). Cela peut varier en fonction de votre distribution. Vous pouvez lui donner pour configurer le script en utilisant --with-ca-bundle option
:
$ ./configure --with-ca-bundle='/etc/ssl/certs/ca-certificates.crt' $ faire
Sans l'option --with-ca-bundle
, vous rencontrerez l'erreur lors de l'accès aux serveurs HTTPS car le certificat ne peut pas être vérifié sans le bundle CA. Dans un tel cas, vous pouvez spécifier le fichier du bundle CA à l'aide de l'option --ca-certificate
d'aria2. Si le fichier du bundle CA n'est pas installé, le dernier recours consiste à désactiver la validation du certificat à l'aide de --check-certificate=false
.
L'utilisation de l'implémentation native OSX (AppleTLS) et/ou Windows (WinTLS) utilisera automatiquement le magasin de certificats système, donc --with-ca-bundle
n'est pas nécessaire et sera ignoré lors de l'utilisation de ces implémentations.
Par défaut, le fichier bash_completion nommé aria2c
est installé dans le répertoire $prefix/share/doc/aria2/bash_completion
. Pour modifier le répertoire d'installation du fichier, utilisez l'option --with-bashcompletiondir
.
Après un make
, l'exécutable se trouve dans src/aria2c
.
aria2 utilise CppUnit pour les tests unitaires automatisés. Pour exécuter le test unitaire :
$ faire un chèque
Dans cette section, nous décrivons comment créer un binaire Windows à l'aide d'un compilateur croisé mingw-w64 (http://mingw-w64.org/doku.php) sur Debian Linux. Le MinGW (http://www.mingw.org/) ne pourra peut-être pas construire aria2.
Le moyen le plus simple de créer un binaire Windows consiste à utiliser Dockerfile.mingw. Voir Dockerfile.mingw comment créer un binaire. Si vous ne pouvez pas utiliser Dockerfile, continuez à lire les paragraphes suivants.
Fondamentalement, après avoir compilé et installé les bibliothèques dépendantes, vous pouvez effectuer une compilation croisée en passant simplement l'option --host
appropriée et en spécifiant les variables CPPFLAGS
, LDFLAGS
et PKG_CONFIG_LIBDIR
à configurer. Pour plus de commodité et pour réduire nos propres coûts de développement, nous proposons un moyen plus simple de configurer les paramètres de construction.
Le script mingw-config
est un wrapper de script de configuration pour mingw-w64. Nous l'utilisons pour créer la version officielle de Windows. Ce script suppose que les bibliothèques suivantes ont été créées pour la compilation croisée :
c-ares
expatrié
sqlite3
zlib
libssh2
unité centrale
Certaines variables d'environnement peuvent être ajustées pour modifier les paramètres de construction :
HOST
compilation croisée pour créer des programmes à exécuter sur HOST
. La valeur par défaut est i686-w64-mingw32
. Pour créer un binaire 64 bits, spécifiez x86_64-w64-mingw32
.
PREFIX
Préfixe du répertoire dans lequel les bibliothèques dépendantes sont installées. La valeur par défaut est /usr/local/$HOST
. -I$PREFIX/include
sera ajouté à CPPFLAGS
. -L$PREFIX/lib
sera ajouté à LDFLAGS
. $PREFIX/lib/pkgconfig
sera défini sur PKG_CONFIG_LIBDIR
.
Par exemple, pour créer un binaire 64 bits, procédez comme suit :
$ HOST=x86_64-w64-mingw32 ./mingw-config
Si vous voulez libaria2 dll avec --enable-libaria2
, n'utilisez pas ARIA2_STATIC=yes
et préparez la version DLL des bibliothèques externes.
Dans cette section, nous décrivons comment créer un binaire Android à l'aide du compilateur croisé Android NDK sur Debian Linux.
Au moment d'écrire ces lignes, Android NDK r21e devrait compiler aria2 sans erreur.
Le script android-config
est un wrapper de script de configuration pour la version Android. Nous l'utilisons pour créer une version officielle d'Android. Ce script suppose que les bibliothèques suivantes ont été créées pour la compilation croisée :
c-ares
ouvressl
expatrié
zlib
libssh2
Lors de la création des bibliothèques ci-dessus, assurez-vous de désactiver la bibliothèque partagée et d'activer uniquement la bibliothèque statique. Nous allons lier ces bibliothèques de manière statique.
android-config
suppose que les variables d'environnement $ANDROID_HOME
et $NDK
sont définies.
Nous utilisons actuellement Android NDK r21e. $NDK
doit pointer vers le répertoire vers Android NDK. Les outils de construction se trouvent sous $NDK/toolchains/llvm/prebuilt/linux-x86_64/bin/
.
Toutes les bibliothèques dépendantes doivent être installées sous $ANDROID_HOME/usr/local
.
Après android-config
, exécutez make
pour compiler les sources.
Sphinx est habitué à construire la documentation. Les pages de manuel aria2 seront construites lorsque vous exécuterez make
si elles ne sont pas à jour. Vous pouvez également créer une version HTML de la page de manuel aria2 en make html
. Le manuel en version HTML est également disponible en ligne (traduction russe, traduction portugaise).
Le nom du fichier téléchargé est déterminé comme suit :
mode fichier unique
Si la clé « nom » est présente dans le fichier .torrent, le nom du fichier est la valeur de la clé « nom ». Sinon, le nom du fichier est le nom de base du fichier .torrent suivi de « .file ». Par exemple, le fichier .torrent est « test.torrent », alors le nom du fichier est « test.torrent.file ». Le répertoire dans lequel stocker le fichier téléchargé peut être spécifié par l'option -d.
mode multi-fichiers
La structure complète répertoire/fichier mentionnée dans le fichier .torrent est créée. Le répertoire dans lequel stocker le répertoire supérieur des fichiers téléchargés peut être spécifié par l'option -d.
Avant le début du téléchargement, une structure de répertoires complète est créée si nécessaire. Par défaut, aria2 ouvre au maximum 100 fichiers mentionnés dans le fichier .torrent, et écrit et lit directement ces fichiers. Le nombre de fichiers à ouvrir simultanément peut être contrôlé par l'option --bt-max-open-files
.
aria2 prend en charge le DHT compatible avec la ligne principale. Par défaut, la table de routage pour IPv4 DHT est enregistrée dans $XDG_CACHE_HOME/aria2/dht.dat
et la table de routage pour IPv6 DHT est enregistrée dans $XDG_CACHE_HOME/aria2/dht6.dat
sauf si des fichiers existent dans $HOME/.aria2/dht.dat
ou $HOME/.aria2/dht6.dat
. aria2 utilise le même numéro de port pour écouter le DHT IPv4 et IPv6.
La prise en charge du tracker UDP est activée lorsque IPv4 DHT est activé. Le numéro de port du tracker UDP est partagé avec DHT. Utilisez l'option --dht-listen-port
pour modifier le numéro de port.
L'option -o
est utilisée pour changer le nom de fichier du fichier .torrent lui-même, et non le nom d'un fichier dans le fichier .torrent. À cette fin, utilisez plutôt l’option --index-out
.
Les numéros de port utilisés par aria2 sont 6881-6999 pour TCP et UDP.
aria2 ne configure pas automatiquement la redirection de port. Veuillez configurer votre routeur ou pare-feu manuellement.
Le nombre maximum de pairs est de 55. Cette limite peut être dépassée lorsque le taux de téléchargement est faible. Ce taux de téléchargement peut être ajusté à l'aide de l'option --bt-request-peer-speed-limit
.
Depuis la version 0.10.0, aria2 cesse d'envoyer des messages de requête une fois le téléchargement sélectif terminé.
L'implémentation actuelle prend en charge HTTP(S)/FTP/SFTP/BitTorrent. Les autres protocoles P2P sont ignorés. Les documents Metalink4 (RFC 5854) et Metalink version 3.0 sont pris en charge.
Pour la vérification de la somme de contrôle, md5, sha-1, sha-224, sha-256, sha-384 et sha-512 sont pris en charge. Si plusieurs algorithmes de hachage sont fournis, aria2 en utilise un plus puissant. Si la vérification de la somme de contrôle du fichier entier échoue, aria2 ne réessaye pas le téléchargement et se termine simplement avec un code retour différent de zéro.
Les préférences utilisateur prises en charge sont la version, la langue, l'emplacement, le protocole et le système d'exploitation.
Si des sommes de contrôle de morceaux sont fournies dans le fichier Metalink, aria2 valide automatiquement les morceaux de données pendant le téléchargement. Ce comportement peut être désactivé par une option de ligne de commande.
Si une signature est incluse dans un fichier Metalink, aria2 l'enregistre sous forme de fichier une fois le téléchargement terminé. Le nom du fichier est le nom du fichier de téléchargement + ".sig". Si le même fichier existe déjà, le fichier de signature n'est pas enregistré.
Dans Metalink4, un torrent multi-fichiers pouvait apparaître dans l'élément metalink:metaurl. Étant donné qu'aria2 ne peut pas télécharger 2 mêmes torrents en même temps, aria2 regroupe les fichiers dans l'élément metalink:file qui a la même métaurl BitTorrent et les télécharge à partir d'un seul essaim BitTorrent. Il s'agit essentiellement d'un téléchargement torrent multi-fichiers avec sélection de fichiers, de sorte que les fichiers adjacents qui ne sont pas dans le document Metalink mais qui partagent le même morceau avec le fichier sélectionné sont également créés.
Si l'URI relatif est spécifié dans l'élément metalink:url ou metalink:metaurl, aria2 utilise l'URI du fichier Metalink comme URI de base pour résoudre l'URI relatif. Si un URI relatif est trouvé dans le fichier Metalink lu à partir du disque local, aria2 utilise la valeur de l'option --metalink-base-uri
comme URI de base. Si cette option n'est pas spécifiée, l'URI relatif sera ignoré.
L'implémentation actuelle utilise uniquement des liens rel=duplicate. aria2 comprend les champs d'en-tête Digest et vérifie s'ils correspondent à la valeur Digest provenant d'autres sources. Si cela diffère, abandonnez la connexion. aria2 utilise également cette valeur de résumé pour effectuer la vérification de la somme de contrôle une fois le téléchargement terminé. aria2 reconnaît la valeur géographique. Pour indiquer à aria2 quel emplacement vous préférez, vous pouvez utiliser l'option --metalink-location
.
La prise en charge netrc est activée par défaut pour HTTP(S)/FTP/SFTP. Pour désactiver la prise en charge de netrc, spécifiez l'option de ligne de commande -n. Votre fichier .netrc doit avoir les autorisations correctes (600).
Le serveur WebSocket intégré à aria2 implémente la spécification définie dans la RFC 6455. La version du protocole prise en charge est la 13.
libaria2 est une bibliothèque C++ qui offre la fonctionnalité aria2 au code client. Actuellement, libaria2 n'est pas construit par défaut. Pour activer libaria2, utilisez l'option de configuration --enable-libaria2
. Par défaut, seule la bibliothèque partagée est construite. Pour créer une bibliothèque statique, utilisez également l'option de configuration --enable-static
. Consultez la documentation de libaria2 pour savoir comment utiliser l'API.
Manuel en ligne aria2
https://aria2.github.io/
PROTOCOLE DE TRANSFERT DE FICHIERS RFC 959 (FTP)
Localisateurs de ressources uniformes (URL) RFC 1738
Extensions FTP RFC 2428 pour IPv6 et NAT
Protocole de transfert hypertexte RFC 2616 -- HTTP/1.1
Extensions RFC 3659 au FTP
RFC 3986 Uniform Resource Identifier (URI) : syntaxe générique
RFC 4038 Aspects d'application de la transition IPv6
RFC 5854 Le format de description de téléchargement Metalink
RFC 6249 Metalink/HTTP : miroirs et hachages
Mécanisme de gestion de l'état HTTP RFC 6265
RFC 6266 Utilisation du champ d'en-tête Content-Disposition dans le protocole de transfert hypertexte (HTTP)
RFC 6455 Le protocole WebSocket
RFC 6555 Happy Eyeballs : succès avec les hôtes double pile
La spécification du protocole BitTorrent
BitTorrent : protocole DHT
BitTorrent : extension rapide
BitTorrent : extension de suivi IPv6
BitTorrent : extension permettant aux pairs d'envoyer des fichiers de métadonnées
BitTorrent : protocole d'extension
BitTorrent : extension de métadonnées multitracker
BitTorrent : protocole UDP Tracker pour BitTorrent et spécification du protocole BitTorrent udp-tracker.
BitTorrent : WebSeed - Amorçage HTTP/FTP (style GetRight)
BitTorrent : torrents privés
BitTorrent : Extensions BitTorrent DHT pour IPv6
BitTorrent : chiffrement du flux de messages
Kademlia : un système d'information peer-to-peer basé sur la métrique XOR