it-swarm.com.de

Wie funktionieren Dienste für kurze URLs?

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

[ursprüngliche Formulierung] 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 umgeleitet wird, oder verwenden sie Unterdomänen?

99
Nathan Campos

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), die ihrer Datenbank zugeordnet sind. In der Datenbank finden sie eine Beschreibung (manchmal), Ihren Namen (manchmal) und die reale URL. Dann geben sie eine Umleitung aus, die eine HTTP 302-Antwort und die Ziel-URL im Header ist.

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 Website, zu der umgeleitet wird, wird der Verweiser (die Website, von der Sie ursprünglich stammen) als die Website angesehen, auf der sich der TinyUrl-Link befindet (d. H. Twitter.com, Ihre eigene Website, wo auch 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 von Weiterleitungen. 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 temporäre Weiterleitung. Der Browser fragt jedes Mal erneut TinyUrl.com oder bit.ly, wodurch es möglich ist, die Treffer für Sie zu zählen (einige winzige URL-Dienste bieten dies an).

218
Abel

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 der gängigen URL-Kürzungsdienste nehmen einfach die ID in die Datenbank der URL und konvertieren sie dann entweder in Base 36 [a-z0-9] (Groß-/Kleinschreibung beachten) oder Base 62 (Groß-/Kleinschreibung beachten).

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, vereinfachen die Verarbeitung eingehender URLs (Ruby, ASP.NET MVC usw.).

Auf Ihrem Webserver könnten Sie also eine Routenaktion haben, die wie folgt aussieht (Pseudocode):

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

Welche Weiterleitung eingehender Anfragen an Ihren Server, die Text nach Ihrer Domain www.mytinyurl.com enthalten, an Ihre zugeordnete Methode, RouteURL. Es liefert den Text, der nach dem Schrägstrich in Ihrer URL an diese Methode übergeben wird.

Nehmen wir an, Sie haben Folgendes angefordert: www.mytinyurl.com/fif

"fif" würde dann an Ihre Methode RouteURL (String UrlID) übergeben. RouteURL konvertiert dann "fif" in sein Base10-Äquivalent 20103, und es wird eine Datenbankanforderung gesendet, um zu der 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 sehr vereinfachtes Beispiel, aber Sie sollten in der Lage sein, sich einen Überblick zu verschaffen.

105
A Salcedo

Als Erweiterung zu @A Salcedo antworten:

Einige URL-Verkürzungsdienste (Tinyarro.ws) verwenden Unicode (UTF-8), um Zeichen in einer verkürzten URL zu kodieren. Dies ermöglicht eine höhere Anzahl von Websites, bevor zusätzliche Symbole hinzugefügt werden müssen. Da die meisten von TF-8 wird zur Verwendung akzeptiert ( (IRI) RFC 3987 von den meisten Browsern behandelt ), dass stößt von 62 Sites pro Symbol zu ~ 1,112,064.

In Perspektive kann man 1.2366863e + 12 Stellen mit 2 Symbolen kodieren (1,112,064*1,112,064) - im November 2009 gekürzte Links zu bit.ly wurde abgerufen 2.1 milliardenfach ( Zu dieser Zeit waren bit.ly und TinyURL die am häufigsten verwendeten URL-Kürzungsdienste. ) Das ist ca. 600-mal weniger als Sie in nur 2 Symbole passen können, also voll Die Lebensdauer aller URL-Verkürzungsdienste sollte mindestens weitere 20 Jahre betragen, bis das dritte Symbol hinzugefügt wird.

7

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 auch einen Blog-Beitrag erstellt. Verweisen Sie darauf und lassen Sie mich wissen, ob es hilfreich war.

Blog Post: RL Shortening

3
Anand Joshi