Dependendo de como você vê, isso é um bug ou um recurso ausente.
Os cabeçalhos especificados com --header
são enviados apenas por Wget, mas não são interpretados.
Em src/http.c
do tarball do Wget 1.13.4, há uma verificação de integridade parcial:
if ((contrange != 0 && contrange != hs->restval)
|| (H_PARTIAL (statcode) && !contrange))
{
/* The Range request was somehow misunderstood by the server.
Bail out. */
xfree_null (type);
CLOSE_INVALIDATE (sock);
xfree (head);
return RANGEERR;
}
A condição if
abrange dois casos:
-
Se houver um intervalo de conteúdo definido, ele deverá coincidir com o número de bits ausentes do arquivo que está sendo baixado.
-
Se o conteúdo parcial estiver sendo enviado, o intervalo de conteúdo deverá ser especificado pelo servidor.
O segundo caso não causa nenhum problema, já que o Wget interpreta bem a resposta do servidor. O primeiro, no entanto, é, uma vez que o Wget não interpretou o intervalo especificado pelo cliente.
Para resolver esse problema, se você estiver disposto a compilar sua própria versão do Wget, poderá alterar o código-fonte acima para o seguinte:
if (H_PARTIAL (statcode) && !contrange)
{
xfree_null (type);
CLOSE_INVALIDATE (sock);
xfree (head);
return RANGEERR;
}
if (contrange != 0 && contrange != hs->restval)
hs->restval = contrange;
Agora, o Wget deduzirá o número de bits ausentes do arquivo do intervalo de conteúdo.
Você também pode tentar cURL . Ele tem uma opção --range
incorporada.