Me gustaría comprobar dónde se redirige una única URL. Un ejemplo de eso podría ser un enlace desde la página de resultados de búsqueda de Google (donde un clic siempre pasa por el servidor de Google).
¿Puedo hacer eso con curl
?
Prueba esto:
$ LOCATION=`curl -I http://raspberrypi.stackexchange.com/a/1521/86 | perl -n -e '/^Location: (.*)$/ && print "$1\n"'`
$ echo "$LOCATION"
/questions/1508/how-do-i-access-the-distributions-name-on-the-command-line/1521#1521
Las URL de redireccionamiento de Google son ligeramente diferentes. Devuelven un redireccionamiento de Javascript, que podría procesarse fácilmente, pero ¿por qué no procesar la URL original e ir todos juntos?
$ URL="http://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&ved=0CFAQFjAA&url=http%3A%2F%2Fwww.raspberrypi.org%2F&ei=rv8oUODIIMvKswa4xoHQAg&usg=AFQjCNEBMoebclm0Gk0LCZIStJbF04U1cQ"
$ LOCATION=`echo "$URL" | perl -n -e '/url=([a-zA-Z0-9%\.]*)/ && print "$1\n"'`
$ echo "$LOCATION"
http%3A%2F%2Fwww.raspberrypi.org%2F
$ echo "$LOCATION" | perl -pe 's/%([0-9a-f]{2})/sprintf("%s", pack("H2",$1))/eig'
http://www.raspberrypi.org/
Hay una manera aún más fácil
imprimiría
para URL
fuente
curl se puede configurar para seguir redirecciones e imprimir variables después de la finalización. Entonces, lo que pides se puede lograr con el siguiente comando:
La página del manual explica los parámetros necesarios como ese:
fuente
o prueba esto
fuente
curl -s -I 'http://yoururl'
y el contenido de la respuesta concurl -s 'http://yoururl'
(verá que google usa un javascript simple para la redirección).Los parámetros
-L (--location)
y-I (--head)
aún haciendo innecesaria HEAD-request a la ubicación-url.Si está seguro de que no tendrá más de una redirección, es mejor deshabilitar la ubicación de seguimiento y utilizar una variable de curva% {redirect_url}.
Este código solo realiza una solicitud HEAD a la URL especificada y toma redirect_url de location-header:
fuente