Derniers passages de robots au 26/06/17

nom accès à 
  IP 46.29.251.11  log spam1 page 
  IP 198.27.91.223  log spam1 page 
Googlebotcrawler1 page 
DotBotcrawler1 page 
Googlebotcrawler1 page 
bingbotcrawler1 page 
BUbiNGcrawler10 pages en  1' 13'' 
DotBotcrawler1 page 
Yahoo! Slurpcrawler1 page 
Yahoo! Slurpcrawler1 page 
  IP 195.154.21.201  log spam1 page 
Baiduspidersearch engine1 page 
DuckDuckGosearch engine1 page 
Yahoo! Slurpcrawler1 page 
  IP 80.241.223.216  log spam1 page 
Yahoo! Slurpcrawler1 page 
Googlebotcrawler1 page 
Python-urllib 1 page 
bingbotcrawler1 page 
CCBotcrawler2 pages en  31'' 
661 478 visites de robots identifiés
environ 107 par jour en 2014
38 aujourd'hui à 13:59 (+54 visiteurs)
zombies : 3 visites / 31 requêtes - spammeurs : 5 visites

Comment interpréter ces statistiques ?

Elles ont été obtenues à partir de $_SERVER["HTTP_USER_AGENT"] -$HTTP_USER_AGENT avec PHP 3- et gethostbyaddr().
Elles sont faussées par le filtre parfois mis en place par l'hébergeur (free.fr).
Dans les statistiques du site, les robots ne sont pas considérés comme des visiteurs, le navigateur et le pays d'origine qu'ils annoncent sont ignorés. Il est donc facile de relever l'activité de ceux qui ne sont pas refoulés.
S'ils consultent plusieurs pages, ils ne sont pris en compte qu'une fois (sauf s'ils ne reviennent qu'après plus de 10 minutes - plus de 30 minutes pour Google Desktop).
Cette liste est indicative car elle suppose une connexion parfaite avec MySQL, ce qui n'est pas le cas pour ce site. Mais l'hébergement est gratuit, alors ...

Détection du robot

Cette routine est commentée dans la page sur les pièges à robots.
Il est nécessaire de stocker les identificateurs des autres visiteurs pour compléter la liste des robots qui fréquentent le site et celle de leurs "User Agents".

La base de données

Voici la structure de la table robots que j'utilise :
#
# Structure de la table `robots`
#
CREATE TABLE `robots` (
  `heureacces` int(10) unsigned NOT NULL default '0',
  `heurearrivee` int(10) unsigned NOT NULL default '0',
  `nom` varchar(64) NOT NULL default '',
  `dernierepage` varchar(30) NOT NULL default '',
  `nombrepages` mediumint(8) unsigned NOT NULL default '0',
  KEY `heureacces` (`heureacces`),
  KEY `heurearrivee` (`heurearrivee`),
  KEY `nom` (`nom`),
  KEY `nombrepages` (`nombrepages`)
) TYPE=MyISAM;

En fonction de la place occupée par chaque champ chez votre prestataire, choisissez double ou datetime pour les heures, double ou int pour nombrepages, si nécessaire augmentez le nombre de caractères pour dernierepage.

Mise à jour de la base de données

Affichage des données

Nous disposons donc du nom du robot, de l'heure d'arrivée, de l'heure de la dernière page lue et du nombre de pages lues.
S'il n'y a qu'une page et des heures différentes, c'est que la page a été actualisée.
J'ai choisi d'afficher le nombre de pages lues et le temps passé à les lire.


Voilà pour le principe, à vous de voir ce que vous voulez afficher ou calculer.

Un script du même type est maintenant disponible ici

hautHaut de la page

Avec javascript

W3C XHTML 1.0
W3C CSS