¿Cómo determinar el estado HTTP sin descargar la página completa?

26

Quiero saber el estado HTTP de los sitios web que usan Ubuntu. He usado curly wgetmando para ese propósito. Pero el problema es que estos comandos descargan la página completa del sitio web y luego buscan el encabezado y lo muestran en la pantalla. Por ejemplo:

$ curl -I trafficinviter.com
HTTP/1.1 200 OK
Date: Mon, 02 Jan 2017 14:13:14 GMT
Server: Apache
X-Pingback: http://trafficinviter.com/xmlrpc.php
Link: <http://trafficinviter.com/>; rel=shortlink
Set-Cookie: wpfront-notification-bar-landingpage=1
Content-Type: text/html; charset=UTF-8

Lo mismo sucede con el Wgetcomando donde la página completa se descarga y consume innecesariamente mi ancho de banda.

Lo que estoy buscando es: cómo obtener el código de estado HTTP sin descargar ninguna página para poder ahorrar mi consumo de ancho de banda. Intenté usar curl pero no estoy seguro si estoy descargando la página completa o solo un encabezado a mi sistema para obtener el código de estado.

Jaffer Wilson
fuente
"intenté usar curl pero no estoy seguro si estoy descargando la página completa o solo un encabezado" - curl -v( --verbose) la opción es una forma práctica de depurar lo que curl realmente está enviando y recibiendo.
Beni Cherniavsky-Paskin
Me temo que estoy votando negativamente porque ya tienes la solución en la pregunta.
Lightness compite con Monica el
@LightnessRacesinOrbit No sabía si la pregunta es mi respuesta o no. Estaba aquí para recibir ayuda para resolver mi confusión. Si todavía encuentra que mi pregunta es incorrecta ... Agradezco su decisión de voto negativo ... gracias
Jaffer Wilson
"estos comandos descargan la página completa del sitio web" - no, no lo hacen
Deja de dañar a Monica el

Respuestas:

49

curl -Ibusca solo los encabezados HTTP; No descarga toda la página. De man curl:

-I, --head
      (HTTP/FTP/FILE) Fetch the HTTP-header only! HTTP-servers feature
      the command HEAD which this uses to get nothing but  the  header
      of  a  document. When used on an FTP or FILE file, curl displays
      the file size and last modification time only.

Otra opción es instalar lynxy usar lynx -head -dump.

La solicitud HEAD se especifica mediante el protocolo HTTP 1.1 ( RFC 2616 ):

9.4 HEAD

   The HEAD method is identical to GET except that the server MUST NOT
   return a message-body in the response. The metainformation contained
   in the HTTP headers in response to a HEAD request SHOULD be identical
   to the information sent in response to a GET request. This method can
   be used for obtaining metainformation about the entity implied by the
   request without transferring the entity-body itself. This method is
   often used for testing hypertext links for validity, accessibility,
   and recent modification.
AlexP
fuente
2
¿Es posible (dentro de los límites del estándar ... obviamente es posible ) que una solicitud HEAD devuelva un código de estado diferente al de GET?
KutuluMike
1
@KutuluMike: editó la respuesta para proporcionar la información solicitada. En palabras del RFC, DEBERÍA proporcionar la misma metainformación.
AlexP
@duskwuff: Entonces una solicitud HEAD DEBE devolver el mismo 405.
AlexP
@AlexP Mi error. ¡No importa!
duskwuff
18

Con wget, debe usar la --spideropción para enviar una solicitud HEAD como curl:

$ wget -S --spider https://google.com
Spider mode enabled. Check if remote file exists.
--2017-01-03 00:08:38--  https://google.com/
Resolving google.com (google.com)... 216.58.197.174
Connecting to google.com (google.com)|216.58.197.174|:443... connected.
HTTP request sent, awaiting response... 
  HTTP/1.1 302 Found
  Cache-Control: private
  Content-Type: text/html; charset=UTF-8
  Location: https://www.google.co.jp/?gfe_rd=cr&ei=...
  Content-Length: 262
  Date: Mon, 02 Jan 2017 15:08:38 GMT
  Alt-Svc: quic=":443"; ma=2592000; v="35,34"
Location: https://www.google.co.jp/?gfe_rd=cr&ei=... [following]
Spider mode enabled. Check if remote file exists.
--2017-01-03 00:08:38--  https://www.google.co.jp/?gfe_rd=cr&ei=...
Resolving www.google.co.jp (www.google.co.jp)... 210.139.253.109, 210.139.253.93, 210.139.253.123, ...
Connecting to www.google.co.jp (www.google.co.jp)|210.139.253.109|:443... connected.
HTTP request sent, awaiting response... 
  HTTP/1.1 200 OK
  Date: Mon, 02 Jan 2017 15:08:38 GMT
  Expires: -1
  Cache-Control: private, max-age=0
  Content-Type: text/html; charset=Shift_JIS
  P3P: CP="This is not a P3P policy! See https://www.google.com/support/accounts/answer/151657?hl=en for more info."
  Server: gws
  X-XSS-Protection: 1; mode=block
  X-Frame-Options: SAMEORIGIN
  Set-Cookie: NID=...; expires=Tue, 04-Jul-2017 15:08:38 GMT; path=/; domain=.google.co.jp; HttpOnly
  Alt-Svc: quic=":443"; ma=2592000; v="35,34"
  Transfer-Encoding: chunked
  Accept-Ranges: none
  Vary: Accept-Encoding
Length: unspecified [text/html]
Remote file exists and could contain further links,
but recursion is disabled -- not retrieving.
muru
fuente
¿No crees que mi amigo ese wget buscará la página completa y luego mostrará el encabezado?
Jaffer Wilson
@JafferWilson leyó las últimas líneas de la salida.
muru