O problema de redirecionamento do wget pode ser resolvido usando
wget --trust-server-names http://www.example.com/X?1234
Problema simples - eu preciso de um gerenciador de downloads, console, GUI, não importa. O problema está nos recursos:
cabeçalho personalizado - preciso passar um cookie para fazer o download (autorização)
currículo - assim, se o download parar por algum motivo, eu poderia continuar a partir de 50% (por exemplo), não do início
nova tentativa - para que o programa possa tentar estabelecer conexão e fazer download novamente
saída de nome de arquivo personalizado - para poder dar um nome de arquivo específico, para onde os dados vão
e redirecionamento dinâmico - assim, se eu solicitar ao servidor o arquivo X
e as respostas do servidor "OK, aqui está X?token=767
" o downloader aceitará isso com o nome original - X
acho que é o mesmo que eu pedi)
Desde que eu prefiro console, até agora eu tentei wget, curl, aria2c. Todos eles falham. wget não lida com saída de nome de arquivo personalizado (é apenas um despejo para um arquivo) e é "enganado" por redirecionamento - ou seja, como no exemplo acima, ele armazenará os dados no arquivo X?token=767
, o que estraga tanto o reinício quanto a tentativa , porque com cada reconexão o token muda.
aria2c e curl não iniciam o download. Meu palpite é que eles não aceitam o redirecionamento, aria2c tenta de novo e de novo com 0 bytes de download e nenhum sucesso, o curl baixa a resposta do servidor que o arquivo foi movido para X?token=767
.
Para o registro, abaixo dos meus comandos para baixar:
wget
wget -rc --no-cookies --header "Cookie: COOKIEKEY=COOKIEVALUE" \
"https://www.foo.bar/file.gz"
aria2c
aria2c -o f.gz --check-certificate=false -c -m0 \
--header="Cookie: COOKIEKEY=COOKIEVALUE" \
"https://www.foo.bar/file.gz"
curl
curl -o f.gz -C - --retry 1000 \
-H "Cookie: COOKIEKEY=COOKIEVALUE" \
"https://www.foo.bar/file.gz"