conexão wget redefinida pelo par

1

Estou usando o seguinte código para baixar uma lista de arquivos pdf:

wget -i list.txt -A .pdf

Alguns arquivos pdf são baixados corretamente. No entanto, alguns arquivos de PDF não são baixados corretamente. Quando eu verifico o log, vejo o seguinte relatório:

--2013-04-09 11:25:42--  http://amazon.com/111.pdf
Reusing existing connection to amazon.com:80.
HTTP request sent, awaiting response... 200 No headers, assuming HTTP/0.9
Length: unspecified
Saving to: '111.pdf'


    [                                         <=>       ] 1,045       --.-K/s   in 2m 9s


2013-04-09 11:27:51 (8.11 B/s) - Read error at byte 1045 (Connection reset by peer).Retrying.


--2013-04-09 11:27:52--  (try: 2)  http://amazon.com/111.pdf
Connecting to amazon.com (amazon.com)|00.00.55.888|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 2680728 (2.6M) [application/pdf]
Saving to: '111.pdf'


61% [==============================>                    ] 1,649,221   10.0K/s   in 2m 41s


2013-04-09 11:30:41 (10.0 KB/s) - Read error at byte 1649221/2680728 (Connection reset by peer). Retrying.


--2013-04-09 11:30:43--  (try: 3)  http://amazon.com/111.pdf
Connecting to amazon.com (amazon.com)|00.00.55.888|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 2680728 (2.6M) [application/pdf]
Saving to: '111.pdf'


100%[==================================================>] 2,680,728   10.1K/s   in 4m 22s


2013-04-09 11:35:11 (10.0 KB/s) - '111.pdf' saved [2680728/2680728]

Eu me pergunto por que não consigo abrir o arquivo pdf 111.pdf? O relatório acima diz que é 100% transferido. É por causa da conexão redefinida pelo peer?

Gostaria de saber se é possível colocar o wget em um loop para cada arquivo, de forma que ele não saia do loop, até que o download seja feito sem nenhum erro? Eu encontrei o seguinte loop, no entanto, dá um erro. O código e o erro são mostrados abaixo:

Código:

while read -r link
do
        wget -A .pdf
        until [ $? = 0 ]
        do
            wget -A .pdf
        done
done < ./list.txt

Erro:

Try 'wget --help' for more options.
wget: missing URL
Usage: wget [OPTION]... [URL]...

Estou usando o Cygwin no Windows.

Por favor, deixe-me saber se você tem outras sugestões também.

Obrigado pela sua ajuda.

    
por Si14 11.04.2013 / 22:24

1 resposta

4

Conexões fechadas

Conexão fechada por peer geralmente significa que a conexão foi deliberadamente fechada pela máquina de destino (ou qualquer outra na rota de rastreamento).

Combinado com o fato de que o download funciona bem no seu navegador, suspeito que o servidor esteja configurado para proibir ou desacelerar os downloads em lote e / ou os downloaders.

arquivo corrompido

Na primeira tentativa, apenas 1.045 foram baixados e os cabeçalhos indicam que o comprimento não foi especificado. Eu suspeito que a primeira parte do arquivo é realmente algum tipo de mensagem de erro (por exemplo, você tem que esperar X segundos entre os downloads).

Soluções possíveis

  • Invente o agente do usuário de um navegador principal:

    --user-agent "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Ubuntu Chromium/25.0.1364.160 Chrome/25.0.1364.160 Safari/537.22"
    
  • Defina tempos de espera razoáveis ou aleatórios entre dois downloads:

    --wait=15
    --random-wait
    
por 12.04.2013 / 16:43

Tags