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