Solicitar HEAD?

52

Eu gostaria de enviar a HTTP HEADsolicitação usando wget. É possível?

Xiè Jìléi
fonte

Respostas:

59

Não é wget, mas você pode fazer isso facilmente usando curl.

curl -I http://www.superuser.com/

Produz esta saída:

HTTP/1.1 301 Moved Permanently                        
Content-Length: 144                       
Content-Type: text/html; charset=UTF-8     
Location: http://superuser.com/
Date: Sat, 09 Oct 2010 19:11:50 GMT
SleighBoy
fonte
É exatamente isso que eu quero.
Xiè Jìléi 11/10/10
11
-Ié equivalente a --head.
Nicolas Marchildon
11
Se você precisar de certificado autoassinado https, também poderá adicionar -kou--insecure
Mike Aski
36

Experimentar:

wget -S --spider www.example.com

Você também pode passar -O /dev/nullpara impedir a wgetgravação de resposta HTTP em um arquivo.

Casual Coder
fonte
2
-Svai mostrar cabeçalhos, mas executa um GET, não um HEAD. Em outras palavras, ele buscará o URL inteiro.
Dan Dascalescu
9
wget -S --spider http://localhostlog criado em apache servidor é127.0.0.1 - - [04/Mar/2014:15:36:32 +0100] "HEAD / HTTP/1.1" 200 314 "-" "Wget/1.13.4 (linux-gnu)"
Coder Casual
20

Não há necessidade de enrolar .

Com o Wget, adicionar --spiderimplica que você deseja enviar uma HEADsolicitação (ao contrário de GETou POST).

Essa é uma ótima maneira minimalista de verificar se um URL responde ou não. Você pode, por exemplo, usar isso em verificações com script, e a HEADoperação garantirá que você não carregue carga na rede nem no servidor da web de destino.

Informações sobre bônus: Se o Wget receber um erro HTTP 500 do servidor HEADao executá-lo, ele passará a executar um GETcontra o mesmo URL. Não sei o motivo desse design. Essa é a razão pela qual você pode ver a solicitação HEAD e a GETsendo executadas no servidor. Se nada estiver errado, apenas uma HEADsolicitação será executada. Você pode desativar essa funcionalidade com a --triesopção de limitar o Wget a apenas uma tentativa.

Em suma, recomendo isso para testar se um URL está respondendo:

# This works in Bash and derivatives
wget_output=$(wget --spider --tries 1 $URL  2>&1)
wget_exit_code=$?

if [ $wget_exit_code -ne 0 ]; then
    # Something went wrong
    echo "$URL is not responding"
    echo "Output from wget: "
    echo "$wget_output"
else
    echo "Check succeeded: $URL is responding"
fi
isto é divertido
fonte
4

wget -S obtém o arquivo:

Comprimento do conteúdo: 2316, Comprimento: 2316 (2,3 K) [texto / sem formatação], Salvando em: `index.html '

wget --spider obtém cabeçalhos:

Modo Spider ativado. Verifique se existe arquivo remoto., Comprimento: não especificado [texto / simples] Arquivo remoto existe.

LanPartacz
fonte
-1

Embora não wget, muitas perlinstalações com o lwpmódulo terão um HEADcomando instalado.

Rich Homolka
fonte