Data-Lynx-Uri-Links auf Facebook

819
David

Mir ist schon vor langer Zeit aufgefallen, dass Links, die auf Facebook gepostet werden, irgendwie verdreht behandelt werden. Wenn ich mit der Maus über den Link oder die Seitenvorschau fahre, wird in meinem Browser (in diesem Fall Safari für Mac) der erwartete Link angezeigt, der in den Beitrag eingefügt wurde (z http://www.example.com/. B. ). ABER wenn ich mit der rechten Maustaste klicke und den Link kopiere und ihn dann in die Adressleiste eines neuen Tabs einfügt, ist der URI etwas ganz anderes: Es wird ungefähr so ​​aussehen, https://l.facebook.com/l.php?u=http%3A%2F%2Fwww.example.com%2F&h=xxxxxwo xxxxes eigentlich eine eindeutige Kennung gibt, die zweifellos mit meinem Konto verbunden ist. Ich gehe davon aus, dass Facebook dies verwendet, um zu verfolgen, worauf die Leute klicken. Ich frage mich, ob sie versuchen, diese Tatsache zu "verbergen", indem sie ein Schema verwenden, bei dem der Browser den effektiven Tracking-Link nicht anzeigt. ICH'ahrefAttribut, aber dann hat es zwei zusätzliche Attribute, data-lynx-modemit Wert origin(von dem, was ich gesehen habe, gibt es andere) unddata-lynx-uriDas enthält den Link, der tatsächlich kopiert und bei Benutzerinteraktionen verwendet wird, den oben genannten. Ich habe eine schnelle Suche im Netz durchgeführt und konnte nicht viel Dokumentation zu diesen Attributen finden - aber sie scheinen meistens nicht nur in Verbindung mit Facebook-Links verwendet zu werden - obwohl der Browser auf eine bestimmte Art und Weise zu reagieren scheint Sie sind irgendwie inkonsistent, weil das, was in der Statusleiste angezeigt wird, sich von dem unterscheidet, was in die Zwischenablage kopiert wird. Hat jemand mehr Informationen über sie? Könnten sie einfach proprietär sein und von einem JavaScript-Code verwendet werden, der den normalen folgenden Link überschreiben würde? Können sie "ignoriert" werden, sodass der Browser stattdessen dem richtigen Link folgt und die Profilerstellungsmaschine von Facebook nicht unterstützt?

Danke für deine Ideen!

BEARBEITEN :

Die Antwort von stachu funktioniert gut (mit Tampermonkey für Safari, ich werde beim Anklicken eines Links direkt zur Originalseite weitergeleitet), ist jedoch für meine spezielle Verwendung nicht ausreichend: Ich verwende verschiedene Browser für Facebook und allgemeines Browsen (nennen Sie es Paranoia.) ) und normalerweise kopiere ich den Link von Safari und öffne ihn im anderen Browser. Durch Klicken mit der rechten Maustaste und Auswahl von "Link kopieren" in Safari wird immer noch der Tracking-Link und nicht der tatsächliche Link angezeigt href. Ich versuche herauszufinden, was passiert, wenn ich das mache, vielleicht fängt ein Javascript die Aktion ein und wirft den Link durcheinander oder kopiert Safari dies standardmäßig, data-lynx-uriwenn es vorhanden ist?

EDIT 2 :

Facebook jongliert mit dem Link hin und her, ändert den Wert des hrefAttributs in den Inhalt data-lynx-urieines Rechtsklickes und setzt es wieder auf seinen ursprünglichen Wert, wenn Sie über das Element fahren - für mich sieht es wirklich so aus, als würden sie ' Versuchen Sie nur, die Anzeige zu verschleiern und den Benutzer zu täuschen, die Umleitung nicht zu sehen. Ich versuche, den Rechtsklick zu fangen und den Wert des Links mit Javascript / Tampermonkey wiederherzustellen, aber aus irgendeinem Grund wird meine Funktion nicht aufgerufen: - |.

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

1 Antwort auf die Frage

0
stachu

Sie können Ihre eigenen Skripts zur Facebook-Site hinzufügen, z. B. Greasemonkey, wenn Sie FireFox verwenden.

Beispielskript, das bei jedem Klick ausgelöst wird

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

Wenn das Zielelement (auf das Sie geklickt haben) ein Link- ( aTag-) Skript ist, werden data-lynx-*Attribute entfernt .

Sie sollten prüfen, ob sich einige hrefAttribute in Facebook-Tracking-Links (Domäne l.facebook.com) geändert haben, und fügen Sie diesen Fall Ihrem Skript hinzu.

Sie sollten prüfen, ob dieses Skript auch mit AJAX-Inhalten funktioniert.