Como funcionam serviços como TinyURL ou Metamark ?
Eles simplesmente associam a pequena chave de URL a uma página da web [virtual?] Que apenas fornece um "redirecionamento HTTP" para a URL original? ou há mais "mágica" nisso?
[redação original] Costumo usar serviços de encurtamento de URL como TinyURL, Metamark e outros, mas sempre que faço isso me pergunto como esses serviços funcionam. Eles criam um novo arquivo que redirecionará para outra página ou usam subdomínios?
web-services
url
url-shortener
bit.ly
short-url
Nathan Campos
fonte
fonte
Respostas:
Não, eles não usam arquivos. Quando você clica em um link como esse, uma solicitação HTTP é enviada ao servidor com a URL completa, como http://bit.ly/duSk8wK (links para esta questão). Eles lêem a parte do caminho (aqui
duSk8wK
), que mapeia para seu banco de dados. No banco de dados, eles encontram uma descrição (às vezes), seu nome (às vezes) e a URL real. Em seguida, eles emitem um redirecionamento, que é uma resposta HTTP 302 e o URL de destino no cabeçalho.Esse redirecionamento direto é importante. Se você fosse usar arquivos ou primeiro carregar HTML e depois redirecionar, o navegador adicionaria TinyUrl ao histórico, o que não é o que você deseja. Além disso, o site para o qual é redirecionado verá o referenciador (o site de onde você veio originalmente) como sendo o site do link do TinyUrl (ou seja, twitter.com, seu próprio site, onde quer que esteja o link). Isso é igualmente importante, para que os proprietários de sites possam ver de onde as pessoas vêm. Isso também não funcionaria se fosse carregada uma página que redireciona.
PS: existem mais tipos de redirecionamento. HTTP 301 significa: redirecionamento permanente. Se isso acontecer, o navegador não solicitará mais o site bit.ly ou TinyUrl e esses sites desejam contar os acessos. É por isso que o HTTP 302 é usado, que é um redirecionamento temporário. O navegador perguntará a TinyUrl.com ou bit.ly a cada vez, o que torna possível contar os acessos para você (alguns pequenos serviços de url oferecem isso).
fonte
Moved
nãoMoved Permanently
. Esta é uma diferença sutil. Ao adicionar o carimbo de data / hora, o navegador considera que deve verificar se o recurso foi alterado ou não quando o tempo limite foi atingido. Outros, como is.gd, usam um normal301 Moved Permanently
e o navegador não precisa verificar novamente (mas geralmente o fará). Por fim, serviços como o url4.eu não redirecionam de forma alguma, mas mostram primeiro um anúncio. Com o 301, os serviços ainda contam com visitantes únicos , mas nem todos os acessos.Outros responderam como funcionam os redirecionamentos, mas você também deve saber como eles geram seus pequenos urls. Você ouvirá por engano que eles criam um hash do URL para gerar esse código exclusivo para o URL encurtado. Isso é incorreto na maioria dos casos, eles não estão usando um algoritmo de hash (onde você pode potencialmente ter colisões).
A maioria dos serviços de encurtamento de URL populares simplesmente pega o ID no banco de dados do URL e, em seguida, converte-o em Base 36 [a-z0-9] (não diferencia maiúsculas de minúsculas) ou Base 62 (diferencia maiúsculas de minúsculas).
Um exemplo simplificado de uma tabela de banco de dados TinyURL:
Frameworks da Web que permitem o roteamento flexível tornam o manuseio de URLs de entrada realmente fácil (Ruby, ASP.NET MVC, etc).
Portanto, em seu servidor da web, você pode ter uma ação de rota semelhante a (pseudo código):
Que roteia qualquer solicitação de entrada para o seu servidor que tenha qualquer texto após o seu domínio www.mytinyurl.com para o método associado, RouteURL. Ele fornece o texto que é passado após a barra em seu URL para esse método.
Então, digamos que você solicitou: www.mytinyurl.com/fif
"fif" seria então passado para seu método, RouteURL (String UrlID). RouteURL então converteria "fif" em seu equivalente de base10, 20103, e uma solicitação de banco de dados será feita para redirecionar para qualquer URL armazenado sob a ID 20103 (neste caso, www.digg.com). Você também aumentaria a contagem de visitas do Digg em um antes de redirecionar para o URL correto.
Este é um exemplo realmente simplificado, mas você deve conseguir ter uma ideia geral.
fonte
O(1)
pesquisa e encontrar duplicatas; e então rotear a pequena URL existente para isso, ou pode escolher gerar uma nova. Pelo que eu posso dizer,goo.gl
reutiliza os pequenos urls para o mesmo URL; experimente isso no seu final para esta página: Você entendeu isso >>goo.gl/8gVb8X
?Como uma extensão da resposta @A Salcedo:
Alguns serviços de encurtamento de url (Tinyarro.ws) vão ao extremo usando Unicode (UTF-8) para codificar caracteres em url encurtado - o que permite uma maior quantidade de sites antes de ter que adicionar um símbolo adicional. Como a maior parte do UTF-8 é aceito para uso ( (IRI) RFC 3987 manipulado pela maioria dos navegadores ), isso vai de
62
sites por símbolo para ~1,112,064
.Para colocar em perspectiva, pode-se codificar 1.2366863e + 12 sites com 2 símbolos (
1,112,064*1,112,064
) - em novembro de 2009, links encurtadosbit.ly
foram acessados2.1
bilhões de vezes (por volta dessa época, bit.ly e TinyURL eram os serviços de encurtamento de URL mais amplamente usados. ) que é ~ 600 vezes menos do que você pode colocar em apenas 2 símbolos, então para a duração total de todos os serviços de encurtamento de url deve durar mais 20 anos no mínimo até adicionar o terceiro símbolo.fonte
Em palavras simples, o encurtador de URL mapeia uma longa sequência arbitrária de caracteres (original, url longa e ruim) em uma sequência curta e elegante de caracteres. Isso nada mais é do que Hashing, que é mais comumente usado para criar tabelas de pesquisa, HashMap, md5 Hash para fins criptográficos etc.
Para entender o processo de encurtamento de URL, criei um projeto de demonstração no GitHub e também uma postagem no blog. Consulte isso e me diga se foi útil.
Postagem do blog: Redução de URL
fonte