Au départ j'ai pensé à une faille dans l'objet window.history mais non ; la technique consiste simplement à comparer la couleur de deux liens : celle d'un lien visité avec celle d'un autre, pas encore visité.
Cette possibilité est offerte par beaucoup de navigateurs internets, finalement presque tous ceux qui implémentent CSS et le DOM. J'ai modifié un poil le code présenté dans le deuxième article pour pouvoir le tester sur d'autres navigateurs :
var uri = prompt("Check uri has been visited?", "http://uri");
var link = document.createElement("a");
link.href = uri+Math.random();
link.innerHTML = uri;
link.id="link";
document.body.appendChild(link);
var link2 = document.createElement("a");
link2.href = uri;
link2.innerHTML = uri;
link2.id="link2";
document.body.appendChild(link2);
var getCssStyleValue = function (domElement, cssStyleProp) {
return domElement.currentStyle ? domElement.currentStyle[cssStyleProp] : window.getComputedStyle(domElement,null).getPropertyValue(cssStyleProp);
}
var colorNotVisited = getCssStyleValue (link, "color");
var colorVisited = getCssStyleValue (link2, "color");
link.innerHTML = link2.innerHTML ="";
document.body.removeChild(link); document.body.removeChild(link2);
var visited = colorNotVisited!=colorVisited;
alert (uri+" has"+ (visited ?" ":" NOT ") + "been visited."+
"\n(\"" + colorNotVisited + (visited ?"!=":"==") + colorVisited + "\")");
[1] Application Security Predictions of 2007 : http://www.cgisecurity.com/2006/12/07
[2] I know where you've been : http://jeremiahgrossman.blogspot.com/2006/08/i-know-where-yo(...)
# Interessant
Posté par chl (site web personnel) . Évalué à 2.
[^] # Re: Interessant
Posté par chl (site web personnel) . Évalué à 5.
[^] # Re: Interessant
Posté par Antoine Jacquet (site web personnel) . Évalué à 3.
[^] # Re: Interessant
Posté par Sylvain Rampacek (site web personnel) . Évalué à 3.
# intéressante
Posté par jm trivial (site web personnel) . Évalué à 4.
Alliée à de l'ajax pour renvoyer l'information au serveur, on peut fliquer de manière puissante! :S
# Une géolocalisation de l'internaute à pas cher
Posté par locke . Évalué à 2.
On peut utiliser cette technique pour s'offrir une géolocalisation de l'internaute à moindre coût en full javascript :
Il suffit de tester successivement l'historique de l'internaute vers des sites google, en considérant que la redirection systématique de google vers un site national est une donnée fiable à exploiter.
Par exemple si on détecte que l'internaute a visité www.google.be : bim on sait qu'il est localisé en belgique (A l'heure où j'écrivais ce commentaire la Belgique était encore un pays de l'Europe de l'Ouest), www.google.ru : boum on sait qu'il est en russie, etc...
Dans certains cas ça fait la rue Michel : la fiabilité des résultats peut être comparée à celles de bases d'IP plus ou moins honéreuses pour les données des pays.
On peut imaginer moultes applications marketing à ce petit hack javascript. C'est pas michto ?
[^] # Re: Une géolocalisation de l'internaute à pas cher
Posté par Anonyme . Évalué à 5.
[^] # Re: Une géolocalisation de l'internaute à pas cher
Posté par locke . Évalué à 1.
var nationalSite = [".us", ".zh", ".fr", ".co.uk"]; // etc ...
var i=0;
while (i < country.length){
// le client a t-il été sur ("google"+nationalSite[i] ?
i++;
}
me semble être une alternative pertinente dans certains cas, utilisée en concurrence avec des outils comme geoip. Tu voyais peut-être d'autres façons de connaître le pays d'un internaute?
[^] # Re: Une géolocalisation de l'internaute à pas cher
Posté par andeus . Évalué à 2.
Exemple:
...fbx.proxad.net. => Bon, là tu sais que c'est free, donc en france, mais si tu veux te baser là dessus il faut connaître tous les FAI.
ACD2B974.ipt.aol.com. => Là c'est AOL et ça peut venir de n'importe quel pays...
[^] # Re: Une géolocalisation de l'internaute à pas cher
Posté par fabien . Évalué à 2.
plutôt que deviner quel google a été utilisé, il ne serait pas plus simple de partir du même concept qui est utilisé dans google pour faire sa redirection ?
tout simplement en analysant dans le header...
et en particulier la chaine "Accept-Language"...
[^] # Re: Une géolocalisation de l'internaute à pas cher
Posté par locke . Évalué à 1.
[^] # Re: Une géolocalisation de l'internaute à pas cher
Posté par locke . Évalué à 1.
$lwp-request -dS www.google.com/ HTTP/1.1
GET http://www.google.com/ --> 302 Found
GET http://www.google.fr/ --> 200 OK
GET http://www.HTTP.com/1.1 --> 200 OK
Google me renvoie bien vers du contenu de son site .fr
[^] # Re: Une géolocalisation de l'internaute à pas cher
Posté par fabien . Évalué à 2.
ensuite, en effet, google utilise sans doute d'autres techniques qui lui permet d'être plus précis...
je parle de "delire" parce que c'est quand même un peu extravaguant (et je ne parle pas du javascript que tu as pondu...) alors qu'il existe une solution "qui est faite justement pour celà"... par contre utiliser cette technique pour fliquer/voir si l'utilisateur est allé sur tel ou tel site, oui, c'est coherant, puisqu'il n'y a pas d'autre ssystèmes a priori...
# NoScript
Posté par Boa Treize (site web personnel) . Évalué à 2.
[^] # Re: NoScript
Posté par locke . Évalué à 1.
Cela démontrerait que le concepteur du navigateur apporte de l'importance à la confidentialité du surf de l'utilisateur.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.