Este programa no tiene garantía. Debe utilizar este programa bajo su propia responsabilidad.
aria2 es una utilidad para descargar archivos. Los protocolos admitidos son HTTP(S), FTP, SFTP, BitTorrent y Metalink. aria2 puede descargar un archivo de múltiples fuentes/protocolos e intenta utilizar su ancho de banda de descarga máximo. Admite la descarga de un archivo desde HTTP(S)/FTP/SFTP y BitTorrent al mismo tiempo, mientras que los datos descargados desde HTTP(S)/FTP/SFTP se cargan en el enjambre de BitTorrent. Utilizando las sumas de comprobación de fragmentos de Metalink, aria2 valida automáticamente fragmentos de datos mientras descarga un archivo como BitTorrent.
La página del proyecto se encuentra en https://aria2.github.io/.
Consulte el manual en línea de aria2 (traducción al ruso, traducción al portugués) para aprender a utilizar aria2.
Aquí hay una lista de características:
Interfaz de línea de comandos
Descargar archivos a través de HTTP(S)/FTP/SFTP/BitTorrent
Descarga segmentada
Compatibilidad con Metalink versión 4 (RFC 5854) (HTTP/FTP/SFTP/BitTorrent)
Compatibilidad con Metalink versión 3.0 (HTTP/FTP/SFTP/BitTorrent)
Compatibilidad con Metalink/HTTP (RFC 6249)
Implementación HTTP/1.1
Soporte de proxy HTTP
Soporte de autenticación HTTP BÁSICA
Soporte de autenticación de proxy HTTP
Variables de entorno conocidas para proxy: http_proxy
, https_proxy
, ftp_proxy
, all_proxy
y no_proxy
HTTP gzip, soporte de codificación de contenido desinflado
Verifique el par utilizando el certificado de CA confiable proporcionado en HTTPS
Autenticación de certificado de cliente en HTTPS
Soporte de codificación de transferencia fragmentada
Cargue Cookies desde el archivo usando el formato Firefox3, Chromium/Google Chrome y el formato Mozilla/Firefox (1.x/2.x)/Netscape.
Guarde las cookies en formato Mozilla/Firefox (1.x/2.x)/Netscape.
Soporte de encabezado HTTP personalizado
Soporte de conexiones persistentes
FTP/SFTP a través de proxy HTTP
Limitación de la velocidad de descarga/subida
Extensiones BitTorrent: extensión rápida, DHT, PEX, MSE/PSE, Multi-Tracker, rastreador UDP
Semilla WEB BitTorrent. aria2 solicita un fragmento mayor que el tamaño de la pieza para reducir la sobrecarga de la solicitud. También admite solicitudes canalizadas con tamaño de pieza.
Descubrimiento de pares locales de BitTorrent
Cambiar el nombre/cambiar completamente la estructura del directorio de descargas de BitTorrent
Interfaz JSON-RPC (a través de HTTP y WebSocket)/XML-RPC
Ejecutar como un proceso demonio
Descarga selectiva en torrent/Metalink de varios archivos
Validación de suma de comprobación fragmentada en Metalink
Puede deshabilitar la descarga segmentada en Metalink
Soporte de red
Soporte de archivos de configuración
Descargue los URI que se encuentran en un archivo de texto o stdin y el directorio de destino y el nombre del archivo de salida se pueden especificar opcionalmente.
Soporte de URI parametrizado
Compatibilidad con IPv6 con Happy Eyeballs
Caché de disco para reducir la actividad del disco
Usamos 3 números para la versión aria2: MAJOR.MINOR.PATCH. Enviaremos actualizaciones MENORES el día 15 de cada mes. Podemos omitir una versión si no hemos tenido cambios desde la última versión. La congelación de funciones y documentación ocurre 10 días antes del día de lanzamiento (el quinto día del mes) para los equipos de traducción. Plantearemos un problema sobre el próximo lanzamiento ese día.
Podemos publicar versiones de PATCH entre versiones regulares si tenemos problemas de seguridad.
La versión MAYOR permanecerá en 1 por el momento.
Mantenemos el código fuente en Github: https://github.com/aria2/aria2
Para obtener el código fuente más reciente, ejecute el siguiente comando:
$ git clon https://github.com/aria2/aria2.git
Esto creará un directorio aria2 en su directorio actual y los archivos fuente se almacenarán allí.
características | dependencia |
---|---|
HTTPS | OSX o GnuTLS o OpenSSL o Windows |
SFTP | libssh2 |
BitTorrent | Ninguno. Opcional: libnettle+libgmp o libgcrypt u OpenSSL (ver nota) |
enlace metálico | libxml2 o expatriado. |
Suma de comprobación | Ninguno. Opcional: OSX o libnettle o libgcrypt u OpenSSL o Windows (ver nota) |
gzip, desinflar en HTTP | zlib |
DNS asíncrono | C-Ares |
Cookie de Firefox3/Chromium | libsqlite3 |
XML-RPC | libxml2 o expatriado. |
JSON-RPC sobre WebSocket | libnettle o libgcrypt u OpenSSL |
Nota
libxml2 tiene prioridad sobre Expat si ambas bibliotecas están instaladas. Si prefiere Expat, ejecute configure con --without-libxml2
.
Nota
En Apple OSX, se preferirá la compatibilidad con SSL/TLS a nivel del sistema operativo. Por lo tanto, no se requiere GnuTLS ni OpenSSL en esa plataforma. Si desea deshabilitar este comportamiento, ejecute configure con --without-appletls
.
GnuTLS tiene prioridad sobre OpenSSL si ambas bibliotecas están instaladas. Si prefiere OpenSSL, ejecute configure con --without-gnutls
--with-openssl
.
En Windows, hay una implementación SSL disponible que se basa en las capacidades SSL nativas de Windows (Schannel) y será la preferida. Por lo tanto, no se requiere GnuTLS ni OpenSSL en esa plataforma. Si desea deshabilitar este comportamiento, ejecute configure con --without-wintls
.
Nota
En Apple OSX, se preferirá la compatibilidad con la suma de comprobación a nivel del sistema operativo, a menos que aria2 esté configurado con --without-appletls
.
libnettle tiene prioridad sobre libgcrypt si ambas bibliotecas están instaladas. Si prefiere libgcrypt, ejecute configure con --without-libnettle --with-libgcrypt
. Si se selecciona OpenSSL en lugar de GnuTLS, no se utilizarán ni libnettle ni libgcrypt.
Si no se instala ninguna de las dependencias opcionales, se utilizará una implementación interna que solo admita md5 y sha1.
En Windows, hay una implementación SSL disponible que se basa en las capacidades nativas de Windows y será la preferida, a menos que aria2 esté configurado con --without-wintls
.
Un usuario puede tener una de las siguientes configuraciones para SSL y bibliotecas criptográficas:
AbiertoSSL
GnuTLS + libgcrypt
GnuTLS + libnettle
Apple TLS (solo OSX)
Windows TLS (solo Windows)
Puede deshabilitar la compatibilidad con BitTorrent y Metalink proporcionando --disable-bittorrent
y --disable-metalink
al script de configuración respectivamente.
Para habilitar la compatibilidad con DNS asíncrono, necesita c-ares.
c-ares: http://c-ares.haxx.se/
aria2 está escrito principalmente en C++. Inicialmente, fue escrito basándose en las características estándar de C++98/C++03. Ahora estamos migrando aria2 al estándar C++11. El código fuente actual requiere un compilador compatible con C++11. Para compiladores conocidos, como g++ y clang, se debe admitir el indicador -std=c++11
o -std=c++0x
.
Para compilar aria2 a partir del paquete fuente, necesita los siguientes paquetes de desarrollo (el nombre del paquete puede variar según la distribución que utilice):
libgnutls-dev (Requerido para HTTPS, BitTorrent, compatibilidad con suma de comprobación)
nettle-dev (Requerido para BitTorrent, soporte de suma de comprobación)
libgmp-dev (Requerido para BitTorrent)
libssh2-1-dev (Requerido para soporte SFTP)
libc-ares-dev (Requerido para soporte de DNS asíncrono)
libxml2-dev (Requerido para soporte Metalink)
zlib1g-dev (Requerido para gzip, soporte de decodificación deflate en HTTP)
libsqlite3-dev (Requerido para la compatibilidad con cookies de Firefox3/Chromium)
pkg-config (Requerido para detectar bibliotecas instaladas)
Puedes usar libgcrypt-dev en lugar de nettle-dev y libgmp-dev:
libgpg-error-dev (Requerido para BitTorrent, soporte de suma de comprobación)
libgcrypt-dev (Requerido para BitTorrent, soporte de suma de comprobación)
Puede utilizar libssl-dev en lugar de libgnutls-dev, nettle-dev, libgmp-dev, libgpg-error-dev y libgcrypt-dev:
libssl-dev (requerido para HTTPS, BitTorrent, compatibilidad con suma de comprobación)
Puedes usar libexpat1-dev en lugar de libxml2-dev:
libexpat1-dev (Requerido para soporte Metalink)
En Fedora necesitas los siguientes paquetes: gcc, gcc-c++, kernel-devel, libgcrypt-devel, libxml2-devel, openssl-devel, gettext-devel, cppunit
Si descargó el código fuente de un repositorio de git, debe instalar los siguientes paquetes para obtener macros de autoconf:
libxml2-dev
libcppunit-dev
configuración automática
autofabricación
autotools-dev
punto automático
libherramienta
Y ejecute el siguiente comando para generar el script de configuración y otros archivos necesarios para compilar el programa:
$ autorconf -i
Además, necesita Sphinx para crear la página de manual.
Si está compilando aria2 para Mac OS X, eche un vistazo al archivo makerelease-osx.mk GNU Make.
La forma más rápida de compilar aria2 es ejecutar primero el script de configuración:
$ ./configurar
Para construir aria2 vinculado estáticamente, use la opción de línea de comando ARIA2_STATIC=yes
:
$ ./configurar ARIA2_STATIC=sí
Una vez realizada la configuración, ejecute make
para compilar el programa:
$ hacer
Consulte Compilación cruzada de binarios de Windows para crear un binario de Windows. Consulte Compilación cruzada de binarios de Android para crear un binario de Android.
El script de configuración verifica las bibliotecas disponibles y habilita tantas funciones como sea posible, excepto las funciones experimentales que no están habilitadas de forma predeterminada.
Desde 1.1.0, aria2 verifica el certificado de los servidores HTTPS de forma predeterminada. Si compila con OpenSSL o la versión reciente de GnuTLS que tiene la función gnutls_certificate_set_x509_system_trust()
y la biblioteca está configurada correctamente para ubicar el almacén de certificados de CA de todo el sistema, aria2 cargará automáticamente esos certificados al inicio. Si no es el caso, recomiendo proporcionar la ruta al archivo del paquete de CA. Por ejemplo, en Debian la ruta al archivo del paquete CA es '/etc/ssl/certs/ca-certificates.crt' (en el paquete ca-certificates). Esto puede variar dependiendo de su distribución. Puedes darle para configurar el script usando --with-ca-bundle option
:
$ ./configure --with-ca-bundle='/etc/ssl/certs/ca-certificates.crt' $ hacer
Sin la opción --with-ca-bundle
, encontrará el error al acceder a los servidores HTTPS porque el certificado no se puede verificar sin el paquete CA. En tal caso, puede especificar el archivo del paquete CA utilizando la opción --ca-certificate
de aria2. Si no tiene instalado el archivo del paquete CA, el último recurso es deshabilitar la validación del certificado usando --check-certificate=false
.
El uso de la implementación nativa de OSX (AppleTLS) y/o Windows (WinTLS) utilizará automáticamente el almacén de certificados del sistema, por lo que --with-ca-bundle
no es necesario y se ignorará al utilizar estas implementaciones.
De forma predeterminada, el archivo bash_completion llamado aria2c
se instala en el directorio $prefix/share/doc/aria2/bash_completion
. Para cambiar el directorio de instalación del archivo, use la opción --with-bashcompletiondir
.
Después de make
, el ejecutable se encuentra en src/aria2c
.
aria2 usa CppUnit para pruebas unitarias automatizadas. Para ejecutar la prueba unitaria:
$ hacer cheque
En esta sección, describimos cómo construir un binario de Windows usando un compilador cruzado mingw-w64 (http://mingw-w64.org/doku.php) en Debian Linux. Es posible que MinGW (http://www.mingw.org/) no pueda construir aria2.
La forma más sencilla de crear binarios de Windows es utilizar Dockerfile.mingw. Vea Dockerfile.mingw sobre cómo construir un binario. Si no puede utilizar Dockerfile, continúe leyendo los siguientes párrafos.
Básicamente, después de compilar e instalar bibliotecas dependientes, puede realizar una compilación cruzada simplemente pasando la opción --host
apropiada y especificando las variables CPPFLAGS
, LDFLAGS
y PKG_CONFIG_LIBDIR
para configurar. Para mayor comodidad y para reducir nuestro propio costo de desarrollo, proporcionamos una manera más fácil de configurar los ajustes de compilación.
El script mingw-config
es un contenedor de script de configuración para mingw-w64. Lo usamos para crear una compilación oficial de Windows. Este script asume que las siguientes bibliotecas se han creado para compilación cruzada:
c-ares
expatriado
sqlite3
zlib
libssh2
unidad central
Algunas variables de entorno se pueden ajustar para cambiar la configuración de compilación:
HOST
Compilación cruzada para crear programas que se ejecuten en HOST
. El valor predeterminado es i686-w64-mingw32
. Para crear un binario de 64 bits, especifique x86_64-w64-mingw32
.
PREFIX
Prefijo del directorio donde están instaladas las bibliotecas dependientes. El valor predeterminado es /usr/local/$HOST
. -I$PREFIX/include
se agregará a CPPFLAGS
. -L$PREFIX/lib
se agregará a LDFLAGS
. $PREFIX/lib/pkgconfig
se establecerá en PKG_CONFIG_LIBDIR
.
Por ejemplo, para construir un binario de 64 bits, haga esto:
$ HOST=x86_64-w64-mingw32 ./mingw-config
Si desea libaria2 dll con --enable-libaria2
, no use ARIA2_STATIC=yes
y prepare la versión DLL de las bibliotecas externas.
En esta sección, describimos cómo compilar un binario de Android utilizando el compilador cruzado NDK de Android en Debian Linux.
Al momento de escribir este artículo, Android NDK r21e debería compilar aria2 sin errores.
El script android-config
es un contenedor de script de configuración para la compilación de Android. Lo usamos para crear una compilación oficial de Android. Este script asume que las siguientes bibliotecas se han creado para compilación cruzada:
c-ares
abresl
expatriado
zlib
libssh2
Al crear las bibliotecas anteriores, asegúrese de deshabilitar la biblioteca compartida y habilitar solo la biblioteca estática. Vamos a vincular esas bibliotecas estáticamente.
android-config
supone que las variables de entorno $ANDROID_HOME
y $NDK
están definidas.
Actualmente utilizamos Android NDK r21e. $NDK
debería apuntar al directorio del NDK de Android. Las herramientas de compilación se encontrarán en $NDK/toolchains/llvm/prebuilt/linux-x86_64/bin/
.
Todas las bibliotecas dependientes deben instalarse en $ANDROID_HOME/usr/local
.
Después de android-config
, ejecute make
para compilar las fuentes.
Sphinx está acostumbrado a construir la documentación. Las páginas de manual de aria2 se crearán cuando ejecute make
si no están actualizadas. También puede crear una versión HTML de la página de manual de aria2 mediante make html
. El manual en versión HTML también está disponible en línea (traducción al ruso, traducción al portugués).
El nombre del archivo descargado se determina de la siguiente manera:
modo de archivo único
Si la clave "nombre" está presente en el archivo .torrent, el nombre del archivo es el valor de la clave "nombre". De lo contrario, el nombre del archivo es el nombre base del archivo .torrent añadido por ".file". Por ejemplo, el archivo .torrent es "test.torrent", luego el nombre del archivo es "test.torrent.file". El directorio para almacenar el archivo descargado se puede especificar con la opción -d.
modo de múltiples archivos
Se crea la estructura completa de directorio/archivo mencionada en el archivo .torrent. El directorio para almacenar el directorio superior de archivos descargados se puede especificar con la opción -d.
Antes de que comience la descarga, se crea una estructura de directorio completa si es necesario. De forma predeterminada, aria2 abre como máximo 100 archivos mencionados en el archivo .torrent y escribe y lee directamente en estos archivos. La cantidad de archivos que se abrirán simultáneamente se puede controlar con la opción --bt-max-open-files
.
aria2 admite DHT compatible con la línea principal. De forma predeterminada, la tabla de enrutamiento para IPv4 DHT se guarda en $XDG_CACHE_HOME/aria2/dht.dat
y la tabla de enrutamiento para IPv6 DHT se guarda en $XDG_CACHE_HOME/aria2/dht6.dat
a menos que existan archivos en $HOME/.aria2/dht.dat
o $HOME/.aria2/dht6.dat
. aria2 utiliza el mismo número de puerto para escuchar tanto IPv4 como IPv6 DHT.
La compatibilidad con el rastreador UDP está habilitada cuando IPv4 DHT está habilitado. El número de puerto del rastreador UDP se comparte con DHT. Utilice la opción --dht-listen-port
para cambiar el número de puerto.
La opción -o
se utiliza para cambiar el nombre del archivo .torrent en sí, no el nombre de un archivo en el archivo .torrent. Para ello, utilice la opción --index-out
en su lugar.
Los números de puerto que utiliza aria2 de forma predeterminada son 6881-6999 para TCP y UDP.
aria2 no configura el reenvío de puertos automáticamente. Configure su enrutador o firewall manualmente.
El número máximo de pares es 55. Este límite puede excederse cuando la velocidad de descarga es baja. Esta velocidad de descarga se puede ajustar usando la opción --bt-request-peer-speed-limit
.
A partir de la versión 0.10.0, aria2 deja de enviar mensajes de solicitud una vez que se completa la descarga selectiva.
La implementación actual admite HTTP(S)/FTP/SFTP/BitTorrent. Los demás protocolos P2P se ignoran. Se admiten documentos Metalink4 (RFC 5854) y Metalink versión 3.0.
Para la verificación de la suma de comprobación, se admiten md5, sha-1, sha-224, sha-256, sha-384 y sha-512. Si se proporcionan varios algoritmos hash, aria2 utiliza uno más potente. Si falla la verificación de la suma de comprobación del archivo completo, aria2 no vuelve a intentar la descarga y simplemente sale con un código de retorno distinto de cero.
Las preferencias de usuario admitidas son versión, idioma, ubicación, protocolo y sistema operativo.
Si se proporcionan sumas de verificación de fragmentos en el archivo Metalink, aria2 valida automáticamente fragmentos de datos durante la descarga. Este comportamiento se puede desactivar mediante una opción de línea de comandos.
Si se incluye una firma en un archivo Metalink, aria2 la guarda como un archivo después de completar la descarga. El nombre del archivo es el nombre del archivo de descarga + ".sig". Si el mismo archivo ya existe, el archivo de firma no se guarda.
En Metalink4, un torrent de varios archivos podría aparecer en el elemento metalink:metaurl. Dado que aria2 no puede descargar 2 torrents iguales al mismo tiempo, aria2 agrupa archivos en el elemento metalink:file que tiene la misma metaurl de BitTorrent y los descarga desde un único enjambre de BitTorrent. Esta es básicamente una descarga de torrent de varios archivos con selección de archivos, por lo que también se crean los archivos adyacentes que no están en el documento Metalink pero que comparten la misma pieza con el archivo seleccionado.
Si se especifica un URI relativo en el elemento metalink:url o metalink:metaurl, aria2 utiliza el URI del archivo Metalink como URI base para resolver el URI relativo. Si se encuentra un URI relativo en el archivo Metalink que se lee desde el disco local, aria2 usa el valor de la opción --metalink-base-uri
como URI base. Si no se especifica esta opción, se ignorará el URI relativo.
La implementación actual solo utiliza enlaces rel=duplicados. aria2 comprende los campos del encabezado del resumen y verifica si coincide con el valor del resumen de otras fuentes. Si difiere, corte la conexión. aria2 también usa este valor de resumen para realizar la verificación de la suma de verificación una vez finalizada la descarga. aria2 reconoce el valor geográfico. Para decirle a aria2 qué ubicación prefiere, puede usar la opción --metalink-location
.
La compatibilidad con netrc está habilitada de forma predeterminada para HTTP(S)/FTP/SFTP. Para deshabilitar la compatibilidad con netrc, especifique la opción de línea de comando -n. Su archivo .netrc debe tener los permisos correctos (600).
El servidor WebSocket integrado en aria2 implementa la especificación definida en RFC 6455. La versión del protocolo admitido es 13.
libaria2 es una biblioteca C++ que ofrece funcionalidad aria2 al código del cliente. Actualmente, libaria2 no está compilado de forma predeterminada. Para habilitar libaria2, use la opción de configuración --enable-libaria2
. De forma predeterminada, solo se crea la biblioteca compartida. Para crear una biblioteca estática, utilice también la opción de configuración --enable-static
. Consulte la documentación de libaria2 para saber cómo utilizar la API.
Manual en línea de aria2
https://aria2.github.io/
RFC 959 PROTOCOLO DE TRANSFERENCIA DE ARCHIVOS (FTP)
RFC 1738 Localizadores uniformes de recursos (URL)
Extensiones FTP RFC 2428 para IPv6 y NAT
Protocolo de transferencia de hipertexto RFC 2616: HTTP/1.1
RFC 3659 Extensiones a FTP
RFC 3986 Identificador uniforme de recursos (URI): sintaxis genérica
RFC 4038 Aspectos de aplicación de la transición a IPv6
RFC 5854 Formato de descripción de descarga de Metalink
RFC 6249 Metalink/HTTP: espejos y hashes
Mecanismo de gestión de estado HTTP RFC 6265
RFC 6266 Uso del campo de encabezado de disposición de contenido en el protocolo de transferencia de hipertexto (HTTP)
RFC 6455 El protocolo WebSocket
RFC 6555 Happy Eyeballs: éxito con hosts de doble pila
La especificación del protocolo BitTorrent
BitTorrent: protocolo DHT
BitTorrent: extensión rápida
BitTorrent: Extensión de seguimiento de IPv6
BitTorrent: extensión para que pares envíen archivos de metadatos
BitTorrent: Protocolo de extensión
BitTorrent: extensión de metadatos multipista
BitTorrent: Protocolo UDP Tracker para BitTorrent y especificación del protocolo BitTorrent udp-tracker.
BitTorrent: WebSeed - Semilla HTTP/FTP (estilo GetRight)
BitTorrent: Torrentes privados
BitTorrent: Extensiones BitTorrent DHT para IPv6
BitTorrent: cifrado de flujo de mensajes
Kademlia: un sistema de información peer-to-peer basado en la métrica XOR