Egal ob man Kurz-URLs mag oder nicht, ob man sie für sinnvoll hält oder nicht, immer häufiger begegnet man ihnen. Man kann ihre Benutzung prinzipiell verweigern, dann kann man aber Dienste wie Twitter.com nur eingeschränkt benutzen. Auch Verfügbarkeit und Sicherheit sind diskussionswürdige Punkte, aber all dies soll jetzt hier nicht das Thema sein!
Auf jeden Fall sollte man wissen wie man ggf. zu jeder Kurz-URL die Langform erhält ohne den Link anzuklicken. Zwar bieten viele Kurz-URL-Dienstleister („URL shortener“) inzwischen auch eine Vorschaufunktion an, aber für diese gibt es keinen einheitlichen Standard, jeder kocht hier sein eigenes Süppchen. Drei Beispiele (ohne Wertung des Dienstleisters):
Benötigt wird also eine dienstleisterunabhängige Methode, um die Ziel-URL zu erfahren. Die schnellse Möglichkeit liefert, wie meist, ein Bash-Skript. Die relevanten Dienste beruhen auf der standardisierten Serverrückmeldung 301, die besagt, daß eine Seite umgezogen ist und jetzt unter einer anderen URL erreichbar ist. Im Terminal kann man einfach durch Abruf der Kopfzeilen („header“) Informationen zu einer URL anfordern:
#:~>curl -Is 'http://bit.ly/4LjZ1' HTTP/1.1 301 Moved Server: nginx/0.7.42 Date: Mon, 10 Aug 2009 19:55:09 GMT Content-Type: text/html; charset=utf-8 Connection: keep-alive Location: http://kinderpornos.info/ MIME-Version: 1.0 Content-Length: 287 #:~>
Uns interessiert hier nur die Zeile „Location“, dort findet sich das Weiterleitungsziel. Mit grep und cut läßt sich nun ein kleines Bashskript erstellen, welches das eigentliche Ziel ausliest:
#!/usr/bin/env bash
#
if [ "$1" != '' ]; then
curl -Is $1 | grep Location | cut -d ' ' -f2
else
echo -e "\e[31mKeine URL an das Skript übergeben!\e[0m
fi
Alternativ ließe sich auch wget (wget -S --spider -d) anstelle von cURL verwenden, welches aber, im Gegensatz zu cURL, unter MacOS X nicht zur Standardinstallation gehört. Anstelle eines eigenständigen Skriptes kann man natürlich den if Bereich als function formuliert in eine Funktionenbibliothek oder direkt in die .bashrc schreiben.
Für MacOS X Anwender die der Kommandozeile nichts abgewinnen können, läßt sich mit den erwähnten Bashkommandos und etwas AppleSkript ein kleines Programm in der Menüzeile von MacOS X unterbringen, welches browser- und dienstleisterunabhängig die Langform jeder Kurz-URL anzeigt. Der Vorteil beruht darauf, daß man man den Dienstleister nicht (näher) kennen muß und immer dieselbe Befehlsfolge aufrufen kann:
SkriptEditor öffnen und folgendes Skirpt erstellen und ausführbar unter "~/Library/Scripts" ablegen:
set Abbruch to false
set Ergebnis to ""
set Zeit to 30
set KurzURL to the clipboard
try
set Verweis to (do shell script "curl -Is " & KurzURL & ¬
"| grep Location | cut -d ' ' -f2")
set Ergebnis to display dialog ¬
"Die Ziel-URL von " & KurzURL & " lautet:" default answer Verweis ¬
buttons {"abbrechen", "OK, ansehen..."} ¬
with title "Kurz-URL auflösen" default button 2 cancel button 1 ¬
giving up after Zeit
on error number -128
set Abbruch to true
end try
if Abbruch then
else if button returned of Ergebnis is "OK, ansehen..." then
open location text returned of Ergebnis
else if gave up of Ergebnis then
display dialog "Mehr als " & Zeit & ¬
" Sekunde keine Antwort." with title "Zeitüberschreitung"
end if
Das Skript setzt voraus, daß eine korrekte URL in der Zwischenablge liegt, andernfalls gibt es ungefährliche, aber unerwartete Fehlermeldungen. Die Abfrage funktioniert für alle Dienste die nach dem geschilderten Prinzip arbeiten, solange der Abruf für jeden frei zugänglich ist und sie überhaupt (noch) arbeiten. Ist ein Dienst abgeschaltet, sind die Kurz-URL für alle wertlos, da kein Zugriff mehr auf die Datenbank besteht.
Labels: .bashrc, AppleSkript, Bash, cURL, grep, IT, Kurz-URL, MacOS X, Skripttipp, Terminal, Twitter
Gestern kurz vor Mitternacht lieferte Twitter ein eindrucksvolles Beispiel, was passiert wenn die Rückübersetzung von Kurz-URLs ausfällt: Die Links sind tot! Ein potentieller GAU für ein Unternehmen welches auf das permanente Funktionieren dieser Kurz-URLs angewiesen ist. Dennoch offenbart dieser Fehler auch ein paar weniger schöne Interna von Twitter. Doch der Reihe nach. Ich wollte einer Kurz-URL aus einem Tweet der Piratenpartei folgen
Piratenpartei Kommunalwahl in Telgte - Stimmzettel landeten im Schredder: http://is.gd/2LToV #briefwahl
2 minutes ago from Identica
und landete bei folgender Fehlermeldung:
Diese Fehlermeldung erschien bei allen Tweets und allen Dienstleistern für Kurz-URLs, auch bei dem Twitter-Partner Bit.ly. Bemerkenswert an dieser Fehlermeldung ist nun zweierlei:
http://twitter.com/link_click_count?url=http%3A%2F%2Fis.gd%2F2LToV&linkType=web&tweetId=3697982903&userId=56075977&authenticity_token=b59b6d07e248ef735c6a404e15bc4f554475ee8c
Schaut man sich diese URL näher an fallen die Parameter link_click_count, tweetId und userId ins Auge. Mit anderen Worten, Twitter zählt nicht nur einfach die Klicks, sondern erstellt wohl auch (ziemlich vielsagende) Benutzerprofile, denn wozu sonst sollte zu jedem Klick sowohl Tweet-, als auch Benutzerkennung erfasst werden. Technisch notwendig ist dies jedenfalls nicht. Somit erheben sich sofort einige Fragen welche Twitter beantworten sollte:
Was passiert mit den gespeicherten Daten?
Wie lange werden sie gepseichert?
Für welche Zwecke werden sie eingesetzt?
An wen werden sie weitergeleitet?
Labels: Benutzerprofil, Datenschutz, Twitter