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 `botname` est vide, le trigger est utilisé comme nom