Je voudrais vérifier où une URL unique redirige. Un exemple de cela pourrait être un lien de la page de résultats de recherche de Google (où un clic passe toujours par le serveur Google).
Puis-je faire ça avec curl
?
Essaye ça:
$ 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
Les URL de redirection Google sont légèrement différentes. Ils renvoient une redirection Javascript, qui pourrait facilement être traitée, mais pourquoi ne pas traiter l'URL d'origine et pour aller boucler tous ensemble?
$ 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/
Il existe un moyen encore plus simple
il imprimerait
pour l'URL
la source
curl peut être configuré pour suivre les redirections et imprimer les variables après la fin. Donc, ce que vous demandez peut être réalisé avec la commande suivante:
La page de manuel explique les paramètres nécessaires comme ça:
la source
ou essayez ceci
la source
curl -s -I 'http://yoururl'
et le contenu de la réponse aveccurl -s 'http://yoururl'
(vous verrez que Google utilise un simple javascript pour la redirection).Les paramètres
-L (--location)
et-I (--head)
toujours faire HEAD-demande inutile à l'emplacement-url.Si vous êtes sûr de ne pas avoir plus d'une redirection, il est préférable de désactiver la localisation de suivi et d'utiliser une variable curl% {redirect_url}.
Ce code ne fait qu'une seule requête HEAD à l'URL spécifiée et prend redirect_url de location-header:
la source