Mas como funciona o Spyjax ?
Quando utiliza o seu browser já deve ter reparado que sempre que faz um clique num link e esse muda de cor e sempre que volta a ver esse link ele continua nessa mesma cor .
Pois bem isso acontece porque o seu browser guardou no seu historio esse link e sempre que abre uma pagina com esse link ele detecta e assinala com essa link com já acedido , é devido a este comportamento que esta técnica tira partido .
Na pratica é criado código javascript que introduza endereços na pagina Web e compara o seu CSS mais concretamente examina a cor que o link assume e guarda essa informação ou em cookies ou envia via essa informação de volta com os resultados.
Exemplos na de sites que utilizam esta técnica :O primeiro é o http://www.didyouwatchporn.com/ que permite averiguar se é utilizador de sites de pornografia.
O segundo é o http://whattheinternetknowsaboutyou.com testa os 5000 sites mais populares da internet .
Estes são apenas alguns exemplo de certo que encontra ou de futuro vai encontrar mais.
Exemplos de código(Testados no Firefox 3.5.5 / Opera 10.10 / IE 8 / Chrome 3.0.1) :
function jaVisitei(url) {
var link = document.createElement('a');
link.href = url;
document.body.appendChild(link);
if (link.currentStyle) {
var cor = link.currentStyle.color;
if (cor == '#800080')
return true;
return false;
} else {
link.setAttribute("href",url);
var computed_style = document.defaultView.getComputedStyle( link, null );
if (computed_style) {
if (computed_style.color == "rgb(85, 26, 139)")
return true;
}
return false;
}
return false;
}
function testa()
{
if(jaVisitei("http://www.jpontes.blogspot.com/")==true)
{
alert("Obrigado por visitar jpontes.blogspot.com");
}
else
{
alert("Visite jpontes.blogspot.com");
}
}
Este exemplo teve inspiração nos mais exemplos nos sites http://jeremiahgrossman.blogspot.com/2006/08/i-know-where-youve-been.html e uma adaptação do mesmo no http://www.merchantos.com/makebeta/tools/spyjax/.(Versão utilizado biblioteca Jquery)
function jaVisitei2(url) {
var a = $('<a></a>').attr({href: url,'class': 'checkme'}).appendTo(document.body);
if($(a).css('color') == '#800080' || $(a).css('color') == 'rgb(85, 26, 139)') {
return true;
}
else
{
return false
}
}
Esta versão é a minha preferida e utiliza a biblioteca javascript jquery ou se preferir o Mootools e podem encontra no site http://davidwalsh.name/jquery-spyjax no qual me inspirei para este exemplo.
Como evitar e se proteger do Spyjax ?O Spyjax não é uma técnica perfeita pelo contrario é bastante falível basta para isso que :
- Não guarde histórico de navegação ou que o limpe com regularidade.
- Que desactive o javascript do browser .
- Caso tenha o Firefox 3.5 + instalar o Link Status que permite desabilitar a aplicação de novo estilo de CSS aos links já visitados.
Sem comentários:
Enviar um comentário