Pour un projet, je souhaitais connaître les liens qu’avaient visité les gens sur le site, pour afficher ou pas des informations complémentaires. Ma première idée a été de lister les liens ayant l’état :visited. Ceci est facile avec un petit bout de javascript (j’utilise Jquery, mais cela fonctionne avec n’importe quelle bibliothèque javascript) :
$('a:visited').each(function(){
console.log($(this).attr("href"));
});
Le petit bout de code ci-dessus affiche dans la console la liste de tous les liens qui ont été visités par l’internaute.
Mais cette technique a une limite de taille : elle ne permet de lister que les liens qui se trouvent effectivement dans la page en cours de consultation. Si on voulait l’utiliser pour vérifier toutes les pages d’un site, il faudrait que chaque page affiche les liens vers toutes les pages du site.
En fouillant sur internet, j’ai trouvé une solution tellement simple que je m’étonne qu’elle ne soit pas plus populaire. J’ai trouvé cette technique sur le blog de David Walsh, technique qu’il nomme Spyjax.
En fait, on peut facilement définir une couleur pour les liens dans une page, et une couleur différente pour les liens qui ont été visités.
La technique consiste donc à insérer des liens dans la page via un javascript, puis de regarder la couleur du lien. Si le code couleur correspond au code que l’on a attribué au liens visités, c’est que l’internaute a visité le site.
Ainsi, non seulement on peut vérifier si le visiteur est allé sur une page précise de son site, mais on peut également vérifier s’il est allé sur n’importe quel autre site, comme le site d’un de ses concurrents par exemple ! Je vous laisse imaginer toutes les applications que cela peut avoir.
Pour récupérer le script, disponible en Jquery et en Mootools, c’est par ici : Spyjax.
Et pour des exemples d’utilisation :
Une page qui vérifie si vous avez consulté des sites pour adultes : http://www.didyouwatchporn.com
Une page qui vérifie si vous avez consulté un des 5 000 sites les plus populaires : http://whattheinternetknowsaboutyou.com