Я давно заметил, что ссылки, которые публикуются на Facebook, каким-то образом обрабатываются извращенно. Если навести курсор мыши на ссылку или предварительный просмотр страницы, в моем браузере (в данном случае Safari для Mac) отобразится ожидаемая ссылка, которая была вставлена в сообщение (например, http://www.example.com/
). НО, если я щелкну правой кнопкой мыши и скопирую ссылку, а затем вставлю ее в адресную строку новой вкладки, URI будет совсем другим: это будет что-то вроде https://l.facebook.com/l.php?u=http%3A%2F%2Fwww.example.com%2F&h=xxxxx
где xxxx
фактически является уникальным идентификатором, без сомнения связанным с моей учетной записью и всем остальным. Я предполагаю, что Facebook использует это, чтобы отследить, что люди нажимают. Мне интересно, пытаются ли они "скрыть" этот факт, используя схему, в которой браузер не показывает эффективную отслеживающую ссылку. Я посмотрел на источнике HTML и это выглядит как тег использует правильный URI в качестве атрибута a
но у него есть два дополнительные атрибуты, href
со значением data-lynx-mode
(от того, что я видел, там может быть другими) и origin
который содержит ссылку, которая фактически копируется и сопровождается при взаимодействии с пользователем, ту, которую я упомянул выше. Я сделал быстрый поиск в сети и не смог найти много документации об этих атрибутах - но они, кажется, в основном, если не только используются в связи со ссылками на Facebook - хотя браузер, кажется, реагирует определенным образом на они как-то противоречивы, потому что то, что он показывает в строке состояния, отличается от того, что он копирует в буфер обмена. У кого-нибудь есть больше информации о них? Могут ли они быть проприетарными и использоваться каким-то кодом JavaScript, который переопределяет обычную ссылку, следующую за? Могут ли они быть "проигнорированы", чтобы браузер перешел по правильной ссылке и не использовал профилирующий компьютер Facebook?
Спасибо за ваши идеи!
РЕДАКТИРОВАТЬ:
Ответ Стаху работает хорошо (используя Tampermonkey для Safari, при переходе по ссылке я перенаправляюсь прямо на исходную страницу), однако этого недостаточно для моего конкретного использования: я использую разные браузеры для Facebook и общего просмотра (назовите это паранойей)), и я обычно копирую ссылку из Safari и открываю ее в другом браузере. Щелчок правой кнопкой мыши и выбрав пункт "Копировать ссылку" из Safari все еще получает ссылку отслеживания, а не фактическое href
Я пытаюсь выяснить, что происходит, когда я делаю это, возможно, какой-то javascript ловит действие и искажает ссылку, или Safari по умолчанию копирует этот data-lynx-uri
когда он присутствует ??
РЕДАКТИРОВАТЬ 2:
Facebook выполняет жонглирование ссылками, изменяя значение атрибута href
на содержимое data-lynx-uri
при щелчке правой кнопкой мыши, и возвращая ему исходное значение при наведении курсора на элемент - мне Похоже, они просто пытаются запутать экран и обмануть пользователя, чтобы он не увидел перенаправление. Я пытаюсь поймать щелчок правой кнопкой мыши и восстановить значение ссылки, используя javascript/Tampermonkey, но по какой-то причине моя функция не вызывается:- |.
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);