curl recursivo -l para obter o estado final de uma página da Web

0

Desejo saber se uma determinada página da Web retorna o código de status 200 / OK HTTP (HSC). Claro, eu posso o primeiro HSC de uma página da Web fazendo curl -l URL .

O problema é que muitas páginas da Web têm redirecionamentos, e curl não flui naturalmente com esses redirecionamentos, portanto, ele pára no primeiro HSC, não continua no último HSC e retorna:

301: Moved permanently

Isso não me ajuda a saber se a última página na qual um usuário seria movido é boa ou não, ou apenas se retorna 200 ou não.

Como eu poderia ter certeza de que curl continua com a URL e redirecionamentos (se houver algum) até que ele alcance o último URL para verificar se ele retornou 200 ou não?

O objetivo é saber se um usuário deve acessar uma página típica no final (200 / OK) ou não.

    
por pntshere 22.01.2018 / 23:32

1 resposta

2

Para seguir redirecionamentos, use o sinalizador -L :

curl -L mywebpage.com

Manipulação de onda:

-L, --location
              (HTTP/HTTPS) If the server reports that the requested page has moved to a different location (indicated  with  a  Location:  header  and  a  3XX
              response  code),  this  option will make curl redo the request on the new place. If used together with -i, --include or -I, --head, headers from
              all requested pages will be shown. When authentication is used, curl only sends its credentials to the initial host. If a redirect takes curl to
              a  different  host, it won't be able to intercept the user+password. See also --location-trusted on how to change this. You can limit the amount
              of redirects to follow by using the --max-redirs option.

              When curl follows a redirect and the request is not a plain GET (for example POST or PUT), it will do the following request with a  GET  if  the
              HTTP  response was 301, 302, or 303. If the response code was any other 3xx code, curl will re-send the following request using the same unmodi‐
              fied method.

              You can tell curl to not change the non-GET request method to GET after a 30x response by using  the  dedicated  options  for  that:  --post301,
              --post302 and -post303.
    
por George Udosen 22.01.2018 / 23:37