Come funzionano i servizi di URL brevi?


105

Come funzionano servizi come TinyURL o Metamark ?
Associano semplicemente la minuscola chiave URL a una pagina Web [virtuale?] Che fornisce semplicemente un "reindirizzamento HTTP" all'URL originale? o c'è più "magia" in esso?

[testo originale] Uso spesso servizi di accorciamento degli URL come TinyURL, Metamark e altri, ma ogni volta che lo faccio, mi chiedo come funzionano questi servizi. Creano un nuovo file che reindirizzerà a un'altra pagina o utilizzano sottodomini?


1
Per riformulare la domanda [non]: "Come funzionano servizi come TinyURL? Associano semplicemente la piccola chiave URL a una pagina web [virtuale?] Che fornisce semplicemente un" reindirizzamento HTTP "all'URL originale? È questo che cosa stai chiedendo?
mjv

1
Gli URL abbreviati vengono mai scaduti? (cioè le voci del database per quegli URL vengono rimosse dai server)
giovedì

2
@thd: sì, ma può dipendere dagli hit (giornalieri) e dalla politica del provider di servizi di URL brevi. Possono anche consentire la non scadenza, alcuni chiedono un'iscrizione per questo.
Abel

Risposte:


224

No, non usano file. Quando fai clic su un collegamento come quello, viene inviata una richiesta HTTP al loro server con l'URL completo, come http://bit.ly/duSk8wK (collegamenti a questa domanda). Leggono la parte del percorso (qui duSk8wK), che viene mappata al loro database. Nel database trovano una descrizione (a volte), il tuo nome (a volte) e l'URL reale. Quindi emettono un reindirizzamento, che è una risposta HTTP 302 e l'URL di destinazione nell'intestazione.

Questo reindirizzamento diretto è importante. Se dovessi utilizzare i file o caricare prima HTML e poi reindirizzare, il browser aggiungerebbe TinyUrl alla cronologia, che non è quello che desideri. Inoltre, il sito a cui viene reindirizzato vedrà il referrer (il sito da cui provieni originariamente) come il sito su cui si trova il collegamento TinyUrl (cioè twitter.com, il tuo sito, ovunque si trovi il collegamento). Questo è altrettanto importante, in modo che i proprietari dei siti possano vedere da dove provengono le persone. Anche questo non funzionerebbe se una pagina viene caricata che reindirizza.

PS: esistono più tipi di reindirizzamento. HTTP 301 significa: reindirizzamento permanente. Se ciò accadesse, il browser non richiederà più il sito bit.ly o TinyUrl e quei siti vogliono contare gli hit. Ecco perché viene utilizzato HTTP 302, che è un reindirizzamento temporaneo. Il browser chiederà di nuovo TinyUrl.com o bit.ly ogni volta, il che rende possibile contare i risultati per te (alcuni piccoli servizi di URL lo offrono).


