102 votes

Comment fonctionnent les services d'URL courts ?

Comment des services tels que TinyURL o Metamark travail ?
Associent-ils simplement la petite clé URL à une page web [virtuelle ?] qui fournit simplement une "redirection HTTP" vers l'URL d'origine ? ou y a-t-il plus de "magie" ?

[texte original] J'utilise souvent des services de raccourcissement d'URL comme TinyURL, Metamark et d'autres, mais à chaque fois, je me demande comment ces services fonctionnent. Créent-ils un nouveau fichier qui redirige vers une autre page ou utilisent-ils des sous-domaines ?

220voto

Abel Points 24335

Non, ils n'utilisent pas de fichiers. Lorsque vous cliquez sur un tel lien, une requête HTTP est envoyée à leur serveur avec l'URL complète, par exemple http://bit.ly/duSk8wK (liens vers cette question). Ils lisent la partie chemin (ici duSk8wK ), qui renvoie à leur base de données. Dans la base de données, ils trouvent une description (parfois), votre nom (parfois) et l'URL réelle. Ensuite, ils émettent une redirection, qui est une réponse HTTP 302 et l'URL cible dans l'en-tête.

Cette redirection directe est importante. Si vous deviez utiliser des fichiers ou charger d'abord du HTML puis rediriger, le navigateur ajouterait TinyUrl à l'historique, ce qui n'est pas ce que vous souhaitez. De plus, le site vers lequel vous êtes redirigé verra le référent (le site d'où vous venez à l'origine) comme étant le site sur lequel se trouve le lien TinyUrl (c'est-à-dire twitter.com, votre propre site, où que se trouve le lien). C'est tout aussi important pour que les propriétaires de sites puissent voir d'où viennent les internautes. Cela ne fonctionnera pas non plus si une page est chargée et redirigée.

PS : il existe d'autres types de redirection. HTTP 301 signifie : redirection permanente. Si cela se produit, le navigateur ne demandera plus le site bit.ly ou TinyUrl et ces sites veulent compter les visites. C'est pourquoi on utilise HTTP 302, qui est une redirection temporaire. Le navigateur demandera à nouveau TinyUrl.com ou bit.ly à chaque fois, ce qui permet de compter les hits pour vous (certains services de tiny url offrent cette possibilité).

106voto

A Salcedo Points 2304

D'autres ont répondu à la question de savoir comment fonctionnent les redirections, mais vous devez également savoir comment elles génèrent leurs petites URL. Vous entendrez à tort qu'ils créent un hachage de l'URL afin de générer ce code unique pour l'URL raccourcie. C'est faux dans la plupart des cas, car ils n'utilisent pas d'algorithme de hachage (où il pourrait y avoir des collisions).

La plupart des services de raccourcissement d'URL populaires prennent simplement l'identifiant de l'URL dans la base de données et le convertissent en base 36 [a-z0-9] (insensible à la casse) ou en base 62 (sensible à la casse).

Exemple simplifié d'une table de base de données 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

Les frameworks web qui permettent un routage flexible facilitent la gestion des URL entrantes (Ruby, ASP.NET MVC, etc.).

Ainsi, sur votre serveur web, vous pouvez avoir une action de route qui ressemble à (pseudo-code) :

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

qui achemine toute requête entrante vers votre serveur qui contient du texte après votre domaine www.mytinyurl.com vers votre méthode associée, RouteURL. Elle fournit à cette méthode le texte qui est passé après la barre oblique de votre URL.

Disons que vous avez demandé : www.mytinyurl.com/fif

"fif" serait alors transmis à votre méthode, RouteURL(String UrlID). RouteURL convertirait alors "fif" en son équivalent en base10, 20103, et une requête de base de données serait effectuée pour rediriger vers l'URL stockée sous l'ID 20103 (dans ce cas, www.digg.com). Vous augmenterez également le nombre de visites pour Digg d'une unité avant de rediriger vers l'URL correcte.

Il s'agit d'un exemple très simplifié, mais vous devriez pouvoir en saisir l'idée générale.

7voto

LIUFA Points 3642

En complément de la réponse de @A Salcedo :

Certains services de raccourcissement d'url (Tinyarro.ws) vont jusqu'à utiliser l'Unicode (UTF-8) pour encoder les caractères dans l'url raccourcie - ce qui permet d'ajouter un plus grand nombre de sites web sans avoir à ajouter de symbole supplémentaire. Étant donné que la plupart des services de raccourcissement d'url L'utilisation de UTF-8 est acceptée ( (IRI) RFC 3987 géré par la plupart des navigateurs ) qui passe de 62 sites par symbole à ~ 1,112,064 .

Pour mettre les choses en perspective, on peut coder 1,2366863e+12 sites avec 2 symboles ( 1,112,064*1,112,064 ) - en novembre 2009, les liens raccourcis sur les sites web de la bit.ly ont été consultés 2.1 milliards de fois ( À cette époque, bit.ly et TinyURL étaient les services de raccourcissement d'URL les plus utilisés. ), ce qui est ~600 fois moins que ce que l'on peut faire tenir dans 2 symboles seulement, donc pour la durée totale d'existence de tous les services de raccourcissement d'url, cela devrait durer encore 20 ans minimum jusqu'à l'ajout d'un troisième symbole.

7voto

Anand Joshi Points 91

En d'autres termes, le raccourcisseur d'URL transforme une longue séquence arbitraire de caractères (l'url originale, longue et merdique) en une séquence de caractères courte et élégante. Ce n'est rien d'autre que du hachage, qui est le plus souvent utilisé pour créer des tables de recherche, des cartes de hachage, des hachages md5 à des fins cryptographiques, etc.

Pour comprendre le processus de raccourcissement d'URL, j'ai créé un projet de démonstration sur GitHub ainsi qu'un article de blog. N'hésitez pas à vous y référer et à me faire savoir si cela vous a été utile.

Blog Post : Raccourcissement d'URL

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X