Come funziona un accorciatore di URL? [chiuso]


87

Mi chiedo come funzioni un accorciatore di URL, ad esempio come estraggono il testo dalla barra degli indirizzi e lo mappano per correggere l'URL, per poi reindirizzarlo. Che linguaggio di programmazione usano? Come mantengono la cronologia della mappatura? Come assicurano l'unicità dell'URL abbreviato? Come può un profano annullare la mappatura senza visitare l'URL?


64
solo 3 voti vicini? dai, vuole imparare qualcosa, chiudila più velocemente !!!
IAdapter

22
Questa era la domanda esatta che avevo e sono molto deluso nel vedere che è chiuso. Non è ambiguo o incompleto: è molto specifico in ciò che chiede.
ladro di puntine da disegno

3
@bmargulies Penso che la domanda non dovrebbe essere chiusa, questo è stato molto utile e anche le risposte, penso anche a 43 voti positivi e hai deciso di chiuderla .. perché ??
Amruth A

Risposte:


38

Wiki è tuo amico

Fondamentalmente, un sito Web con un nome più breve viene utilizzato come segnaposto, ad esempio bit.ly.

Quindi, bit.ly genera una chiave che l'utente deve fornire, che viene generata casualmente per non ripetersi. Con 35 opzioni di carattere e circa 8 valori, fai i conti. Sono molte le possibili chiavi. Se un URL è uguale a una chiave esistente in precedenza, ricordo di aver letto da qualche parte che anche loro riutilizzano le chiavi.

Non usano realmente un linguaggio di programmazione specifico, usano solo un semplice reindirizzamento URL, che può essere fatto con HTML credo.


oh questo è fantastico. Grazie mille
prap19

25
Il reindirizzamento NON viene eseguito con HTML, ma con gli header HTTP. (Codice di stato 301 o 302, a seconda).
Yahel

Ah ok, avrebbe più senso. Grazie per il chiarimento.
Daniel G. Wilson

Devono utilizzare l'intestazione Posizione per eseguire il reindirizzamento.
Jeevan Patil

25

Gli abbreviazioni URL generano semplicemente uno shortcode, mappano l'URL di destinazione allo shortcode e forniscono un nuovo URL. La visita all'URL esegue una ricerca nel database con lo shortcode come chiave e ti reindirizza all'URL di destinazione. Non esiste alcuna associazione algoritmica tra un URL abbreviato e un URL di destinazione, quindi non puoi "annullarne la mappatura" senza passare attraverso i sistemi dell'URL shortener.

Puoi farlo con qualsiasi linguaggio di programmazione e archivio dati. Anche la generazione del codice è banale per garantire l'unicità; se avessi una chiave intera primaria incrementale, potresti semplicemente codificare la chiave come base62 e servirla. Poiché i codici sono di natura incrementale, non avrai mai un conflitto.


19

Il processo è piuttosto semplice in realtà: c'è uno script che richiede l'URL, genera una stringa casuale (e verifica che questa stringa non sia già utilizzata) e inserisce i due in una sorta di database. Quando richiedi un URL, un altro script cerca nel database la stringa casuale e, se viene trovata, ti reindirizza al sito.

Questo è ovviamente più complicato in produzione a causa delle funzionalità necessarie come prevenzione degli abusi, filtro URL, prevenzione dello spam, verifica dell'URL, ecc.


La lingua è irrilevante, per lo più chiunque lo farà.


9
"e verifica che questa stringa non sia già utilizzata" .. COME? Questa è la domanda più grande
Stewie

3
@Stewie: SELECT * FROM mappings WHERE key = stringToCheck e controlla se vengono restituite righe? O qualsiasi cosa simile nella lingua scelta dal database. Ad essere onesti, sembra che la parte più semplice dell'intero problema.
David Liu

@Stewie Oppure possono usare una HashMap per mappare<key, url>
roottraveller,

@DavidLiu Non sarebbe necessario continuare a rigenerare e inviare query fino a quando non produce risultati? Man mano che le dimensioni dei dati aumentano, il tempo per il controllo aumenta. Nella peggiore delle ipotesi, il numero di query al tuo DB sarà n-1 dove n è il numero di "stringhe"; cosa succede quando hai 100 M di stringhe?
Stewie

@Stewie Questa è una domanda completamente diversa, un problema con il principio della soluzione stessa. Hai ragione sul fatto che il problema della rigenerazione alla fine sarebbe diventato un problema, ma ancora una volta, è per questo che ho detto che "verificare che la stringa non sia già utilizzata" è la parte più facile della soluzione. Ci sono molte soluzioni alternative per fare casuale senza sostituzione.
David Liu
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.