Tenho notado há muito tempo que os links que são postados no facebook são de alguma forma manipulados de forma distorcida. Se passar o mouse sobre o link ou a visualização da página, meu navegador (no caso, Safari para Mac) exibirá o link esperado que foi colado na postagem (por exemplo, http://www.example.com/
). MAS se eu clicar com o botão direito do mouse e copiar o link, colá-lo na barra de endereços de uma nova aba, o URI é bem diferente: será algo como https://l.facebook.com/l.php?u=http%3A%2F%2Fwww.example.com%2F&h=xxxxx
onde xxxx
é na verdade um identificador único, sem dúvida ligado ao meu conta e tudo o mais. Estou assumindo que o facebook usa isso para rastrear o que as pessoas clicam. Eu estou querendo saber se eles estão tentando "esconder" esse fato usando um esquema em que o navegador não mostra o link eficaz de rastreamento. Eu olhei para a fonte HTML e parece que a tag a
usa o URI adequado como seu atributo href
, mas tem dois atributos adicionais, data-lynx-mode
com valor origin
(pelo que eu tenho visto, pode haver outros) e data-lynx-uri
que contém o link que é realmente copiado e seguido na interação do usuário, o que eu mencionei acima. Eu fiz uma pesquisa rápida na net e não consegui encontrar muita documentação sobre esses atributos - mas eles parecem ser principalmente se não apenas usados em conexão com links do facebook - embora o navegador pareça reagir de uma maneira particular a eles, de alguma forma inconsistente, porque o que é mostrado na barra de status é diferente do que copia para a área de transferência. Alguém tem mais informações sobre eles? Eles poderiam ser simplesmente proprietários e usados por algum código javascript que substituiria o seguinte link normal? Eles podem ser "ignorados" para que o navegador siga o link adequado e não alimente a máquina de perfis do Facebook?
Obrigado pelas suas ideias!
EDITAR :
A resposta do Stachu funciona bem (usando o Tampermonkey para Safari, sou levado diretamente para a página original quando clico em um link), mas não é suficiente para meu uso particular: estou usando navegadores diferentes para o Facebook e navegação geral ( chame de paranóia), e o que eu costumo fazer é copiar o link do Safari e abri-lo no outro navegador. Clicar com o botão direito do mouse e selecionar "Copiar link" do Safari ainda recebe o link de rastreamento, não o href
real. Eu estou tentando descobrir o que acontece quando eu faço isso, talvez alguns javascript captura a ação e garbles o link, ou o Safari padrão para copiar este data-lynx-uri
quando está presente?
EDIT 2 :
O Facebook faz malabarismos com o link, alterando o valor do atributo href
para o conteúdo de data-lynx-uri
quando ocorre um clique com o botão direito do mouse e definindo-o de volta ao seu valor original quando você passa o mouse sobre o elemento - para mim, parece que eles estão apenas tentando ofuscar a tela e enganar o usuário para não ver o redirecionamento. Eu estou tentando pegar o botão direito do mouse e restaurar o valor do link usando javascript / Tampermonkey, mas por algum motivo minha função não está sendo chamada: - |.
document.addEventListener('contextmenu', function(e) {
Array.from(e.target.attributes).filter(attribute => attribute.name.startsWith("data-lynx-")).forEach(attribute => e.target.removeAttribute(attribute.name));
var href = e.target.getAttribute("href");
var regex = /^https:\/\/l\.facebook\.com\/l\.php\?u=(http.*?)&.*$/;
var match = regex.exec(href);
if(match[1]) {
var uri = match[1].replace(/%3A/g, ':').replace(/%2F/g, '/').replace(/%26/g, '&').replace(/%3D/g, '=').replace(/%3F/g, '?');
e.target.setAttribute("href", uri);
}
}, false);