Este programa não vem com garantia. Você deve usar este programa por sua própria conta e risco.
aria2 é um utilitário para baixar arquivos. Os protocolos suportados são HTTP(S), FTP, SFTP, BitTorrent e Metalink. aria2 pode baixar um arquivo de múltiplas fontes/protocolos e tenta utilizar sua largura de banda máxima de download. Ele suporta o download de um arquivo de HTTP(S)/FTP/SFTP e BitTorrent ao mesmo tempo, enquanto os dados baixados de HTTP(S)/FTP/SFTP são carregados no enxame BitTorrent. Usando os checksums de pedaços do Metalink, o aria2 valida automaticamente pedaços de dados enquanto baixa um arquivo como o BitTorrent.
A página do projeto está localizada em https://aria2.github.io/.
Veja o Manual Online do aria2 (tradução para russo, tradução para português) para aprender como usar o aria2.
Aqui está uma lista de recursos:
Interface de linha de comando
Baixe arquivos via HTTP(S)/FTP/SFTP/BitTorrent
Download segmentado
Suporte Metalink versão 4 (RFC 5854) (HTTP/FTP/SFTP/BitTorrent)
Suporte Metalink versão 3.0 (HTTP/FTP/SFTP/BitTorrent)
Suporte Metalink/HTTP (RFC 6249)
Implementação HTTP/1.1
Suporte a proxy HTTP
Suporte para autenticação HTTP BASIC
Suporte para autenticação de proxy HTTP
Variáveis de ambiente conhecidas para proxy: http_proxy
, https_proxy
, ftp_proxy
, all_proxy
e no_proxy
HTTP gzip, suporte à codificação de conteúdo desinflado
Verifique o peer usando o certificado CA confiável fornecido em HTTPS
Autenticação de certificado de cliente em HTTPS
Suporte à codificação de transferência fragmentada
Carregue cookies do arquivo usando o formato Firefox3, Chromium/Google Chrome e o formato Mozilla/Firefox (1.x/2.x)/Netscape.
Salve Cookies no formato Mozilla/Firefox (1.x/2.x)/Netscape.
Suporte a cabeçalho HTTP personalizado
Suporte para conexões persistentes
FTP/SFTP através de proxy HTTP
Limitação de velocidade de download/upload
Extensões BitTorrent: extensão rápida, DHT, PEX, MSE/PSE, Multi-Tracker, rastreador UDP
Semeadura WEB BitTorrent. aria2 solicita um pedaço maior do que o tamanho do pedaço para reduzir a sobrecarga da solicitação. Ele também oferece suporte a solicitações em pipeline com tamanho de peça.
Descoberta de pares locais BitTorrent
Renomear/alterar completamente a estrutura de diretórios dos downloads do BitTorrent
Interface JSON-RPC (sobre HTTP e WebSocket)/XML-RPC
Executar como um processo daemon
Download seletivo em torrent/Metalink de vários arquivos
Validação de soma de verificação de pedaços no Metalink
Pode desativar o download segmentado no Metalink
Suporte Netrc
Suporte a arquivo de configuração
Baixar URIs encontrados em um arquivo de texto ou stdin e o diretório de destino e o nome do arquivo de saída podem ser especificados opcionalmente
Suporte a URI parametrizado
Suporte IPv6 com Happy Eyeballs
Cache de disco para reduzir a atividade do disco
Usamos 3 números para a versão aria2: MAJOR.MINOR.PATCH. Enviaremos atualizações PEQUENAS no dia 15 de cada mês. Podemos pular um lançamento se não houver alterações desde o último lançamento. O congelamento de recursos e documentação acontece 10 dias antes do dia do lançamento (5º dia do mês) para as equipes de tradução. Levantaremos uma questão sobre o próximo lançamento naquele dia.
Podemos lançar versões PATCH entre versões regulares se tivermos problemas de segurança.
A versão MAJOR permanecerá em 1 por enquanto.
Mantemos o código fonte no Github: https://github.com/aria2/aria2
Para obter o código-fonte mais recente, execute o seguinte comando:
$ git clone https://github.com/aria2/aria2.git
Isso criará um diretório aria2 em seu diretório atual e os arquivos de origem serão armazenados lá.
características | dependência |
---|---|
HTTPS | OSX ou GnuTLS ou OpenSSL ou Windows |
SFTP | libssh2 |
BitTorrent | Nenhum. Opcional: libnettle+libgmp ou libgcrypt ou OpenSSL (ver nota) |
Metalink | libxml2 ou Expat. |
Soma de verificação | Nenhum. Opcional: OSX ou libnettle ou libgcrypt ou OpenSSL ou Windows (ver nota) |
gzip, desinflar em HTTP | zlib |
DNS assíncrono | C-Ares |
Cookie Firefox3/Chromium | libsqlite3 |
XML-RPC | libxml2 ou Expat. |
JSON-RPC sobre WebSocket | libnettle ou libgcrypt ou OpenSSL |
Observação
libxml2 tem precedência sobre Expat se ambas as bibliotecas estiverem instaladas. Se você preferir Expat, execute configure com --without-libxml2
.
Observação
No Apple OSX, o suporte SSL/TLS no nível do sistema operacional será preferido. Portanto, nem o GnuTLS nem o OpenSSL são necessários nessa plataforma. Se desejar desabilitar esse comportamento, execute configure com --without-appletls
.
O GnuTLS tem precedência sobre o OpenSSL se ambas as bibliotecas estiverem instaladas. Se você preferir OpenSSL, execute configure com --without-gnutls
--with-openssl
.
No Windows, há uma implementação SSL disponível baseada nos recursos SSL nativos do Windows (Schannel) e ela será preferida. Portanto, nem o GnuTLS nem o OpenSSL são necessários nessa plataforma. Se desejar desabilitar esse comportamento, execute configure com --without-wintls
.
Observação
No Apple OSX, o suporte à soma de verificação no nível do sistema operacional será preferido, a menos que aria2 esteja configurado com --without-appletls
.
libnettle tem precedência sobre libgcrypt se ambas as bibliotecas estiverem instaladas. Se você preferir libgcrypt, execute configure com --without-libnettle --with-libgcrypt
. Se OpenSSL for selecionado em vez de GnuTLS, nem libnettle nem libgcrypt serão usados.
Se nenhuma das dependências opcionais estiver instalada, será usada uma implementação interna que suporte apenas md5 e sha1.
No Windows, há uma implementação SSL disponível baseada nos recursos nativos do Windows e será preferida, a menos que aria2 esteja configurado com --without-wintls
.
Um usuário pode ter uma das seguintes configurações para bibliotecas SSL e criptográficas:
OpenSSL
GnuTLS + libgcrypt
GnuTLS + libnettle
Apple TLS (somente OSX)
TLS do Windows (somente Windows)
Você pode desabilitar o suporte a BitTorrent e Metalink fornecendo --disable-bittorrent
e --disable-metalink
para o script de configuração, respectivamente.
Para ativar o suporte a DNS assíncrono, você precisa de c-ares.
c-ares: http://c-ares.haxx.se/
aria2 é escrito principalmente em C++. Inicialmente, ele foi escrito com base nos recursos padrão C++98/C++03. Agora estamos migrando o aria2 para o padrão C++11. O código-fonte atual requer um compilador compatível com C++ 11. Para compiladores conhecidos, como g++ e clang, o sinalizador -std=c++11
ou -std=c++0x
deve ser suportado.
Para construir o aria2 a partir do pacote fonte, você precisa dos seguintes pacotes de desenvolvimento (o nome do pacote pode variar dependendo da distribuição que você usa):
libgnutls-dev (obrigatório para suporte a HTTPS, BitTorrent, Checksum)
urtiga-dev (necessário para BitTorrent, suporte Checksum)
libgmp-dev (obrigatório para BitTorrent)
libssh2-1-dev (requerido para suporte SFTP)
libc-ares-dev (Obrigatório para suporte DNS assíncrono)
libxml2-dev (necessário para suporte Metalink)
zlib1g-dev (Obrigatório para gzip, desinflate suporte de decodificação em HTTP)
libsqlite3-dev (obrigatório para suporte a cookies do Firefox3/Chromium)
pkg-config (necessário para detectar bibliotecas instaladas)
Você pode usar libgcrypt-dev em vez de urtiga-dev e libgmp-dev:
libgpg-error-dev (Obrigatório para BitTorrent, suporte Checksum)
libgcrypt-dev (necessário para BitTorrent, suporte Checksum)
Você pode usar libssl-dev em vez de libgnutls-dev, urtiga-dev, libgmp-dev, libgpg-error-dev e libgcrypt-dev:
libssl-dev (obrigatório para suporte a HTTPS, BitTorrent, Checksum)
Você pode usar libexpat1-dev em vez de libxml2-dev:
libexpat1-dev (necessário para suporte Metalink)
No Fedora você precisa dos seguintes pacotes: gcc, gcc-c++, kernel-devel, libgcrypt-devel, libxml2-devel, openssl-devel, gettext-devel, cppunit
Se você baixou o código-fonte de um repositório git, será necessário instalar os seguintes pacotes para obter macros autoconf:
libxml2-dev
libcppunit-dev
autoconf
automake
autotools-dev
ponto automático
ferramentalib
E execute o seguinte comando para gerar o script de configuração e outros arquivos necessários para construir o programa:
$ autoreconf -i
Além disso, você precisa do Sphinx para construir a página de manual.
Se você estiver construindo o aria2 para Mac OS X, dê uma olhada no makefile makerelease-osx.mk GNU Make.
A maneira mais rápida de construir o aria2 é primeiro executar o script configure:
$ ./configure
Para construir aria2 vinculado estaticamente, use a opção de linha de comando ARIA2_STATIC=yes
:
$ ./configure ARIA2_STATIC=sim
Após a configuração ser concluída, execute make
para compilar o programa:
$ fazer
Consulte Compilação cruzada de binário do Windows para criar um binário do Windows. Consulte Compilação cruzada do binário do Android para criar um binário do Android.
O script configure verifica as bibliotecas disponíveis e habilita tantos recursos quanto possível, exceto os recursos experimentais não habilitados por padrão.
Desde 1.1.0, aria2 verifica o certificado dos servidores HTTPS por padrão. Se você construir com OpenSSL ou a versão recente do GnuTLS que possui a função gnutls_certificate_set_x509_system_trust()
e a biblioteca estiver configurada corretamente para localizar o armazenamento de certificados CA em todo o sistema, o aria2 carregará automaticamente esses certificados na inicialização. Se não for o caso, recomendo fornecer o caminho para o arquivo do pacote CA. Por exemplo, no Debian, o caminho para o arquivo do pacote CA é '/etc/ssl/certs/ca-certificates.crt' (no pacote ca-certificates). Isso pode variar dependendo da sua distribuição. Você pode configurá-lo para configurar o script usando --with-ca-bundle option
:
$ ./configure --with-ca-bundle='/etc/ssl/certs/ca-certificates.crt' $ fazer
Sem a opção --with-ca-bundle
, você encontrará o erro ao acessar servidores HTTPS porque o certificado não pode ser verificado sem o pacote CA. Nesse caso, você pode especificar o arquivo do pacote CA usando a opção --ca-certificate
do aria2. Se você não tiver o arquivo do pacote CA instalado, o último recurso é desabilitar a validação do certificado usando --check-certificate=false
.
Usar a implementação nativa do OSX (AppleTLS) e/ou Windows (WinTLS) usará automaticamente o armazenamento de certificados do sistema, portanto --with-ca-bundle
não é necessário e será ignorado ao usar essas implementações.
Por padrão, o arquivo bash_completion denominado aria2c
é instalado no diretório $prefix/share/doc/aria2/bash_completion
. Para alterar o diretório de instalação do arquivo, use a opção --with-bashcompletiondir
.
Após um make
, o executável está localizado em src/aria2c
.
aria2 usa CppUnit para testes unitários automatizados. Para executar o teste de unidade:
$ fazer cheque
Nesta seção, descrevemos como construir um binário do Windows usando um compilador cruzado mingw-w64 (http://mingw-w64.org/doku.php) no Debian Linux. O MinGW (http://www.mingw.org/) pode não ser capaz de construir o aria2.
A maneira mais fácil de construir o binário do Windows é usando Dockerfile.mingw. Consulte Dockerfile.mingw como construir um binário. Se você não puder usar o Dockerfile, continue lendo os parágrafos a seguir.
Basicamente, depois de compilar e instalar bibliotecas dependentes, você pode fazer a compilação cruzada apenas passando a opção --host
apropriada e especificando as variáveis CPPFLAGS
, LDFLAGS
e PKG_CONFIG_LIBDIR
para configurar. Por conveniência e para reduzir nosso próprio custo de desenvolvimento, oferecemos uma maneira mais fácil de definir as configurações de compilação.
O script mingw-config
é um wrapper de script de configuração para mingw-w64. Nós o usamos para criar a versão oficial do Windows. Este script pressupõe que as seguintes bibliotecas foram construídas para compilação cruzada:
c-ares
expatriado
sqlite3
zlib
libssh2
unidade de cpp
Algumas variáveis de ambiente podem ser ajustadas para alterar as configurações de compilação:
HOST
compilação cruzada para construir programas para rodar em HOST
. O padrão é i686-w64-mingw32
. Para construir um binário de 64 bits, especifique x86_64-w64-mingw32
.
PREFIX
Prefixo para o diretório onde as bibliotecas dependentes estão instaladas. O padrão é /usr/local/$HOST
. -I$PREFIX/include
será adicionado ao CPPFLAGS
. -L$PREFIX/lib
será adicionado a LDFLAGS
. $PREFIX/lib/pkgconfig
será definido como PKG_CONFIG_LIBDIR
.
Por exemplo, para construir um binário de 64 bits, faça o seguinte:
$ HOST=x86_64-w64-mingw32./mingw-config
Se você quiser libaria2 dll com --enable-libaria2
, então não use ARIA2_STATIC=yes
e prepare a versão DLL de bibliotecas externas.
Nesta seção, descrevemos como construir o binário Android usando o compilador cruzado Android NDK no Debian Linux.
No momento em que este artigo foi escrito, o Android NDK r21e deveria compilar o aria2 sem erros.
O script android-config
é um wrapper de script de configuração para construção do Android. Nós o usamos para criar uma versão oficial do Android. Este script pressupõe que as seguintes bibliotecas foram construídas para compilação cruzada:
c-ares
abressl
expatriado
zlib
libssh2
Ao construir as bibliotecas acima, certifique-se de desabilitar a biblioteca compartilhada e habilitar apenas a biblioteca estática. Vamos vincular essas bibliotecas estaticamente.
android-config
assume que as variáveis de ambiente $ANDROID_HOME
e $NDK
estão definidas.
Atualmente usamos Android NDK r21e. $NDK
deve apontar para o diretório do Android NDK. As ferramentas de construção serão encontradas em $NDK/toolchains/llvm/prebuilt/linux-x86_64/bin/
.
Todas as bibliotecas dependentes devem ser instaladas em $ANDROID_HOME/usr/local
.
Após android-config
, execute make
para compilar os fontes.
O Sphinx está acostumado a construir a documentação. As páginas man do aria2 serão construídas quando você executar make
se não estiverem atualizadas. Você também pode construir uma versão HTML da página man do aria2 por make html
. O manual da versão HTML também está disponível online (tradução para russo, tradução para português).
O nome do arquivo baixado é determinado da seguinte forma:
modo de arquivo único
Se a chave “nome” estiver presente no arquivo .torrent, o nome do arquivo será o valor da chave “nome”. Caso contrário, o nome do arquivo será o nome base do arquivo .torrent anexado por ".file". Por exemplo, o arquivo .torrent é "test.torrent" e o nome do arquivo é "test.torrent.file". O diretório para armazenar o arquivo baixado pode ser especificado pela opção -d.
modo multi-arquivo
A estrutura completa de diretório/arquivo mencionada no arquivo .torrent é criada. O diretório para armazenar o diretório superior dos arquivos baixados pode ser especificado pela opção -d.
Antes do início do download, uma estrutura de diretórios completa é criada, se necessário. Por padrão, aria2 abre no máximo 100 arquivos mencionados no arquivo .torrent e grava e lê diretamente nesses arquivos. O número de arquivos a serem abertos simultaneamente pode ser controlado pela opção --bt-max-open-files
.
aria2 suporta DHT compatível com linha principal. Por padrão, a tabela de roteamento para DHT IPv4 é salva em $XDG_CACHE_HOME/aria2/dht.dat
e a tabela de roteamento para DHT IPv6 é salva em $XDG_CACHE_HOME/aria2/dht6.dat
, a menos que existam arquivos em $HOME/.aria2/dht.dat
ou $HOME/.aria2/dht6.dat
. aria2 usa o mesmo número de porta para escutar DHT IPv4 e IPv6.
O suporte ao rastreador UDP é ativado quando DHT IPv4 está ativado. O número da porta do rastreador UDP é compartilhado com o DHT. Use a opção --dht-listen-port
para alterar o número da porta.
A opção -o
é usada para alterar o nome do arquivo .torrent em si, não o nome de um arquivo no arquivo .torrent. Para este propósito, use a opção --index-out
.
Os números de porta que o aria2 usa por padrão são 6881-6999 para TCP e UDP.
aria2 não configura o encaminhamento de porta automaticamente. Configure seu roteador ou firewall manualmente.
O número máximo de pares é 55. Este limite pode ser excedido quando a taxa de download for baixa. Esta taxa de download pode ser ajustada usando a opção --bt-request-peer-speed-limit
.
A partir da versão 0.10.0, aria2 para de enviar mensagens de solicitação após a conclusão do download seletivo.
A implementação atual suporta HTTP(S)/FTP/SFTP/BitTorrent. Os outros protocolos P2P são ignorados. Ambos os documentos Metalink4 (RFC 5854) e Metalink versão 3.0 são suportados.
Para verificação de soma de verificação, são suportados md5, sha-1, sha-224, sha-256, sha-384 e sha-512. Se vários algoritmos hash forem fornecidos, aria2 usará um mais forte. Se a verificação da soma de verificação do arquivo inteiro falhar, o aria2 não tentará novamente o download e apenas sairá com um código de retorno diferente de zero.
As preferências do usuário suportadas são versão, idioma, local, protocolo e sistema operacional.
Se somas de verificação de pedaços forem fornecidas no arquivo Metalink, o aria2 validará automaticamente pedaços de dados durante o download. Esse comportamento pode ser desativado por uma opção de linha de comando.
Se uma assinatura estiver incluída em um arquivo Metalink, o aria2 a salva como um arquivo após a conclusão do download. O nome do arquivo é nome do arquivo de download + ".sig". Se o mesmo arquivo já existir, o arquivo de assinatura não será salvo.
No Metalink4, um torrent de vários arquivos pode aparecer no elemento metalink:metaurl. Como o aria2 não pode baixar 2 torrents iguais ao mesmo tempo, o aria2 agrupa os arquivos no elemento metalink:file que possui o mesmo metaurl BitTorrent e os baixa de um único enxame BitTorrent. Este é basicamente um download torrent de vários arquivos com seleção de arquivos, portanto, também são criados os arquivos adjacentes que não estão no documento Metalink, mas compartilham a mesma parte do arquivo selecionado.
Se o URI relativo for especificado no elemento metalink:url ou metalink:metaurl, aria2 usa o URI do arquivo Metalink como URI base para resolver o URI relativo. Se o URI relativo for encontrado no arquivo Metalink que é lido do disco local, aria2 usa o valor da opção --metalink-base-uri
como URI base. Se esta opção não for especificada, o URI relativo será ignorado.
A implementação atual usa apenas links rel=duplicate. aria2 entende os campos do cabeçalho Digest e verifica se eles correspondem ao valor do resumo de outras fontes. Se for diferente, interrompa a conexão. aria2 também usa esse valor de resumo para realizar a verificação da soma de verificação após o término do download. aria2 reconhece valor geográfico. Para informar ao aria2 qual local você prefere, você pode usar a opção --metalink-location
.
O suporte netrc está habilitado por padrão para HTTP(S)/FTP/SFTP. Para desativar o suporte netrc, especifique a opção de linha de comando -n. Seu arquivo .netrc deve ter permissões corretas (600).
O servidor WebSocket incorporado em aria2 implementa a especificação definida em RFC 6455. A versão do protocolo suportada é 13.
A libaria2 é uma biblioteca C++ que oferece funcionalidade aria2 ao código do cliente. Atualmente, libaria2 não é construído por padrão. Para habilitar libaria2, use a opção de configuração --enable-libaria2
. Por padrão, apenas a biblioteca compartilhada é criada. Para construir uma biblioteca estática, use também a opção de configuração --enable-static
. Consulte a documentação da libaria2 para saber como usar a API.
Manual on-line aria2
https://aria2.github.io/
PROTOCOLO DE TRANSFERÊNCIA DE ARQUIVOS RFC 959 (FTP)
Localizadores Uniformes de Recursos RFC 1738 (URL)
Extensões FTP RFC 2428 para IPv6 e NATs
Protocolo de transferência de hipertexto RFC 2616 - HTTP/1.1
Extensões RFC 3659 para FTP
RFC 3986 Uniform Resource Identifier (URI): Sintaxe genérica
Aspectos de aplicação RFC 4038 da transição IPv6
RFC 5854 O formato de descrição de download do Metalink
RFC 6249 Metalink/HTTP: Espelhos e Hashes
Mecanismo de gerenciamento de estado HTTP RFC 6265
RFC 6266 Uso do campo de cabeçalho de disposição de conteúdo no protocolo de transferência de hipertexto (HTTP)
RFC 6455 O protocolo WebSocket
RFC 6555 Happy Eyeballs: Sucesso com hosts Dual-Stack
A especificação do protocolo BitTorrent
BitTorrent: Protocolo DHT
BitTorrent: extensão rápida
BitTorrent: extensão do rastreador IPv6
BitTorrent: extensão para peers enviarem arquivos de metadados
BitTorrent: protocolo de extensão
BitTorrent: extensão de metadados multitracker
BitTorrent: Protocolo UDP Tracker para BitTorrent e especificação do protocolo BitTorrent udp-tracker.
BitTorrent: WebSeed - propagação HTTP/FTP (estilo GetRight)
BitTorrent: torrentes privados
BitTorrent: Extensões BitTorrent DHT para IPv6
BitTorrent: criptografia de fluxo de mensagens
Kademlia: um sistema de informação ponto a ponto baseado na métrica XOR