shorter shortener hacer gratis como bitly acortar acortador web-services url url-shortener bit.ly short-url

web services - shortener - ¿Cómo funcionan los servicios de URL cortas?



twitter short url (4)

¿Cómo funcionan servicios como TinyURL o Metamark ?
¿Simplemente asocian la pequeña clave URL con una página web [virtual?] Que simplemente proporciona una "redirección HTTP" a la URL original? o hay mas "magia" para eso?

[redacción original] A menudo uso los servicios de acortamiento de URL como TinyURL, Metamark y otros, pero cada vez que lo hago, me pregunto cómo funcionan estos servicios. ¿Crean un nuevo archivo que redireccionará a otra página o usan subdominios?


Como una extensión de la respuesta de @A Salcedo:

Algunos servicios de acortamiento de url (Tinyarro.ws) van al extremo usando Unicode (UTF-8) para codificar caracteres en url acortado, lo que permite una mayor cantidad de sitios web antes de tener que agregar un símbolo adicional. Debido a que la mayoría de UTF-8 es aceptado para su uso ( IRI) RFC 3987 manejado por la mayoría de los navegadores, tiene un valor de 62 sitios por símbolo a ~ 1,112,064 .

Para poner en perspectiva uno puede codificar 1.2366863e + 12 sitios con 2 símbolos ( 1,112,064*1,112,064 ) - en noviembre de 2009, se accedieron enlaces acortados en bit.ly 2.1 mil millones de veces ( Alrededor de ese tiempo, bit.ly y TinyURL fueron los más ampliamente servicios usados ​​de acortamiento de URL. ) que es ~ 600 veces menos de lo que puede caber en solo 2 símbolos, por lo que durante toda la existencia de todos los servicios de acortamiento de url debe durar otros 20 años como mínimo hasta agregar el tercer símbolo.


En palabras simples, el acortador de URL mapea una larga secuencia de caracteres arbitraria (url original, larga y repugnante) en una secuencia breve y resbaladiza de caracteres. Esto no es más que hash, que se usa con más frecuencia para crear tablas de búsqueda, HashMap, md5 Hash con fines criptográficos, etc.

Para comprender el proceso de reducción de URL, he creado un proyecto de demostración en GitHub y también una publicación de blog. Consulte esto y avíseme si fue útil.

Publicación del blog: acortamiento de URL


Otros han respondido cómo funcionan los redireccionamientos, pero también deberían saber cómo generan sus pequeñas URL. Escuchará por error que crean un hash de la URL para generar ese código único para la URL acortada. Esto es incorrecto en la mayoría de los casos, no están usando un algoritmo hash (donde potencialmente podría haber colisiones).

La mayoría de los populares servicios de acortamiento de URL simplemente toman la ID en la base de datos de la URL y luego la convierten a Base 36 [a-z0-9] (sin distinción entre mayúsculas y minúsculas) o Base 62 (mayúsculas y minúsculas).

Un ejemplo simplificado de una tabla de base de datos TinyURL:

ID URL VisitCount 1 www.google.com 26 2 www..com 2048 3 www.reddit.com 64 ... 20103 www.digg.com 201 20104 www.4chan.com 20

Los marcos web que permiten un enrutamiento flexible hacen que el manejo de las URL entrantes sea realmente sencillo (Ruby, ASP.NET MVC, etc.).

Por lo tanto, en su servidor web puede tener una acción de ruta que se parece a (pseudo código):

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

Que enruta cualquier solicitud entrante a su servidor que tenga texto después de su dominio www.mytinyurl.com a su método asociado, RouteURL. Proporciona el texto que se transfiere después de la barra diagonal en su URL a ese método.

Por lo tanto, digamos que lo solicitó: www.mytinyurl.com/fif

"fif" se pasaría a su método, RouteURL (String UrlID). RouteURL luego convertiría "fif" a su base10 equivalente, 20103, y se realizaría una solicitud de base de datos para redireccionar a cualquier URL almacenada bajo ID 20103 (en este caso, www.digg.com). También aumentaría el recuento de visitas de Digg por uno antes de redireccionar a la URL correcta.

Este es un ejemplo realmente simplificado, pero debería poder obtener una idea general.


No, no usan archivos. Cuando hace clic en un enlace como ese, se envía una solicitud HTTP a su servidor con la URL completa, como http://bit.ly/duSk8wK (enlaces a esta pregunta). Leen la parte de la ruta (aquí duSk8wK ), que se asigna a su base de datos. En la base de datos, encuentran una descripción (a veces), su nombre (a veces) y la URL real. Luego emiten una redirección, que es una respuesta HTTP 302 y la URL objetivo en el encabezado.

Esta redirección directa es importante. Si tuviera que usar archivos o primero cargar HTML y luego redireccionar, el navegador agregaría TinyUrl al historial, que no es lo que desea. Además, el sitio al que se redirige verá al remitente (el sitio del que proviene originalmente) como el sitio en el que se encuentra el enlace TinyUrl (es decir, twitter.com, su propio sitio, donde sea que esté el enlace). Esto es igual de importante, para que los propietarios de los sitios puedan ver de dónde viene la gente. Esto tampoco funcionaría si se carga una página que redirecciona.

PD: hay más tipos de redirección. HTTP 301 significa: redirigir permanente. Si eso sucede, el navegador ya no solicitará el sitio bit.ly o TinyUrl y esos sitios quieren contar los hits. Es por eso que se usa HTTP 302, que es una redirección temporal. El navegador le preguntará a TinyUrl.com o bit.ly una y otra vez, lo que permite contar los hits por usted (algunos pequeños servicios de URL ofrecen esto).