Holen Sie sich die endgültige URL nach dem curl umgeleitet
Ich brauche, um die endgültige URL nach einer Seite umleiten vorzugsweise mit curl oder wget.
Beispielsweise http://google.com können umleiten, um http://www.google.com.
Die Inhalte sind leicht zu bekommen(ex. curl --max-redirs 10 http://google.com -L
), aber ich bin nur daran interessiert, die endgültige url (im ehemaligen Fall http://www.google.com).
Gibt es eine Möglichkeit, dies zu tun, indem Sie nur Linux-built-in-tools? (command-line-only)
Du musst angemeldet sein, um einen Kommentar abzugeben.
curl
's-w
option und der sub variableurl_effective
ist das, was Sie sindauf der Suche nach.
Etwas wie
Mehr info
Mehr
Möchten Sie vielleicht
-I
(das ist ein groß -i
) als auch, was den Befehl nicht herunterladen "Körper", aber es dann auch über die HEAD-Methode, die ist nicht, was die Frage enthalten und Risiko zu verändern, was der server tut. Manchmal-Server nicht reagieren gut auf den KOPF, auch wenn Sie reagieren, in Ordnung zu BEKOMMEN.:-)
-I
sonst wird es tatsächlich die Datei herunterzuladen.curl -Ls -o /dev/null -w %{url_effective} https://goo dot gl/un5E
Ausgängehttps://goo dot gl/un5E
(ersetzendot
mit .)curl -A ...
für die Umleitung an der erwarteten Stelle.Dank, das hat mir geholfen. Ich habe einige Verbesserungen vorgenommen und verpackt, die in eine helper-script "finalurl":
/dev/null
Dies machte es möglich, den Befehl aufrufen aus anderen Skripts wie diesem:
finalurl() { curl --silent --location --head --output /dev/null --write-out '%{url_effective}' -- "$@"; }
Kann man dies mit wget in der Regel.
wget --content-disposition
"url" außerdem, wenn Sie hinzufügen-O /dev/null
Sie nicht tatsächlich die Datei speichern.wget -O /dev/null --content-disposition example.com
-O /dev/null
nur-O-
. Besser:wget -O- --content-disposition example.com
als eine weitere option:
Aber es geht nicht vorbei an den ersten.
Danke. Ich landete Umsetzung Ihrer Vorschläge: curl-i + grep
Gibt leer, wenn die website nicht umleiten, aber das ist gut genug für mich wie es funktioniert auf aufeinander folgenden Umleitungen.
Könnte buggy sein, aber auf einen Blick funktioniert es.
Ich bin mir nicht sicher, wie es mit curl, aber libwww-perl installiert die GET-alias.
Dieser funktionieren würde:
Parameter
-L (--location)
und-I (--head)
noch dabei unnötige HEAD-Anfrage an den location-url.Wenn Sie sicher sind, dass Sie nicht mehr als ein redirect, es ist besser, Sie zu deaktivieren, Folgen Sie Position und verwenden Sie eine curl-variable %{redirect_url}.
Dieser code nur eine HEAD-Anforderung an die angegebene URL und nimmt redirect_url von location-header:
Speed-test
all_videos_link.txt
- 50 links von goo.gl+bit.ly, die Umleitung zu youtube1. Mit "follow" Standort
Ergebnisse:
2. Ohne Folgen Standort
Ergebnisse:
Könntest du mit grep. nicht wget sagen, wo es die Umleitung zu? Nur grep, das aus.