Liens data-lynx-uri sur facebook

3

J'ai remarqué il y a longtemps que les liens postés sur Facebook sont en quelque sorte manipulés de manière tordue. Si je passe la souris sur le lien ou sur l'aperçu de la page, mon navigateur (dans ce cas, Safari pour Mac) affiche le lien attendu qui a été collé dans la publication (par exemple http://www.example.com/). MAIS si je clique avec le bouton droit de la souris et que je copie le lien, puis que je le colle dans la barre d'adresse d'un nouvel onglet, l'URI est très différent: ce sera quelque chose comme https://l.facebook.com/l.php?u=http%3A%2F%2Fwww.example.com%2F&h=xxxxxxxxxest en fait un identifiant unique, lié sans doute à mon compte et à tout le reste. Je suppose que Facebook l'utilise pour suivre ce sur quoi les gens cliquent. Je me demande s'ils essaient de "dissimuler" ce fait en utilisant un système dans lequel le navigateur ne montre pas le lien de suivi effectif. JE'ahrefattribut, mais alors il a deux attributs supplémentaires, data-lynx-modeavec une valeur origin(de ce que j'ai vu, il peut y avoir d'autres) etdata-lynx-uriqui contient le lien réellement copié et suivi lors de l’interaction de l’utilisateur, celui que j’ai mentionné ci-dessus. J'ai fait une recherche rapide sur le net et je n'ai pas trouvé beaucoup de documentation sur ces attributs - mais ils semblent être surtout, sinon uniquement, utilisés en relation avec des liens Facebook - bien que le navigateur semble réagir d'une manière particulière à elles sont en quelque sorte incohérentes car ce qui est affiché dans la barre d'état est différent de ce qu'il est copié dans le Presse-papiers Quelqu'un at-il plus d'informations à leur sujet? Pourraient-ils être simplement propriétaires et utilisés par un code javascript qui remplacerait le lien normal suivant? Peuvent-ils être "ignorés" pour que le navigateur suive le lien approprié et ne charge pas la machine de profilage de Facebook?

Merci pour vos idées!

EDIT :

La réponse de stachu fonctionne bien (avec Tampermonkey pour Safari, je suis directement dirigé vers la page d'origine lorsque je clique sur un lien), mais cela ne suffit pas pour mon utilisation particulière: j'utilise différents navigateurs pour Facebook et la navigation générale (appelez-le paranoïa ), et ce que je fais habituellement est de copier le lien depuis Safari et de l’ouvrir dans l’autre navigateur. En cliquant avec le bouton droit de la souris et en sélectionnant "Copier le lien" dans Safari, vous obtenez toujours le lien de suivi, pas le réel href. J'essaie de savoir ce qui se passe quand je fais ça, peut-être que du javascript intercepte l'action et brouille le lien, ou Safari at-il l'habitude de copier cela data-lynx-uriquand il est présent ??

EDIT 2 :

Facebook jongle avec le lien, modifie la valeur de l' hrefattribut en fonction du contenu du data-lynx-uriclic droit et rétablit sa valeur d'origine lorsque vous survolez l'élément. essayez simplement d’obscurcir l’affichage et de tromper l’utilisateur pour qu’il ne voie pas la redirection. J'essaie d'attraper le clic droit et de restaurer la valeur du lien en utilisant javascript / Tampermonkey, mais pour une raison quelconque, ma fonction n'est pas appelée: - |.

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);
David
la source
Ce mécanisme de réécriture est le lien que fait Shim. Voir facebook.com/notes/facebook-security/…
jub0bs Le
1
Merci pour le lien! C'est informatif et au moins ils ne sont pas "secrets" à ce sujet, bien que tout ne soit pas convaincant. Je suppose que ce qu'ils disent à propos du référent a du sens, mais je pense toujours que la copie devrait au moins permettre à quelqu'un d'accéder au lien réel, car aucun référent n'est envoyé lors du copier-coller. En outre, "analytique" signifie généralement aussi "suivi", ce à quoi je m'oppose en premier lieu. Je vais continuer à sauter à travers des cerceaux pour protéger ma vie privée ensuite.
David

Réponses:

0

Vous pouvez ajouter vos propres scripts au site Facebook en utilisant, par exemple, Greasemonkey si vous utilisez FireFox.

Exemple de script qui se déclenche à chaque clic

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));
    }
})

Si l'élément cible (sur lequel vous avez cliqué) est un lien ( abalise), le script supprime les data-lynx-*attributs.

Vous devez vérifier que certains scripts ont hrefchangé d'attribut en liens de suivi Facebook (domaine l.facebook.com) et ajouter ce cas à votre script.

Vous devriez vérifier que ce script fonctionne même avec du contenu ajouté AJAX.

Stachu
la source
0

De nombreux sites Web utilisent cette technique. Cet article explique comment ils fonctionnent et comment remplacer ce problème. Cette vidéo explique également l'ensemble du processus. Notez que Facebook et Google ont changé leur méthode de suivi vers avril 2019.

Obadah Hammoud
la source