Wie funktioniert ein URL Shortener? [geschlossen]

86

Ich frage mich, wie ein URL-Shortener funktioniert, beispielsweise wie er den Text aus der Adressleiste extrahiert und ihn der richtigen URL zuordnet und später umleitet. Welche Programmiersprache verwenden sie? Wie pflegen sie den Verlauf des Mappings? Wie stellen sie die Eindeutigkeit der verkürzten URL sicher? Wie kann ein Laie die Zuordnung aufheben, ohne die URL zu besuchen?

prap19
quelle
64
nur 3 enge Stimmen? Komm schon, er will etwas lernen, es schneller schließen !!!
IAdapter
22
Dies war genau die Frage, die ich hatte und ich bin sehr enttäuscht zu sehen, dass es geschlossen ist. Es ist nicht mehrdeutig oder unvollständig - er ist sehr spezifisch in dem, was er fragt.
Thumbtackthief
3
@bmargulies Ich denke, Frage sollte nicht geschlossen werden, das war sehr hilfreich und sogar Antworten, denke auch 43 Upvotes und du hast beschlossen, es geschlossen zu werden .. warum?
Amruth A

Antworten:

38

Wiki ist dein Freund

Grundsätzlich wird eine Website mit einem kürzeren Namen als Platzhalter verwendet, z. B. bit.ly.

Dann generiert bit.ly einen Schlüssel, den der Benutzer bereitstellen muss, der zufällig generiert wird, um ihn nicht zu wiederholen. Rechnen Sie mit 35 Zeichenoptionen und etwa 8 Werten. Das sind viele mögliche Schlüssel. Wenn eine URL einem zuvor vorhandenen Schlüssel entspricht, erinnere ich mich, dass ich irgendwo gelesen habe, dass sie auch Schlüssel wiederverwenden.

Sie verwenden nicht wirklich eine bestimmte Programmiersprache, sondern nur eine einfache URL-Umleitung, die meiner Meinung nach mit HTML durchgeführt werden kann.

Daniel G. Wilson
quelle
Oh, das ist cool. Vielen Dank
prap19
25
Die Umleitung erfolgt NICHT mit HTML, sondern mit HTTP-Headern. (Statuscode 301 oder 302, abhängig).
Yahel
Ah okay, das würde mehr Sinn machen. Danke für die Klarstellung.
Daniel G. Wilson
Sie müssen den Standort-Header verwenden, um umzuleiten.
Jeevan Patil
25

URL-Shortner generieren einfach einen Shortcode, ordnen die Ziel-URL dem Shortcode zu und geben eine neue URL an. Durch den Besuch der URL wird eine Datenbanksuche mit dem Shortcode als Schlüssel durchgeführt und Sie werden zur Ziel-URL weitergeleitet. Es gibt keine algorithmische Zuordnung zwischen einer verkürzten URL und einer Ziel-URL, sodass Sie die Zuordnung nicht aufheben können, ohne die Systeme des URL-Verkürzers zu durchlaufen.

Sie können dies mit jeder Programmiersprache und jedem Datenspeicher tun. Die Codegenerierung ist trivial, um auch die Eindeutigkeit zu gewährleisten. Wenn Sie einen inkrementierenden primären Ganzzahlschlüssel hätten, könnten Sie den Schlüssel einfach als base62 codieren und diesen bereitstellen. Da Codes inkrementeller Natur sind, kommt es nie zu Konflikten.

Chris Heald
quelle
19

Der Vorgang ist eigentlich ziemlich einfach: Dort gibt es ein Skript, das nach der URL fragt, eine zufällige Zeichenfolge generiert (und überprüft, ob diese Zeichenfolge noch nicht verwendet wurde) und die beiden in eine Art Datenbank stellt. Wenn Sie eine URL anfordern, sucht ein anderes Skript in der Datenbank nach der zufälligen Zeichenfolge, und wenn sie gefunden wird, werden Sie zur Site weitergeleitet.

Dies ist in der Produktion natürlich komplizierter, da Funktionen wie Missbrauchsprävention, URL-Filterung, Spam-Prävention, URL-Überprüfung usw. benötigt werden. Diese sind jedoch recht einfach zu implementieren.


Die Sprache ist irrelevant, meistens wird es jeder tun.

TheLQ
quelle
9
"und überprüft, ob diese Zeichenfolge noch nicht verwendet wurde" .. WIE? Dies ist die größte Frage
Stewie
3
@Stewie: SELECT * FROM Mappings WHERE key = stringToCheck, und prüfen, ob Zeilen zurückgegeben werden? Oder eine ähnliche Sache in der Datenbanksprache Ihrer Wahl. Scheint der einfachste Teil des gesamten Problems zu sein, um ehrlich zu sein.
David Liu
@Stewie Oder sie können eine HashMap verwenden , um<key, url>
roottraveller
@DavidLiu Müsste man nicht so lange neu generieren und Abfragen ausgeben, bis keine Ergebnisse mehr ausgegeben werden? Mit zunehmender Datengröße wächst die Zeit für die Überprüfung. Im schlimmsten Fall beträgt die Anzahl der Abfragen an Ihre Datenbank n-1, wobei n die Anzahl der "Zeichenfolgen" ist. Was passiert, wenn Sie 100 Millionen Zeichenfolgen haben?
Stewie
@Stewie Das ist eine ganz andere Frage, ein Problem mit dem Prinzip der Lösung selbst. Sie haben Recht, dass das Regenerationsproblem irgendwann zu einem Problem werden würde, aber aus diesem Grund habe ich gesagt, dass "Überprüfen, ob die Zeichenfolge noch nicht verwendet wurde" der einfache Teil der Lösung ist. Es gibt viele alternative Lösungen, die zufällig ohne Ersatz durchgeführt werden können.
David Liu