# Réduction d'URL

La réduction d'URL (ou création de lien court) est une technique utilisée sur Internet qui permet de rendre une page accessible par l'intermédiaire d'une très courte URL.

## Principe

Le principe général de la réduction d'URL consiste à assigner une clé unique de quelques caractères à une page web spécifique. Un utilisateur désirant se rendre sur cette page web peut ensuite simplement fournir cette clé à la suite du nom de domaine d'un tel service de réduction, qui le redirige (redirection d'URL) alors vers la page appropriée.
Une clé est générée si un utilisateur du service en fait la demande pour une page spécifique. Les modalités de génération de cette clé varient suivant les implémentations :
* certains services générèrent les clés séquentiellement à partir des 26 lettres de l'alphabet latin de base et des 10 chiffres ;
* d'autres proposent un nombre aléatoire ;
* enfin, certains offrent la possibilité à l'utilisateur de spécifier lui-même la clé.

## Utilité

Au même titre que la compression de données, réduire une adresse web (URL) permet d'économiser plusieurs octets. Cela offre quelques avantages parmi lesquels :
* diminuer la taille des requêtes HTTP, sous condition (pour l'appel des pages) que le service de réduction d'URL proposé soit propre au site web et qu'il ne s'agisse pas d'un service de redirection (comme le proposent TinyURL ou Google url shortener). En réduisant la taille des liens hypertexte d'une page web, on allège la taille de la page à charger, notamment si elle en contient plusieurs. Ce service s'avère indispensable pour les abonnés d'un fournisseur d'accès à Internet ou d'un opérateur mobile dont l'accès à internet est limité ;
* permettre l'échange d'une adresse web dans des services de communication où le nombre de caractères par message est limité, comme dans les messageries instantanées ou les microblogs ;
* rendre plus simples la lisibilité et la mémorisation d'une adresse web au nombre d'attributs descriptifs (paramètres) conséquents et dont la taille peut rapidement atteindre une centaine de caractères. Par exemple, « http://osm.org/go/G0ke520 » est plus facile à retenir que « http://www.openstreetmap.org/?lat=-27.1261&lon=-109.3503&zoom=13&layers=M ».

## Historique

L'implémentation d'un service de réduction d'URL date d'au moins 2001, avec le lancement de makeashorterlink.com. Cependant, le premier service notable, TinyURL, est lancé en 2002.
La popularité de TinyURL a influencé la création de plus d'une centaine de sites similaires. La plupart fournissent exactement le même service, mais leur nom de domaine est souvent plus court. D'autres possèdent des fonctionnalités additionnelles, comme la génération de statistiques d'utilisation.
À l'origine, Twitter traduisait automatiquement les URL trop longues à l'aide de TinyURL. Depuis 2009, le site a utilisé bit.ly, jusqu'en octobre 2010. Depuis, c'est le service interne t.co qui remplace officiellement bit.ly comme réducteur d'URL pour ce service.
En 2010, Google lance son propre service : goo.gl. Celui-ci sera finalement arrêté en 2018. Ensuite, Google l'a remplacé par les Firebase Dynamic Links. Bien que les liens goo.gl existants continuent de fonctionner.

## Critiques

Une URL réduite masque l'adresse originale. Par conséquent, il n'est pas possible d'être certain à l'avance du site vers lequel cette URL réduite redirige (mais il existe des services permettant de révéler cette URL, par exemple Unshorten.It!). Les services de réduction d'URL peuvent être utilisés pour disperser du spam, contraindre un utilisateur à accéder à un site malveillant ou choquant ou installer des malwares (le cas d'adf.ly), ou simplement par plaisanterie (comme dans le cas du rickroll). Certains sites comme MySpace, Yahoo! Questions/Réponses ou Orkut ont bloqué l'utilisation de TinyURL sur leurs services.
TinyURL a lutté contre ce problème en offrant la possibilité de prévisualiser le site de destination, au lieu d'y être redirigé directement. Des services ou programmes permettent également à l'utilisateur de connaître, avant de cliquer sur le lien, la véritable destination de l'URL.
Si une même adresse est réduite plusieurs fois (par le même service ou non), deux nouvelles URL différentes seront créées. Il est alors plus difficile de se rendre compte que c'est la même cible (ce qui se révèle gênant dans des revues de presses, dans l'historique du navigateur web, etc.)
Si un service de réduction d'URL ferme, toutes les adresses réduites l'utilisant deviennent ainsi inaccessibles.
La longueur des adresses URL ne pose pas de problème de capacité au réseau Internet ni aux systèmes de stockage.
Le service de réduction d'URL connaît toutes les utilisations des URL réduites, posant des problèmes de vie privée, de surveillance et de centralisation.
Étant donné la taille réduite des URL, celles-ci peuvent permettre d'accéder à des contenus censés être privés en énumérant toutes les chaînes possibles constituées de 5, 6 ou 7 caractères alphanumériques.
Certains sites de réduction d'URL utilisent un certain nombre de techniques publicitaires interstitielles pour générer des revenus (exemple : le lien de l'URL raccourci va d'abord ouvrir une fenêtre publicitaire, puis une nouvelle fenêtre vers le contenu souhaité). C'est considéré comme du spam et cela peut dissuader les lecteurs d'utiliser le lien, voire discréditer les sites « source » et « cible » aux yeux des utilisateurs. Leurs URL sont interdites par YouTube.

## Limites théoriques

De façon générale, si un service de réduction d'URL utilise un jeu de $r$ caractères et une longueur maximale de clé de $n$ caractères (et minimale d'un caractère), le nombre maximal de pages qu'il peut réduire est égal à $\sum _{k=1}^{n}r^{k}={\frac {r\cdot (r^{n}-1)}{r-1}}$.
Un service comme TinyURL utilise les 26 lettres de l'alphabet et les 10 chiffres (soit 36 caractères), et une longueur maximale de 7 caractères. Il permet donc d'encoder un peu plus de 76 milliards de pages web distinctes. Bitly fait la distinction entre les lettres minuscules et majuscules, soit 62 caractères, et utilise actuellement une longueur de clé de 6 caractères, permettant de lier près de 58 milliards de pages.
D'autres sites autorisent les caractères Unicode, permettant un nombre de liens énorme, même pour de petites longueurs de clé. Par exemple, même avec deux caractères par clé, cela peut générer plusieurs milliards de combinaisons. Les caractères Unicode (non ASCII) nécessitent cependant au moins deux octets pour être encodés. Certains services exploitent la distribution de noms de domaines très courts pour garantir les meilleures réductions d’URL. Les limites théoriques pour un seul service sont donc multipliées selon la taille de la distribution.
L'utilisation d'un jeu de caractères étendu nécessite que le logiciel utilisant l'URL prenne en charge Unicode dans toute la chaine, donc y compris dans les URL. Un logiciel ne prenant en charge qu'un jeu de caractères limité pour les URL, tel qu'ISO-Latin ou ASCII, ne pourra pas ouvrir de telles URL, même après conversion (il ne pourra pas comprendre le codage sur deux caractères par clé, et l'aura converti en deux clés, codées chacune sur un caractère). Cette méthode est en conséquence à éviter, pour permettre une meilleure interopérabilité des systèmes hétérogènes.