Wie funktionieren Dienste für kurze URLs?

105

Wie funktionieren Dienste wie TinyURL oder Metamark ?
Verknüpfen sie einfach den winzigen URL-Schlüssel mit einer [virtuellen?] Webseite, die lediglich eine "HTTP-Umleitung" zur ursprünglichen URL bereitstellt? oder steckt mehr "Magie" dahinter?

[ursprünglicher Wortlaut] Ich verwende häufig URL-Verkürzungsdienste wie TinyURL, Metamark und andere, aber jedes Mal frage ich mich, wie diese Dienste funktionieren. Erstellen sie eine neue Datei, die auf eine andere Seite umleitet, oder verwenden sie Subdomains?

Nathan Campos
quelle
1
Um die [Nicht-] Frage neu zu formulieren: "Wie funktionieren Dienste wie TinyURL? Verknüpfen sie einfach den winzigen URL-Schlüssel mit einer [virtuellen?] Webseite, die lediglich eine" HTTP-Umleitung "zur ursprünglichen URL bereitstellt? fragen?
mjv
1
Werden die verkürzten URLs jemals abgelaufen? (dh die Datenbankeinträge für diese URLs werden von den Servern entfernt)
26.
2
@thd: Ja, aber es kann von (täglichen) Treffern und der Richtlinie des Anbieters von Kurz-URL-Diensten abhängen. Sie können auch zulassen, dass sie niemals ablaufen. Einige verlangen eine Mitgliedschaft dafür.
Abel
Mögliches Duplikat von Wie funktioniert ein URL Shortener?
Roottraveller

Antworten:

224

Nein, sie verwenden keine Dateien. Wenn Sie auf einen solchen Link klicken, wird eine HTTP-Anfrage mit der vollständigen URL an den Server gesendet, z. B. http://bit.ly/duSk8wK (Links zu dieser Frage). Sie lesen den Pfadteil (hier duSk8wK), der ihrer Datenbank zugeordnet ist. In der Datenbank finden sie eine Beschreibung (manchmal), Ihren Namen (manchmal) und die tatsächliche URL. Anschließend geben sie eine Umleitung aus, bei der es sich um eine HTTP 302-Antwort und die Ziel-URL im Header handelt.

Diese direkte Weiterleitung ist wichtig. Wenn Sie Dateien verwenden oder zuerst HTML laden und dann umleiten würden, würde der Browser TinyUrl zum Verlauf hinzufügen, was nicht das ist, was Sie wollen. Auf der Site, zu der umgeleitet wird, wird der Referrer (die Site, von der Sie ursprünglich stammen) als die Site angesehen, auf der sich der TinyUrl-Link befindet (dh twitter.com, Ihre eigene Site, wo immer sich der Link befindet). Dies ist genauso wichtig, damit Websitebesitzer sehen können, woher die Leute kommen. Auch dies würde nicht funktionieren, wenn eine Seite geladen wird, die umleitet.

PS: Es gibt mehr Arten der Weiterleitung. HTTP 301 bedeutet: permanent umleiten. In diesem Fall fordert der Browser die bit.ly- oder TinyUrl-Site nicht mehr an und diese Sites möchten die Treffer zählen. Aus diesem Grund wird HTTP 302 verwendet, eine vorübergehende Umleitung. Der Browser fragt TinyUrl.com oder bit.ly jedes Mal erneut, wodurch es möglich ist, die Treffer für Sie zu zählen (einige winzige URL-Dienste bieten dies an).

Abel
quelle
2
Eigentlich denke ich, Bit.ly verwendet HTTP 301 anstelle von 302 (das letzte, was ich gehört habe)
Kenny Cason
1
Da Sie mit bit.ly nicht ändern können, wohin eine ihrer URLs verweist, ist 301 sinnvoll. Sie müssen sich nicht an die bit.ly-Version erinnern und diese erneut überprüfen.
Joost Schuur
11
@KennyCason / @Joost Schuur: Es wird zwar HTTP 301 verwendet, jedoch mit einem Zeitstempel. Dies macht es zu einem MovedNicht Moved Permanently. Dies ist ein subtiler Unterschied. Durch Hinzufügen des Zeitstempels sollte der Browser prüfen, ob die Ressource geändert wird, wenn dieses Zeitlimit erreicht ist. Andere, wie is.gd, verwenden ein normales 301 Moved Permanentlyund der Browser muss nicht erneut überprüfen (wird es aber oft tun ). Schließlich leiten Dienste wie url4.eu überhaupt nicht weiter, sondern zeigen Ihnen zuerst eine Werbung. Mit dem 301 können die Dienste immer noch eindeutige Besucher zählen , aber nicht alle Treffer.
Abel
6
Die beispielhafte bitly URL ist jetzt eine echte und leitet tatsächlich zurück zu dieser Frage ;-) Die Infoseite finden Sie unter bitly.com/duSk8wK+ .
Ronald
1
@Costa: Es gibt viele Möglichkeiten, Klicks zu zählen. Es ist möglich, dass Ihre Netzwerkkarten-ID verfolgt wird. Auf diese Weise können Sie verfolgen, ob eine Anfrage von demselben Computer stammt. Es ist möglich, diese ID zu fälschen oder zu ändern, sie ist nicht narrensicher. Es ist auch möglich, dass zuvor gesetzte Cookies von Drittanbietern und für denselben Benutzer in verschiedenen Browsern nachverfolgt oder verwendet werden. Dies können Sie überprüfen, indem Sie alle Sitzungsdaten löschen und einen anonymen Browser verwenden.
Abel
110

