Salve o corpo HTTP com o netcat

0

Eu posso salvar toda a resposta HTTP de um servidor usando o netcat > output.txt, no entanto, isso também salva os cabeçalhos de resposta HTTP, se o corpo for texto, isso não é um problema, já que posso simplesmente ignorar os cabeçalhos quando leio o arquivo output.txt.

No entanto, se for um arquivo binário como uma imagem, não poderei visualizar a imagem, como posso salvar apenas o corpo de uma resposta usando o netcat ou algum outro comando com saída de saída do netcat?

    
por Jonathan. 16.03.2016 / 12:44

1 resposta

0

Como sugerido acima, wget (e lynx ... e curl) podem fazer um trabalho muito melhor que o netcat, mas se você insistir, você pode filtrar o cabeçalho com sua linguagem de script favorita. Como o cabeçalho http é terminado por \ r \ n \ r \ n que em sistemas unix-like (eu acho que é onde você está) realmente significa "todas as linhas de cabeçalho mais uma linha contendo apenas \ r", isso não é tão difícil como parece à primeira vista.

Usando o gawk (sim, GNU awk !, como o RT não é conhecido por outras versões do awk, AFAIK), este pode ser o seu comando:

netcat ... | gawk 'NR==1,/^\r$/ {next} {printf "%s%s",$0,RT}' > something.out

Se a pergunta "por que não usar apenas impressão em vez desse método feio?" apareceria, a resposta é: não sabemos se o último registro (o que o gawk pensa ser um registro) é terminado com nova linha ou não, e também não temos idéia se a existência desta última nova linha é significativa ou não. Podemos ter certeza se escrevemos lá apenas se estiver na entrada. RT estará vazio se não foi assim a saída será o que foi enviado e não mais.

    
por 16.03.2016 / 15:18

Tags