¿Cómo funcionan los servicios de URL cortas?

105

¿Cómo funcionan servicios como TinyURL o Metamark ?
¿Simplemente asocian la pequeña clave URL con una página web [¿virtual?] Que simplemente proporciona un "redireccionamiento HTTP" a la URL original? ¿O hay más "magia" en ello?

[redacción original] A menudo uso 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 redirigirá a otra página o usan subdominios?

Nathan Campos
fuente
1
Para reformular la pregunta [no]: "¿Cómo funcionan los servicios como TinyURL? ¿Simplemente asocian la pequeña clave de URL con una página web [virtual?] Que simplemente proporciona un" redireccionamiento HTTP "a la URL original? están preguntando?
mjv
1
¿Las URL abreviadas alguna vez caducan? (es decir, las entradas de la base de datos para esas URL se eliminan de los servidores)
thd
2
@thd: sí, pero puede depender de las visitas (diarias) y de la política del proveedor de servicios de URL cortas. También pueden permitir que nunca caduque, algunos solicitan una membresía para eso.
Abel
Posible duplicado de ¿Cómo funciona un acortador de URL?
roottraveller

Respuestas:

224

No, no usan archivos. Cuando haces 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 de destino en el encabezado.

Esta redirección directa es importante. Si usara archivos o primero cargara HTML y luego lo redireccionara, el navegador agregaría TinyUrl al historial, que no es lo que desea. Además, el sitio al que se redirige verá la referencia (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 igualmente importante, para que los propietarios de sitios puedan ver de dónde vienen las personas. Esto tampoco funcionaría si se carga una página que redirecciona.

PD: hay más tipos de redireccionamiento. HTTP 301 significa: redireccionamiento permanente. Si eso sucediera, el navegador ya no solicitará el sitio bit.ly o TinyUrl y esos sitios querrán contar las visitas. Es por eso que se usa HTTP 302, que es una redirección temporal. El navegador volverá a preguntar a TinyUrl.com o bit.ly cada vez, lo que hace posible contar las visitas por usted (algunos pequeños servicios de URL ofrecen esto).

Abel
fuente
2
En realidad, creo que Bit.ly usa HTTP 301 en lugar de 302 (lo último que escuché)
Kenny Cason
1
Dado que bit.ly no le permitirá cambiar a dónde apunta una de sus URL, 301 tiene sentido. No es necesario recordar la versión de bit.ly y volver a verificarla.
Joost Schuur
11
@KennyCason / @Joost Schuur: de hecho, es HTTP 301 el que se usa, sin embargo, con una marca de tiempo. Esto lo convierte en un Movedno Moved Permanently. Ésta es una diferencia sutil. Al agregar la marca de tiempo, el navegador considera que debe verificar si el recurso se cambió o no cuando se alcanzó este tiempo de espera. Otros, como is.gd, usan un normal 301 Moved Permanentlyy el navegador no necesita volver a verificar (pero a menudo lo hará). Finalmente, los servicios como url4.eu no redireccionan en absoluto, sino que le muestran un anuncio primero. Con el 301, los servicios aún pueden contar visitantes únicos , pero no todos los accesos.
Abel
6
La URL bitly de ejemplo ahora es real y en realidad redirige a esta pregunta ;-) Vea bitly.com/duSk8wK+ para la página de información.
Ronald
1
@Costa: hay muchas formas de contar clics, es posible que realice un seguimiento de la identificación de su tarjeta de red, que es una forma de rastrear si una solicitud proviene de la misma computadora. Es posible falsificar o cambiar esa identificación, no es infalible. Además, es posible que rastree o utilice cookies de terceros que se hayan configurado anteriormente y para el mismo usuario en diferentes navegadores, que puede verificar borrando todos los datos de la sesión y usando un navegador anónimo.
Abel
110

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

La mayoría de los servicios populares 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] (no distingue entre mayúsculas y minúsculas) o Base 62 (distingue entre 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.stackoverflow.com               2048
 3       www.reddit.com                        64
...
 20103   www.digg.com                         201
 20104   www.4chan.com                         20

Los Web Frameworks que permiten un enrutamiento flexible hacen que el manejo de la URL entrante sea realmente fácil (Ruby, ASP.NET MVC, etc.).

Entonces, en su servidor web, puede tener una acción de ruta que se parece a (pseudocódigo):

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

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

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

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

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

A Salcedo
fuente
12
Gracias por la linda explicación. Entonces, ¿qué sucede cuando alguien intenta crear una URL corta para una URL larga ya existente? ¿Realizan una búsqueda de texto completo en la base de datos? No lo creo, ya que llevará demasiado tiempo. El enfoque basado en hash o resumen de mensajes parece más práctico.
Piyush Kansal
@PiyushKansal puede usar el hash internamente para hacer una O(1)búsqueda y encontrar duplicados; y luego enrute la pequeña URL existente para eso, o podría optar por generar una nueva. Por lo que puedo decir, goo.glreutiliza las pequeñas URL para la misma URL; intente esto en su extremo para esta página: ¿Entiende esto >> goo.gl/8gVb8X?
Kingz
¿Cómo manejan los parámetros de URL? Por ejemplo www.digg.com?filter=123
Ronen
7

Como una extensión de @A Salcedo responde:

Algunos servicios de acortamiento de URL (Tinyarro.ws) van al extremo utilizando Unicode (UTF-8) para codificar caracteres en URL abreviadas, lo que permite una mayor cantidad de sitios web antes de tener que agregar un símbolo adicional. Dado que la mayoría de UTF-8 se acepta para su uso ( (IRI) RFC 3987 manejado por la mayoría de los navegadores ) que pasa de 62sitios 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, bit.lyse accedió a enlaces abreviados 2.1mil millones de veces (en ese momento, bit.ly y TinyURL eran los servicios de acortamiento de URL más utilizados ) . que es ~ 600 veces menos de lo que puede caber en solo 2 símbolos, por lo que para la duración total de la existencia de todos los servicios de acortamiento de URL, debería durar otros 20 años como mínimo hasta agregar el tercer símbolo.

Matas Vaitkevicius
fuente
5

En palabras simples, el acortador de URL asigna una secuencia larga y arbitraria de caracteres (URL original, larga y cutre) en una secuencia de caracteres corta y elegante. Esto no es más que hash, que se usa más comúnmente para crear tablas de búsqueda, HashMap, md5 Hash con fines criptográficos, etc.

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

Publicación de blog: acortamiento de URL

Anand Joshi
fuente