Lecteur Markdown
Botsniffer Documentation
Botsniffer - Bot Statistics #
Statistiques et analyse des visites de bots.
Namespace: Beamreactor\Plugins\Botsniffer
Version: 2.0.0
Niveau requis: BOTSNIFFER_LEVEL_HIGHUSER
Vue d'ensemble #
Module de surveillance des bots visitant le site. Enregistre les visites, les corrèle avec la base de données des bots connus (botdb), et fournit des statistiques avec analyse de risque.
Fonctionnalités #
- Journalisation des visites de bots
- Corrélation avec la base
botdb - Calcul du risque moyen
- Détection des bots inconnus
- Ajout de nouveaux bots à la base
- Purge des logs
- Pagination des résultats
Actions (paramètre botaction) #
| Valeur | Action | Description |
|--------|--------|-------------|
| $dialbot[2] | Purge | Vide la table botsniffer |
| $dialbot[3] | Stats | Affiche les statistiques agrégées |
| $dialbot[9] | Bot list | Liste les bots connus |
Actions (paramètre botedit) #
| Valeur | Action |
|--------|--------|
| $dialbot[11] | Affiche le formulaire d'ajout |
| 1 | Traite l'ajout d'un nouveau bot |
Structure des tables #
botsniffer #
CREATE TABLE botsniffer (
id INT AUTO_INCREMENT PRIMARY KEY,
ip VARCHAR(45),
useragent TEXT,
tstamp DATETIME,
INDEX (tstamp),
INDEX (ip)
);
botdb #
CREATE TABLE botdb (
id INT AUTO_INCREMENT PRIMARY KEY,
trigger VARCHAR(30) NOT NULL,
botname VARCHAR(200),
url VARCHAR(255),
category VARCHAR(30) DEFAULT 'unknown',
risk TINYINT DEFAULT 0,
firstvisit DATE,
lastvisit DATE,
UNIQUE KEY (trigger),
INDEX (category)
);
Catégories #
| Clé | Description |
|-----|-------------|
| search_engine | Moteurs de recherche |
| ai_crawler | Crawlers IA |
| social_media | Réseaux sociaux |
| monitoring | Services de monitoring |
| archiver | Archiveurs |
| feed_reader | Lecteurs de flux |
| seo_tool | Outils SEO |
| malicious | Bots malveillants |
| unknown | Non identifiés |
Niveau de risque #
Échelle 0-9. Les bots inconnus reçoivent un risque par défaut de 3.
Le module calcule :
- Risque moyen :
Σ(hits × risk) / total_hits - Pourcentage inconnus :
unknown_hits / total_hits × 100
Paramètres GET #
| Paramètre | Type | Description |
|-----------|------|-------------|
| bspage | int | Numéro de page |
Paramètres POST #
Ajout de bot #
| Paramètre | Type | Description |
|-----------|------|-------------|
| fields[preg] | string | Trigger de détection (max 30 car.) |
| fields[botname] | string | Nom du bot (max 200 car.) |
| fields[url] | URL | Documentation du bot |
| fields[category] | string | Catégorie |
| fields[risk] | int | Niveau de risque (0-9) |
Locale #
Clés utilisées dans $dialbot:
| Index | Description |
|-------|-------------|
| 1 | Lien retour |
| 2 | Bouton purge |
| 3 | Bouton stats |
| 4 | Message purge OK |
| 5 | Confirmation purge |
| 6 | Label total visites |
| 7 | En-tête IP |
| 8 | En-tête User-Agent |
| 9 | Bouton liste bots |
| 10 | Label nombre bots connus |
| 11 | Bouton ajouter bot |
| 13 | Label première entrée |
| 14 | En-tête timestamp |
| 15 | En-tête risque |
| 16 | Message ajout OK |
| 17 | Erreur trigger requis |
| 18 | Erreur doublon |
| 21 | Label bot inconnu |
| 24 | Label risque moyen |
| 25 | En-tête nom |
| th_category | En-tête catégorie |
| cat_* | Labels catégories |
| unknown_pct | Label pourcentage inconnus |
Algorithme de matching #
foreach($channel as $trigger => $info)
{
if(stripos($useragent, $trigger) !== false)
{
// Bot identifié
break;
}
}
Le matching est insensible à la casse et cherche le trigger n'importe où dans le User-Agent.
Vues #
Vue principale #
- Panneau de contrôle (total, purge, stats, liste)
- Liste des 25 dernières visites paginée
- Risque et catégorie par visite
Vue stats #
- Top 20 des User-Agents par nombre de hits
- Risque moyen calculé
- Pourcentage de bots inconnus
Vue liste bots #
- Tous les bots de
botdb - Accès au formulaire d'ajout
CSS #
Le module charge plugins/botsniffer/css/botsniffer.css.
Classes principales :
.botsniffer-table— Tableau de données.botsniffer-panel— Panneau de contrôle.botsniffer-risk-bar— Barre de risque.botsniffer-cat-badge— Badge catégorie.botsniffer-unknown— Style bot inconnu.botsniffer-alert— Messages d'alerte.botsniffer-pagination— Contrôles de pagination
Notes #
- La purge est irréversible (TRUNCATE)
- Les bots inconnus sont signalés visuellement
- Le trigger doit être unique dans
botdb - Si
botnameest vide, le trigger est utilisé comme nom