links data-lynx-uri no facebook

1

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);
    
por David 27.04.2018 / 17:44

1 resposta

0

Você pode adicionar seus próprios scripts ao site do Facebook usando, por exemplo, Greasemonkey se estiver usando o FireFox.

Exemplo de script que é acionado a cada clique

document.addEventListener('click', event => {
    let target = event.target;

    if (target.tagName.toLowerCase() === "a") {
        Array.from(target.attributes).filter(attribute => attribute.name.startsWith("data-lynx-")).forEach(attribute => target.removeAttribute(attribute.name));
    }
})

Se o elemento de destino (no qual você clicou) for um script de link ( a tag), isso removerá data-lynx-* de atributos.

Você deve verificar se alguns scripts têm o atributo href alterado em links de acompanhamento do Facebook (domínio l.facebook.com ) e adicionar este caso ao seu script.

Você deve verificar se este script funciona mesmo com conteúdo adicionado AJAX.

    
por 29.04.2018 / 13:31