Andere haben geantwortet, wie die Weiterleitungen funktionieren, aber Sie sollten auch wissen, wie sie ihre winzigen URLs generieren. Sie werden fälschlicherweise hören, dass sie einen Hash der URL erstellen, um diesen eindeutigen Code für die verkürzte URL zu generieren. Dies ist in den meisten Fällen falsch. Sie verwenden keinen Hashing-Algorithmus (bei dem möglicherweise Kollisionen auftreten können).

Die meisten gängigen URL-Verkürzungsdienste nehmen einfach die ID in die Datenbank der URL und konvertieren sie dann entweder in Base 36 [a-z0-9] (ohne Berücksichtigung der Groß- und Kleinschreibung) oder in Base 62 (ohne Berücksichtigung der Groß- und Kleinschreibung).

Ein vereinfachtes Beispiel für eine TinyURL-Datenbanktabelle:

ID       URL                           VisitCount
 1       www.google.com                        26
 2       www.stackoverflow.com               2048
 3       www.reddit.com                        64
...
 20103   www.digg.com                         201
 20104   www.4chan.com                         20

Web Frameworks, die flexibles Routing ermöglichen, erleichtern die Handhabung der eingehenden URLs (Ruby, ASP.NET MVC usw.).

Auf Ihrem Webserver haben Sie möglicherweise eine Routenaktion, die wie folgt aussieht (Pseudocode):

Route: www.mytinyurl.com/{UrlID}
Route Action: RouteURL(UrlID);

Welche leitet eine eingehende Anfrage an Ihren Server weiter, der Text nach Ihrer Domain www.mytinyurl.com enthält, an Ihre zugeordnete Methode RouteURL. Es liefert den Text, der nach dem Schrägstrich in Ihrer URL an diese Methode übergeben wird.

Angenommen, Sie haben Folgendes angefordert: www.mytinyurl.com/fif

"fif" wird dann an Ihre Methode RouteURL (String UrlID) übergeben. RouteURL konvertiert dann "fif" in sein base10-Äquivalent 20103, und es wird eine Datenbankanforderung gestellt, um zu einer beliebigen URL umzuleiten, die unter der ID 20103 gespeichert ist (in diesem Fall www.digg.com). Sie würden auch die Anzahl der Besuche für Digg um eins erhöhen, bevor Sie zur richtigen URL umleiten.

Dies ist ein wirklich vereinfachtes Beispiel, aber Sie sollten in der Lage sein, sich einen Überblick zu verschaffen.

Ein Salcedo
quelle
12
Danke für die nette Erklärung. Was passiert also, wenn jemand versucht, eine kurze URL für eine bereits vorhandene lange URL zu erstellen? Führen sie eine Volltextsuche in der Datenbank durch? Ich denke nicht, da es zu zeitaufwändig sein wird. Ein auf Hash oder Message Digest basierender Ansatz sieht praktischer aus.
Piyush Kansal
@PiyushKansal Sie können den Hash intern verwenden, um O(1)nach Duplikaten zu suchen. und dann die vorhandene winzige URL dafür weiterleiten oder eine neue generieren. Soweit ich das goo.glbeurteilen kann, werden die winzigen URLs für dieselbe URL wiederverwendet. Versuchen Sie dies auf Ihrer Seite für diese Seite: Erhalten Sie diese >> goo.gl/8gVb8X?
Kingz
Wie gehen sie mit URL-Parametern um? Zum Beispiel www.digg.com?filter=123
Ronen
7

Als Erweiterung zu @A Salcedo Antwort:

Einige URL-Verkürzungsdienste (Tinyarro.ws) gehen extrem vor, indem Unicode (UTF-8) zum Codieren von Zeichen in verkürzter URL verwendet wird. Dies ermöglicht eine größere Anzahl von Websites, bevor zusätzliche Symbole hinzugefügt werden müssen. Da der größte Teil von UTF-8 für die Verwendung akzeptiert wird ( (IRI) RFC 3987, der von den meisten Browsern verarbeitet wird ), werden die 62Websites pro Symbol auf ~ verschoben 1,112,064.

In der Perspektive kann man 1.2366863e + 12 Sites mit 2 Symbolen ( 1,112,064*1,112,064) codieren - im November 2009 wurde milliardenfach auf verkürzte Links bit.lyzugegriffen 2.1(zu dieser Zeit waren bit.ly und TinyURL die am häufigsten verwendeten URL-Verkürzungsdienste. ) Das ist ~ 600-mal weniger, als Sie in nur 2 Symbole einfügen können. Für die volle Existenz aller URL-Verkürzungsdienste sollte es also mindestens weitere 20 Jahre dauern, bis das dritte Symbol hinzugefügt wird.

Matas Vaitkevicius
quelle
5

Mit einfachen Worten, der URL-Shortener ordnet eine beliebige lange Zeichenfolge (ursprüngliche, lange, beschissene URL) einer kurzen und übersichtlichen Zeichenfolge zu. Dies ist nichts anderes als Hashing, das am häufigsten zum Erstellen von Nachschlagetabellen, HashMap, MD5-Hash für kryptografische Zwecke usw. verwendet wird.

Um den URL-Shortening-Prozess zu verstehen, habe ich ein Demo-Projekt auf GitHub und einen Blog-Beitrag erstellt. Beziehen Sie sich darauf und lassen Sie mich wissen, ob es hilfreich war.

Blog Post: URL-Verkürzung

Anand Joshi
quelle