Ich möchte überprüfen, wo eine einzelne URL umgeleitet wird. Ein Beispiel hierfür könnte ein Link von der Suchergebnisseite von Google sein (bei dem ein Klick immer über den Google-Server erfolgt).
Kann ich das tun mit curl
?
Versuche dies:
$ 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
Google Redirect-URLs unterscheiden sich geringfügig. Sie geben eine JavaScript-Weiterleitung zurück, die problemlos verarbeitet werden kann. Warum aber nicht die ursprüngliche URL verarbeiten und alle zusammen locken?
$ 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/
Es gibt einen noch einfacheren Weg
es würde drucken
für URL
quelle
curl kann so konfiguriert werden, dass Weiterleitungen folgen und Variablen nach Abschluss gedruckt werden. Was Sie also verlangen, können Sie mit dem folgenden Befehl erreichen:
Die Manpage erklärt die notwendigen Parameter so:
quelle
oder versuchen Sie es
quelle
curl -s -I 'http://yoururl'
und den Inhalt der Antwort mit studierencurl -s 'http://yoururl'
(Sie werden sehen, dass Google ein einfaches Javascript für die Weiterleitung verwendet).Die Parameter
-L (--location)
und-I (--head)
immer noch unnötige HEAD-Anfrage an die Location-URL.Wenn Sie sicher sind, dass Sie nicht mehr als eine Umleitung haben, ist es besser, die Verfolgungsposition zu deaktivieren und eine Curl-Variable% {redirect_url} zu verwenden.
Dieser Code führt nur eine HEAD-Anfrage an die angegebene URL durch und entnimmt redirect_url aus dem Location-Header:
quelle