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?

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.


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

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
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.