GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Holen Sie sich die endgültige URL, nachdem curl umgeleitet wurde

Danke, das hat mir geholfen. Ich habe einige Verbesserungen vorgenommen und das in ein Hilfsskript "finalurl" gepackt:

#!/bin/bash
curl $1 -s -L -I -o /dev/null -w '%{url_effective}'
  • -o Ausgabe nach /dev/null
  • -I nicht wirklich herunterladen, sondern nur die endgültige URL entdecken
  • -s Ruhemodus, keine Fortschrittsbalken

Dadurch war es möglich, den Befehl von anderen Skripten wie folgt aufzurufen:

echo `finalurl http://someurl/`

als weitere Option:

$ curl -i http://google.com
HTTP/1.1 301 Moved Permanently
Location: http://www.google.com/
Content-Type: text/html; charset=UTF-8
Date: Sat, 19 Jun 2010 04:15:10 GMT
Expires: Mon, 19 Jul 2010 04:15:10 GMT
Cache-Control: public, max-age=2592000
Server: gws
Content-Length: 219
X-XSS-Protection: 1; mode=block

<HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8">
<TITLE>301 Moved</TITLE></HEAD><BODY>
<H1>301 Moved</H1>
The document has moved
<A HREF="http://www.google.com/">here</A>.
</BODY></HTML>

Aber es geht nicht über den ersten hinaus.


curl ist -w Option und die Untervariable url_effective ist das, wonach Sie suchen.

So etwas wie

curl -Ls -o /dev/null -w %{url_effective} http://google.com

Weitere Informationen

-L         Follow redirects
-s         Silent mode. Don't output anything
-o FILE    Write output to <file> instead of stdout
-w FORMAT  What to output after completion

Mehr

Vielleicht möchten Sie -I hinzufügen (das ist ein großer i ), was dazu führt, dass der Befehl keinen "Body" herunterlädt, aber er verwendet dann auch die HEAD-Methode, die nicht in der Frage enthalten ist, und riskiert, zu ändern, was der Server tut. Manchmal reagieren Server nicht gut auf HEAD, selbst wenn sie gut auf GET reagieren.


Linux
  1. Debian – Bei einem Debian-Paketnamen, wie bekomme ich eine URL zur neuesten .deb-URL??

  2. Wie bekomme ich nur Dateien, die nach einem Date mit Ls erstellt wurden?

  3. Echotext nach Curl-Befehl in derselben Zeile?

  4. Wo bekomme ich den neuen String her, nachdem ich `sub` in Awk ausgeführt habe?

  5. Holen Sie sich Header-Informationen mit cURL

Was ist ein cURL-Befehl und wie wird er verwendet?

Verwenden von Curl zum Erstellen von REST-API-Anforderungen

Statcode – Erhalten Sie eine schnelle Erklärung verschiedener HTTP-Statuscodes

15 praktische Beispiele für cURL-Befehle unter Linux (cURL-Download-Beispiele)

RabbitMQ - Abrufen von Nachrichten aus einer Warteschlange mit Curl

Wie kann ich einen HTTP PUT mit Wget durchführen?