Comment fonctionne un raccourcisseur d'URL? [fermé]

87

Je me demande comment fonctionne un raccourcisseur d'URL, comme comment ils extraient le texte de la barre d'adresse et le mappent pour corriger l'URL, puis le redirigent. Quel langage de programmation utilisent-ils? Comment conservent-ils l'historique de la cartographie? Comment garantissent-ils l'unicité de l'URL raccourcie? Comment un profane peut-il le démapper sans visiter l'URL?

prap19
la source
64
seulement 3 votes serrés? allez, il veut apprendre quelque chose, fermez-le plus vite !!!
IAdapter
22
C'était la question exacte que j'avais et je suis très déçu de voir qu'elle est fermée. Ce n'est ni ambigu ni incomplet - il est très précis dans ce qu'il demande.
thumbtackthief
3
@bmargulies Je pense que la question ne devrait pas être fermée, cela a été très utile et même des réponses, pensez également à 43 votes positifs et vous avez décidé de la fermer .. pourquoi ??
Amruth A

Réponses:

39

Le wiki est votre ami

Fondamentalement, un site Web avec un nom plus court est utilisé comme espace réservé, tel que bit.ly.

Ensuite, bit.ly génère une clé que l'utilisateur doit fournir, qui est générée aléatoirement pour ne pas se répéter. Avec 35 options de caractères et 8 valeurs environ, faites le calcul. C'est beaucoup de clés possibles. Si une URL est égale à une clé déjà existante, je me souviens avoir lu quelque part qu'ils réutilisent également les clés.

Ils n'utilisent pas vraiment un langage de programmation spécifique, ils utilisent simplement une simple redirection d'URL, ce qui peut être fait avec HTML je crois.

Daniel G. Wilson
la source
oh c'est cool. Merci beaucoup
prap19
25
La redirection n'est PAS faite avec HTML, elle est faite avec les en-têtes HTTP. (Code d'état 301 ou 302, selon).
Yahel
Ah d'accord, ça aurait plus de sens. Merci pour la clarification.
Daniel G.Wilson
Ils doivent utiliser l'en-tête Location pour rediriger.
Jeevan Patil
25

Les raccourcisseurs d'URL génèrent simplement un shortcode, mappent l'URL cible sur le shortcode et fournissent une nouvelle URL. La visite de l'URL effectue une recherche dans la base de données avec le shortcode comme clé et vous redirige vers l'URL cible. Il n'y a pas d'association algorithmique entre une URL raccourcie et une URL de destination, vous ne pouvez donc pas la «démapper» sans passer par les systèmes du raccourcisseur d'URL.

Vous pouvez le faire avec n'importe quel langage de programmation et magasin de données. La génération de code est simple pour assurer également l'unicité; si vous aviez une clé d'entier primaire incrémentée, vous pouvez simplement encoder la clé en base62 et la servir. Puisque les codes sont de nature incrémentielle, vous n'aurez jamais de conflit.

Chris Heald
la source
19

Le processus est assez simple en fait: il y a un script qui demande l'URL, génère une chaîne aléatoire (et vérifie que cette chaîne n'est pas déjà utilisée), et met les deux dans une sorte de base de données. Lorsque vous demandez une URL, un autre script recherche dans la base de données la chaîne aléatoire et, si elle est trouvée, vous redirige vers le site.

Ceci est bien sûr plus compliqué en production en raison des fonctionnalités nécessaires comme la prévention des abus, le filtrage d'URL, la prévention du spam, la vérification d'URL, etc. Mais celles-ci sont assez simples à mettre en œuvre.


La langue n'est pas pertinente, la plupart du temps n'importe qui fera l'affaire.

TheLQ
la source
9
"et vérifie que cette chaîne n'est pas déjà utilisée" .. COMMENT? C'est la plus grande question
Stewie
3
@Stewie: SELECT * FROM mappages WHERE key = stringToCheck, et vérifier si des lignes sont renvoyées? Ou tout autre élément similaire dans la langue de votre choix. Cela semble être la partie la plus simple de tout le problème pour être honnête.
David Liu
@Stewie Ou ils peuvent utiliser un HashMap pour cartographier<key, url>
roottraveller
@DavidLiu N'aurait-on pas besoin de continuer à régénérer et à émettre des requêtes jusqu'à ce qu'il ne produise aucun résultat? À mesure que la taille de vos données augmente, le temps de vérification augmente. Dans le pire des cas, le nombre de requêtes adressées à votre base de données sera n-1 où n est le nombre de "chaînes"; que se passe-t-il lorsque vous avez 100 millions de chaînes?
Stewie
@Stewie C'est une question entièrement différente, un problème avec le principe de la solution elle-même. Vous avez raison de dire que le problème de régénération finirait par devenir un problème, mais encore une fois, c'est pourquoi j'ai dit que "vérifier que la chaîne n'est pas déjà utilisée" est la partie la plus facile de la solution. Il existe de nombreuses solutions alternatives pour faire du hasard sans remplacement.
David Liu