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?
web-services
url
url-shortener
bit.ly
short-url
Nathan Campos
quelle
quelle
Antworten:
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).
quelle
Moved
NichtMoved 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 normales301 Moved Permanently
und 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.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:
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):
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.
quelle
O(1)
nach Duplikaten zu suchen. und dann die vorhandene winzige URL dafür weiterleiten oder eine neue generieren. Soweit ich dasgoo.gl
beurteilen 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
?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
62
Websites pro Symbol auf ~ verschoben1,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 Linksbit.ly
zugegriffen2.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.quelle
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
quelle