Hoe werken diensten met korte URL’s?

Hoe werken services zoals TinyURLof Metamarkwerken?
Koppelen ze eenvoudigweg de kleine URL-sleutel aan een [virtuele?] webpagina die alleen een “HTTP-omleiding” naar de oorspronkelijke URL biedt? of zit er meer “magie” in?

[oorspronkelijke bewoording]
Ik gebruik vaak URL-verkortingsservices zoals TinyURL, Metamark en anderen, maar elke keer als ik dat doe, vraag ik me af hoe deze services werken. Maken ze een nieuw bestand dat doorverwijst naar een andere pagina of gebruiken ze subdomeinen?


Antwoord 1, autoriteit 100%

Nee, ze gebruiken geen bestanden. Als je op zo’n link klikt, wordt er een HTTP-verzoek naar hun server gestuurd met de volledige URL, zoals http://bit. ly/duSk8wK(links naar deze vraag). Ze lezen het padgedeelte (hier duSk8wK), dat naar hun database verwijst. In de database vinden ze een beschrijving (soms), je naam (soms) en de echte URL. Vervolgens geven ze een omleiding uit, wat een HTTP 302-antwoord is en de doel-URL in de koptekst.

Deze directe omleiding is belangrijk. Als je bestanden zou gebruiken of eerst HTML zou laden en vervolgens zou omleiden, zou de browser TinyUrl aan de geschiedenis toevoegen, wat niet is wat je wilt. De site waarnaar wordt doorverwezen, ziet de verwijzer (de site waar u oorspronkelijk vandaan komt) ook als de site waarop de TinyUrl-link zich bevindt (d.w.z. twitter.com, uw eigen site, waar de link zich ook bevindt). Dit is net zo belangrijk, zodat site-eigenaren kunnen zien waar mensen vandaan komen. Ook dit zou niet werken als een pagina wordt geladen die omleidt.

PS: er zijn meer soorten omleidingen. HTTP 301 betekent: permanent omleiden. Als dat zou gebeuren, zal de browser de bit.ly- of TinyUrl-site niet meer opvragen en willen die sites de hits tellen. Daarom wordt HTTP 302 gebruikt, wat een tijdelijke omleiding is. De browser vraagt ​​telkens opnieuw TinyUrl.com of bit.ly, waardoor het mogelijk is om de hits voor je te tellen (sommige tiny url-services bieden dit aan).


Antwoord 2, autoriteit 48%

Anderen hebben geantwoord hoe de omleidingen werken, maar u moet ook weten hoe ze hun kleine urls genereren. U hoort ten onrechte dat ze een hash van de URL maken om die unieke code voor de verkorte URL te genereren. Dit is in de meeste gevallen onjuist, ze gebruiken geen hash-algoritme (waarbij je mogelijk botsingen kunt krijgen).

De meeste populaire URL-verkortingsservices nemen gewoon de ID in de database van de URL en converteren deze vervolgens naar Base 36 [a-z0-9] (hoofdlettergevoelig) of Base 62 (hoofdlettergevoelig).

Een vereenvoudigd voorbeeld van een TinyURL-databasetabel:

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

Webframeworks die flexibele routering mogelijk maken, maken het verwerken van de inkomende URL’s heel eenvoudig (Ruby, ASP.NET MVC, enz.).

Dus op uw webserver heeft u mogelijk een routeactie die eruitziet als (pseudocode):

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

Die elk binnenkomend verzoek naar uw server met tekst na uw domein www.mytinyurl.com doorstuurt naar de bijbehorende methode, RouteURL. Het levert de tekst die wordt doorgegeven na de schuine streep in uw URL naar die methode.

Dus laten we zeggen dat je hebt gevraagd: www.mytinyurl.com/fif

“fif” zou dan worden doorgegeven aan uw methode, RouteURL(String UrlID). RouteURL zou dan “fif” converteren naar zijn base10-equivalent, 20103, en er zal een databaseverzoek worden gedaan om door te verwijzen naar de URL die is opgeslagen onder de ID 20103 (in dit geval www.digg.com). U zou ook het aantal bezoeken voor Digg met één verhogen voordat u doorverwijst naar de juiste URL.

Dit is een heel vereenvoudigd voorbeeld, maar u zou het algemene idee moeten kunnen begrijpen.


Antwoord 3, autoriteit 3%

Als uitbreiding op @A Salcedo antwoord:

Sommige diensten voor het verkorten van url’s (Tinyarro.ws) gaan tot het uiterste door Unicode (UTF-8) te gebruiken om tekens in verkorte url’s te coderen – waardoor een groter aantal websites mogelijk is voordat een extra symbool moet worden toegevoegd. Aangezien de meeste UTF-8 worden geaccepteerd voor gebruik((IRI) RFC 3987 verwerkt door de meeste browsers) die van 62sites per symbool naar ~1,112,064.

Om in perspectief te plaatsen kan men 1.2366863e+12 sites coderen met 2 symbolen (1,112,064*1,112,064) – in november 2009 werden verkorte links op bit.lygebruikt 2.1miljard keer (In die tijd waren bit.ly en TinyURL de meest gebruikte URL-verkortingsservices.) wat ~600 keer minder is dan u in slechts 2 symbolen kunt passen, dus voor de volledige duur van het bestaan ​​van alle URL-verkortingsservices moet het nog minimaal 20 jaar meegaan tot het toevoegen van een derde symbool .


Antwoord 4, autoriteit 3%

In eenvoudige bewoordingen zet URL-verkorter een willekeurige lange reeks tekens ( originele, lange waardeloze url ) om in een korte en gladde reeks tekens. Dit is niets anders dan hashing, dat meestal wordt gebruikt om opzoektabellen, HashMap, md5 Hash voor cryptografische doeleinden enz. te maken.

Om het URL-verkortingsproces te begrijpen, heb ik een demoproject op GitHub gemaakt en ook een blogpost. Raadpleeg dit en laat me weten of het nuttig was.

Blogpost: URL-verkorting

Other episodes