GNU/Linux >> Tutoriels Linux >  >> Linux

Obtenir l'URL finale après la redirection de curl

Merci, ça m'a aidé. J'ai apporté quelques améliorations et l'ai enveloppé dans un script d'aide "finalurl":

#!/bin/bash
curl $1 -s -L -I -o /dev/null -w '%{url_effective}'
  • -o sortie à /dev/null
  • -I ne téléchargez pas réellement, découvrez simplement l'URL finale
  • -s mode silencieux, pas de barre de progression

Cela a permis d'appeler la commande depuis d'autres scripts comme ceci :

echo `finalurl http://someurl/`

comme autre 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>

Mais ça ne dépasse pas le premier.


curl est -w option et la sous-variable url_effective est ce que vous recherchez.

Quelque chose comme

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

Plus d'infos

-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

Plus

Vous voudrez peut-être ajouter -I (c'est un i majuscule ) également, ce qui fera que la commande ne téléchargera aucun "corps", mais elle utilisera également la méthode HEAD, qui n'est pas ce que la question incluait et risque de changer ce que fait le serveur. Parfois, les serveurs ne répondent pas bien à HEAD même s'ils répondent bien à GET.


Linux
  1. Texte en écho après la commande Curl sur la même ligne ?

  2. Où obtenir la nouvelle chaîne après avoir exécuté `sub` dans Awk ?

  3. Linux :commande pour ouvrir l'URL dans le navigateur par défaut

  4. Comment canaliser ou rediriger la sortie de curl -v ?

  5. Comment puis-je faire en sorte que cURL n'affiche pas la barre de progression ?

Qu'est-ce qu'une commande cURL et comment l'utiliser ?

Utilisation de Curl pour effectuer des requêtes API REST

Statcode - Obtenez une explication rapide des différents codes d'état HTTP

15 exemples pratiques de commandes Linux cURL (exemples de téléchargement cURL)

Wget ou des programmes similaires sont-ils toujours disponibles sur les systèmes POSIX ?

RabbitMQ - Récupère les messages d'une file d'attente à l'aide de curl