Différencer un visiteur d'un bot.

WRInaute accro
Bonjour à tous :)

Voila c'est rare que je poste des topics mais j'aimerais vos avis sur un petit code qui permettrait d'identifier un surfeur d'un bot de la façon la plus fiable possible.
Par exemple, j'aimerais incrémenter une valeur en base de données à chaque fois qu'un visiteur regarder une page, donc n'importe quel visiteur provenant de n'importe quel navigateur (mobiles,netbooks, tous les navigateurs pc, mac, etc). Et évidemment quand s'il s'agit de n'importe quel bot, ne rien faire.

Quelle est la meilleur solution ? :

- Regarder si il y a un REFERER ?

Le problème, je ne sais pas si tous les navigateurs, mobiles inclus ont les referers activés. De plus, les personnes utilisant google SSL ou ayant désactivé les referers ne seront pas comptés j'imagine ?

- Se baser sur certains mots clés contenus dans le USER-AGENT ?

Le problème est que les users agent de tous les bots sont différents et ceux des navigateurs aussi (mobiles inclus). Y a-t-il une logique sur laquelle se baser pour faire un filtrage sur les USER-AGENT fiable ?

- Faire une liste de USER-AGENT des bots ou des navigateurs ?

La encore, je ne sais pas combien il existe de types différents de USER-AGENT parmi tous les navigateurs webs existants.

- Se baser sur l'acceptation des cookies ou du JavaScript ?

Je ne sais pas si tous les bots naviguent sur les pages avec JavaScript et les cookies désactivés ? Peut-on se baser sur un des deux pour identifier le passage d'un bot ou d'un visiteur ?

- Ou bien d'autres solutions à me proposer ?

Peut-être qu'il y a moyen de se baser sur un mix de plusieurs solutions, mais quelles sont les plus fiables avant tout ?

Merci d'avance :mrgreen:
 
WRInaute occasionnel
Regarder si il y a un REFERER ?

Je me suis posé la même question pour une règle de sécurité .htaccess
Effectivement "aucun referer" ne signifie pas forcément Bot :roll: (exemple FF en mode no-referer)

Cela ne me semble pas assez distinctif.
 
WRInaute passionné
le JS est la solution utilisée par les outils comme analytics. C'est donc la meilleur solution à mon avis.
 
WRInaute accro
Oue mais je veux pas faire du cloacking et il faut tenir une liste assez énorme de user-agent c'est pas super super.
 
WRInaute discret
tu n'es pas obligé de faire du cloaking... mais au final la technique est la même : tu détectes si c'est un robot ou un visiteur et tu réalises une action en fonction.

Ce qui peut poser souci c'est ce que tu vas faire une fois que tu auras détecté si c'est un robot ou pas :
Toi c'est juste incrémenter une BDD... donc pas de soucis !

Et pour détecter si c'est un robot ou un visiteur la meilleure technique est par reverse DNS, car il est a priori impossible de spoofer une adresse IP google... alors que se faire passer pour Google en modifiant son user agent ça c'est possible...ne pas avoir de referer également... désactiver le javascript aussi...

Après tout dépend si tu veux des stats très fines ou si tu acceptes une légère marge d'erreur. Si tu veux des stats très fines alors la meilleure solution serait peut être de cumuler toutes les techniques évoquées dans ce post
 
WRInaute accro
La commande gethostbyname est ptet la plus fiable mais extremement lente. T'imagine faire 100x la commande toutes les quelques secondes ? :p
 
Discussions similaires
Haut