J'ai besoin d'obtenir l'URL finale après une redirection de page de préférence avec curl ou wget.
Par exemple, http://google.com peut rediriger vers http://www.google.com .
Le contenu est facile à obtenir (ex. curl --max-redirs 10 http://google.com -L
), Mais je ne suis intéressé que par l'URL finale (dans le premier cas http://www.google.com ).
Existe-t-il un moyen de le faire en utilisant uniquement les outils intégrés de Linux? (ligne de commande uniquement)
:-)
-I
sinon il téléchargera le fichier.curl -A ...
pour rediriger vers l'emplacement attendu.Merci, cela m'a aidé. J'ai apporté quelques améliorations et j'ai intégré cela dans un script d'aide "finalurl":
-o
sortie vers/dev/null
-I
ne téléchargez pas réellement, découvrez simplement l'URL finale-s
mode silencieux, pas de barre de progressionCela a permis d'appeler la commande à partir d'autres scripts comme celui-ci:
la source
finalurl() { curl --silent --location --head --output /dev/null --write-out '%{url_effective}' -- "$@"; }
comme autre option:
Mais cela ne dépasse pas le premier.
la source
Vous pouvez généralement le faire avec wget.
wget --content-disposition
"url" en plus si vous ajoutez,-O /dev/null
vous ne sauvegarderez pas réellement le fichier.wget -O /dev/null --content-disposition example.com
la source
-O /dev/null
uniquement de à-O-
. Mieux:wget -O- --content-disposition example.com
Je vous remercie. J'ai fini par implémenter vos suggestions: curl -i + grep
Renvoie vide si le site Web ne redirige pas, mais cela me suffit car il fonctionne sur des redirections consécutives.
Cela pourrait être bogué, mais en un coup d'œil, cela fonctionne bien.
la source
Cela fonctionnerait:
la source
Les paramètres
-L (--location)
et-I (--head)
toujours faire une demande HEAD inutile à l'emplacement-url.Si vous êtes sûr de ne pas avoir plus d'une redirection, il est préférable de désactiver la localisation de suivi et d'utiliser une variable curl% {redirect_url}.
Ce code ne fait qu'une seule demande HEAD à l'URL spécifiée et prend redirect_url de l'en-tête d'emplacement:
Test de rapidité
all_videos_link.txt
- 50 liens de goo.gl + bit.ly qui redirigent vers youtube1. Avec suivre l'emplacement
Résultats:
2. Sans suivre l'emplacement
Résultats:
la source
Je ne sais pas comment le faire avec curl, mais libwww-perl installe l'alias GET.
la source
Pouvez-vous essayer avec?
Remarque: lorsque vous exécutez la commande curl -I http://votre-domaine.com doit utiliser des guillemets simples dans la commande comme
curl -I 'http://your-domain.com'
la source
Vous pouvez utiliser grep. ne vous dit-il pas où il redirige aussi? Grep juste ça.
la source