2
In realtà penso che Bit.ly usi HTTP 301 invece di 302 (l'ultimo che ho sentito)
Kenny Cason

1
Poiché bit.ly non ti consente di modificare il punto in cui punta uno dei loro URL, 301 ha senso. Non è necessario ricordare la versione bit.ly e ricontrollarla.
Joost Schuur

11
@KennyCason / @Joost Schuur: è infatti HTTP 301 che viene utilizzato, tuttavia, con un timestamp. Questo lo trasforma in un Movedno Moved Permanently. Questa è una sottile differenza. Aggiungendo il timestamp, il browser ritiene di dover controllare se la risorsa è cambiata o meno quando questo timeout è raggiunto. Altri, come is.gd, usano un normale 301 Moved Permanentlye il browser non ha bisogno di ricontrollare (ma spesso lo farà). Infine, servizi come url4.eu non reindirizzano affatto, ma prima ti mostrano un annuncio. Con il 301 i servizi possono ancora contare visitatori unici , ma non tutti gli hit.
Abel

6
L'URL bitly di esempio ora è reale e in realtà reindirizza a questa domanda ;-) Vedi bitly.com/duSk8wK+ per la pagina delle informazioni.
Ronald

1
@Costa: ci sono molti modi per contare i clic, è possibile che tenga traccia dell'ID della tua scheda di rete, che è un modo per monitorare se una richiesta proviene dallo stesso computer. È possibile falsificare o modificare quell'ID, non è infallibile. Inoltre, è possibile che traccia o utilizzi cookie di terze parti che sono stati impostati in precedenza e per lo stesso utente su browser diversi, che puoi verificare cancellando tutti i dati di sessione e utilizzando un browser anonimo.
Abel

110

Altri hanno risposto a come funzionano i reindirizzamenti, ma dovresti anche sapere come generano i loro minuscoli URL. Sentirai erroneamente che creano un hash dell'URL per generare quel codice univoco per l'URL abbreviato. Questo non è corretto nella maggior parte dei casi, non stanno usando un algoritmo di hashing (dove potresti potenzialmente avere collisioni).

La maggior parte dei più diffusi servizi di accorciamento URL prende semplicemente l'ID nel database dell'URL e poi lo converte in Base 36 [a-z0-9] (senza distinzione tra maiuscole e minuscole) o in Base 62 (con distinzione tra maiuscole e minuscole).

Un esempio semplificato di una tabella di database TinyURL:

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

I Web Frameworks che consentono un instradamento flessibile rendono la gestione dell'URL in entrata davvero semplice (Ruby, ASP.NET MVC, ecc.).

Quindi, sul tuo server web potresti avere un'azione di instradamento simile a (pseudo codice):

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

Che indirizza qualsiasi richiesta in arrivo al tuo server con testo dopo il tuo dominio www.mytinyurl.com al tuo metodo associato, RouteURL. Fornisce il testo che viene passato dopo la barra nell'URL a quel metodo.

Quindi, diciamo che hai richiesto: www.mytinyurl.com/fif

"fif" verrebbe quindi passato al metodo, RouteURL (String UrlID). RouteURL convertirà quindi "fif" nel suo equivalente in base10, 20103, e verrà effettuata una richiesta di database per reindirizzare a qualsiasi URL archiviato con l'ID 20103 (in questo caso, www.digg.com). Puoi anche aumentare il numero di visite per Digg di uno prima di reindirizzare all'URL corretto.

Questo è un esempio molto semplificato ma dovresti essere in grado di farti un'idea generale.


12
Grazie per la bella spiegazione. Quindi cosa succede quando qualcuno cerca di creare un URL breve per un URL lungo già esistente? Eseguono una ricerca full text nel database? Non credo perché richiederà troppo tempo. L'approccio basato su hash o digest del messaggio sembra più pratico.
Piyush Kansal

@PiyushKansal potresti usare l'hash internamente per fare una O(1)ricerca per trovare i duplicati; e quindi instradare l'URL minuscolo esistente per quello, o potrebbe scegliere di generarne uno nuovo. Per quanto ne so, goo.glriutilizza i minuscoli URL per lo stesso URL; provalo dalla tua parte per questa pagina: hai capito >> goo.gl/8gVb8X?
Kingz

Come gestiscono i parametri dell'URL? Ad esempio www.digg.com?filter=123
Ronen

7

Come estensione alla risposta di @A Salcedo:

Alcuni servizi di accorciamento degli URL (Tinyarro.ws) vanno all'estremo utilizzando Unicode (UTF-8) per codificare i caratteri in un URL abbreviato, il che consente una maggiore quantità di siti Web prima di dover aggiungere simboli aggiuntivi. Poiché la maggior parte di UTF-8 è accettata per l'uso ( (IRI) RFC 3987 gestito dalla maggior parte dei browser ), il passaggio dai 62siti per simbolo a ~ 1,112,064.

Per mettere in prospettiva si può codificare 1.2366863e + 12 siti con 2 simboli ( 1,112,064*1,112,064) - nel novembre 2009, i collegamenti abbreviati su bit.lysono stati consultati 2.1miliardi di volte (in quel periodo, bit.ly e TinyURL erano i servizi di abbreviazione URL più utilizzati. ) che è ~ 600 volte inferiore a quello che puoi inserire in soli 2 simboli, quindi per l'intera durata dell'esistenza di tutti i servizi di accorciamento URL dovrebbe durare almeno altri 20 anni fino all'aggiunta del terzo simbolo.


5

In parole semplici, accorciatore di URL mappa una lunga sequenza arbitraria di caratteri (URL originale, lungo e schifoso) in una sequenza di caratteri breve e liscia. Questo non è altro che Hashing, che è più comunemente usato per creare tabelle di ricerca, HashMap, Hash md5 per scopi crittografici, ecc.

Per comprendere il processo di accorciamento degli URL ho creato un progetto demo su GitHub e anche un post sul blog. Fai riferimento a questo e fammi sapere se è stato utile.

Post sul blog: accorciamento dell'URL

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.