GNU/Linux >> Linux Esercitazione >  >> Linux

Ottieni l'URL finale dopo il reindirizzamento di curl

Grazie, questo mi ha aiutato. Ho apportato alcuni miglioramenti e l'ho inserito in uno script helper "finalurl":

#!/bin/bash
curl $1 -s -L -I -o /dev/null -w '%{url_effective}'
  • -o output a /dev/null
  • -I non scaricare effettivamente, scopri solo l'URL finale
  • -s modalità silenziosa, nessuna barra di avanzamento

Ciò ha reso possibile richiamare il comando da altri script come questo:

echo `finalurl http://someurl/`

come un'altra opzione:

$ 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>

Ma non va oltre il primo.


curl è -w opzione e la sottovariabile url_effective è quello che stai cercando.

Qualcosa come

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

Ulteriori informazioni

-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

Altro

Potresti voler aggiungere -I (che è un i maiuscolo ), che farà sì che il comando non scarichi alcun "corpo", ma utilizza anche il metodo HEAD, che non è ciò che la domanda includeva e rischia di cambiare ciò che fa il server. A volte i server non rispondono bene a HEAD anche quando rispondono bene a GET.


Linux
  1. Che cos'è un comando cURL e come utilizzarlo?

  2. Ripeti il ​​testo dopo il comando arricciatura sulla stessa riga?

  3. Dove ottenere la nuova stringa dopo aver eseguito `sub` in Awk?

  4. Ottieni informazioni sull'intestazione con cURL

  5. Come ottenere l'URL del file Dropbox dalla riga di comando?

Utilizzo di Curl per effettuare richieste API REST

Statcode:ottieni una rapida spiegazione di vari codici di stato HTTP

15 pratici esempi di comandi cURL di Linux (esempi di download di cURL)

Come posso reindirizzare o reindirizzare l'output di curl -v?

RabbitMQ - Ottieni messaggi da una coda usando curl

Come posso fare un HTTP PUT con Wget?