Comment pourrais-je résoudre un gros lot d'URL de redirection?

1

J'ai un fichier .csv sera 1000s de liens aliasés / raccourcis (tels que bit.ly etc.). Je dois savoir où ils redirigent. Existe-t-il un programme simple qui pourrait compléter cette tâche?

mémoire
la source
euh, qu'est-ce que Excel a à faire avec ça?
Hennes
J'ai pensé qu'il pourrait y avoir une formule ou une macro que je ne connais pas. A part ça, rien.
Mémoire
3
Je commencerais par regarder wgetet curl. Peut-être avec l' --spideroption. Ce n'est cependant que la moitié de la solution.
Hennes

Réponses:

2

Vous n'avez pas spécifié votre système d'exploitation.

Mais sous Linux (avec Curl et awk installés), vous pouvez faire quelque chose comme ceci:

#!/bin/bash
while read LINE ; do
  NEWURL=$(curl -sIL $LINE 2>&1 | awk '/^Location/ {print $2}' | tail -n1;)
  echo "$LINE ; $NEWURL"
done < urls.txt

Notez que les sites qui ne redirigent pas n'auront pas de résultat après l'ancien.

Rik
la source
2

Si vous parvenez à enregistrer le fichier sous forme de texte en clair avec une seule URL par ligne, vous pouvez utiliser le script suivant sur une machine Linux / MacOS / * nix ou Cygwin sous Windows pour créer un fichier texte contenant les URL.

#!/bin/bash
rm resolved_urls.txt
for url in $(cat url.txt); do
        wget -S "$url" 2>&1 | grep ^Location >> resolved_urls.txt
done

Copiez le texte ci-dessus dans un fichier appelé resol.sh, en utilisant le nanocas échéant, rendez-le exécutable chmod +x resolve.sh, nommez-le avec les URL bit.ly, etc. en url.txt, en veillant à ce qu'il se trouve dans le même dossier que le fichier resol.sh. et l'exécuter avec ./resolve.sh. Il créera un fichier appelé "résolu_urls.txt" avec l'URL d'origine et son équivalent résolu.

La sortie avec

http://bit.ly/1auRnQ9
http://bit.ly/19ZkTAI

dans url.txt est

http://bit.ly/1auRnQ9 --> Location: http://www.google.com/ [following]
http://bit.ly/19ZkTAI --> Location: http://superuser.com/ [following]

Ce script est loin d’être parfait et peut susciter les foudres de divers greybeards Unix , mais il fonctionne au moins pour bit.ly. Faites-moi savoir si vous avez des questions relatives à * nix.

MetaNova
la source
ne devrait pas être trop difficile à retraiter un fichier CSV dans un fichier texte brut, a juste besoin d' affaires méchant avec coupe
Journeyman Geek
1
Ne pourriez-vous pas simplement utiliser wget -Set obtenir la réponse du serveur sans la sortie. Alors il n'y a pas besoin de delete_me. Et vous pouvez même faire wget -S $url 2>&1 | grep ^Location >> resolved_urls.txten une seule ligne. (Pas besoin non plus de log.txt :)
Rik
Merci Rik Je pensais qu'il y aurait probablement un drapeau pour le faire, mais je ne voulais pas passer trop de temps sur ce problème. : P
MetaNova