13:26
Ukrywanie adresu linku
Ciężko mi było dopasować do tego tematu tytuł, ale chciałem dzisiaj opisać małą sztuczkę polegająca na takiej podmianie docelowego adresu, że osoba odwiedzająca stronę, nie jest świadoma tak naprawdę na jaką stronę zostanie przeniesiona po kliknięciu w dany link. Zacznę od zaprezentowania demo, tego prostego skryptu.
Poniżej znajduje się kod JavaScript/HTML, który pozwala „ukryć” docelowy adres linku:
function LinkMonitor(links) {
this.monitorURL = 'http://test.com/?url=';
var scope = this;
for(var i=0; i<links.length; ++i) {
links[i].onmousedown = function(event) {
scope.changeLink(this);
}
links[i].onmouseup = function() {
scope.clearLink(this);
}
links[i].onmouseout = function() {
scope.clearLink(this);
}
}
if(LinkMonitor.prototype_initialized != 'undefined') {
LinkMonitor.prototype.changeLink = function(a) {
a.href = this.monitorURL + a.href;
}
LinkMonitor.prototype.clearLink = function(a) {
setTimeout(function(domLink) {
domLink.href = domLink.href.replace(scope.monitorURL,'');
}, 100, a
);
}
}
}
window.onload = function() {
new LinkMonitor(document.links);
}
Idea działania jest bardzo prosta. Po załadowaniu drzewa DOM przekazujemy tablicę z linkami, których kliknięcia mają być monitorowane. Obserwowane są zdarzenia wciśnięcia i puszczenia klawisza myszy. Aby obsłużyć prawy przycisk myszy (np. kopiowanie adresu linku) obserwowane jest również zdarzenie „wyjścia” poza obszar linku. Jeżeli kopiowany adres ma być jednak oryginalny, a nie ten podmieniony to można zrezygnować ze zdarzenia „mouseout” i przy „mousedown” wykrywać kliknięcia przycisków event.button==0 i event.button==1. Ze względu, że zdarzenie 'mouseup' jest wcześniej niż 'click' na którym następuje wywołanie linku, dodane jest opóźnienie (100ms) przed przywróceniem oryginalnego linku.
Jak to wykorzystać? Oprócz zwykłego oszukiwania można przede wszystkim wykorzystać to do monitorowania aktywności użytkowników – np. kliknięć w linki zewnętrzne na stronie (robi tak. m.in. Google i Facebook), tak żeby użytkownik nie widział że jest monitorowany.
Wpisy na blogu 
Dodaj komentarz