Wie kann ich eine große Anzahl von Umleitungs-URLs auflösen?

1449
memery

Ich habe eine .csv-Datei, die 1000s von Alias- / verkürzten Links (wie bit.ly usw.) besteht. Ich muss herausfinden, wohin sie weiterleiten. Gibt es ein einfaches Programm, das diese Aufgabe erledigen könnte?

1
Was hat Excel damit zu tun? Hennes vor 10 Jahren 0
Ich dachte mir, es könnte eine Formel oder ein Makro geben, von denen ich nichts weiß. Sonst nichts. memery vor 10 Jahren 0
Ich würde mit 'wget' und 'curl' anfangen. Möglicherweise mit der Option "--spider". Das ist aber nur die halbe Lösung. Hennes vor 10 Jahren 3

3 Antworten auf die Frage

2
MetaNova

Wenn Sie die Datei als Klartext mit einer URL pro Zeile speichern können, können Sie das folgende Skript auf einem Linux / MacOS / * nix-Computer oder Cygwin unter Windows verwenden, um eine Textdatei mit den URLs auszuspucken.

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

Kopieren Sie den obigen Text in eine Datei namens resol.sh. Machen nanoSie ihn ggf. ausführbar chmod +x resolve.sh, benennen Sie die Datei mit den bit.ly-URLs usw. in url.txt und stellen Sie sicher, dass sie sich im selben Ordner befindet wie die resol.sh-Datei, und führen Sie es mit aus ./resolve.sh. Es wird eine Datei mit dem Namen "resolved_urls.txt" mit der ursprünglichen URL und dem aufgelösten Gegenstück erstellt.

Die Ausgabe mit

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

in url.txt ist

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

Dieses Skript ist alles andere als perfekt und kann den Zorn verschiedener Unix-Greybeards auslösen, aber es funktioniert zumindest für bit.ly. Lassen Sie mich wissen, wenn Sie Fragen zu * nix haben.

Es sollte nicht zu schwer sein, eine CSV-Datei in eine reine Textdatei umzuwandeln Journeyman Geek vor 10 Jahren 0
Könnten Sie nicht einfach 'wget -S' verwenden und die Serverantwort ohne Ausgabe erhalten. Dann entfällt das `delete_me`. Und Sie könnten sogar `wget -S $ url 2> & 1 | machen grep ^ Location >> resolved_urls.txt` in einer Zeile. (Auch keine Notwendigkeit für log.txt :) Rik vor 10 Jahren 1
Danke, Rik. Ich dachte, es würde wahrscheinlich eine Fahne dafür geben, wollte aber nicht zu lange mit diesem Problem umgehen. : P MetaNova vor 10 Jahren 0
2
Rik

Sie haben Ihr Betriebssystem nicht angegeben.

In Linux (mit Curl und awk) können Sie jedoch Folgendes tun:

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

Beachten Sie, dass Websites, die nicht umleiten, nach dem alten kein Ergebnis haben.

1
K7AAY

http://linkpeelr.appspot.com/ macht es auf dem Bildschirm, aber es gibt eine API, die Sie unter http://longurl.org/ verwenden können.