Rizo. Verificar redireccionamiento

8

Supongamos que tenemos 3 enlaces: link1, link2, link3. link1 redirige a link2 y link2 redirige a link3. Entonces, ¿cómo ver eso con rizo?

ipeacocks
fuente

Respuestas:

13

Puedes ver los encabezados HTML usando -I. Si la redirección es una meta-actualización, debería aparecer de esta manera como un encabezado.

lamp@oort ~ $ curl -I http://google.com<br>
HTTP/1.1 301 Moved Permanently<br>
Location: http://www.google.com/<br>
Content-Type: text/html; charset=UTF-8<br>
Date: Thu, 21 Nov 2013 14:59:13 GMT<br>
Expires: Sat, 21 Dec 2013 14:59:13 GMT<br>
Cache-Control: public, max-age=2592000<br>
Server: gws<br>
Content-Length: 219<br>
X-XSS-Protection: 1; mode=block<br>
X-Frame-Options: SAMEORIGIN<br>
Alternate-Protocol: 80:quic

Si la redirección se realiza a través de PHP, puede detectar esto comparando a dónde va el navegador y dónde va realmente ... Hay muchas maneras de hacer esto con Python, JS, etc. Un proyecto que puede ser interesante para ti es phantomjs, un navegador sin cabeza con script.

nandoP
fuente
5

Prueba esto :

for link in link1 link2 link3; do
    curl -Is "$link" | awk '/Location/{print $2}'
done

O usando :

for link in link1 link2 link3; do
    printf '%s\n%s\n\n%s\n' 'HEAD / HTTP/1.1' "Host: $link" 'Connexion:close' |
    netcat $link 80 | awk '/Location/{print $2}'
done
Gilles Quenot
fuente
4

De man curl:

   -w, --write-out <format>
          Defines what to display on stdout after a completed and
          successful operation.

          <...>

          redirect_url   When an HTTP request was made without -L to
                         follow redirects, this variable will show the 
                         actual URL a redirect would take you to.
                         (Added in 7.18.2)

Entonces probablemente curl -w "%{redirect_url}" link1le dará la primera URL de redireccionamiento.

Tal vez algo como esto te funcione:

URL="http://google.com"
while [ -n "${URL}" ]
do
    echo $URL
    URL=$(curl -sw "\n\n%{redirect_url}" "${URL}" | tail -n 1)
done
Flo Mismo
fuente