Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
vi-bot — Bibliothèque de détection de bots côté client avec 28 modules pondérés, analyse comportementale, empreinte numérique de navigateur, honeypots et vérification côté serveur. Détecte les navigateurs sans tête, Selenium, Puppeteer, Playwright et les frameworks d'automatisation furtifs. | Kitploit
Outils/GitHubGitHub/mohamedlahmeri01/vi-bot
Outils DéfensifsÉvasion IDS/IPSSécurité WebAnti-BotUsurpation d'Empreinte NumériqueDétection d'Anomalies
GitHubmohamedlahmeri01/vi-bot

vi-bot

Voir le dépôt
210il y a 2 moisPas encore vérifié

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →

À propos

Bibliothèque de détection de bots côté client avec 28 modules pondérés, analyse comportementale, empreinte numérique de navigateur, honeypots et vérification côté serveur. Détecte les navigateurs sans tête, Selenium, Puppeteer, Playwright et les frameworks d'automatisation furtifs.

Partager

BotDetect v2 — Bibliothèque de détection de robots en production

BotDetect Logo

Bibliothèque de détection de robots et d'automatisation côté client avec score pondéré, analyse comportementale, empreinte numérique du navigateur et seuils configurables. Détecte les navigateurs sans tête, Selenium, Puppeteer, Playwright, les outils basés sur CDP et les frameworks d'automatisation furtifs.

v2.1.0 — pots de miel anti-détection, empreinte canvas stable sur GPU, analyse comportementale améliorée, initialisation paresseuse, détection de falsification côté serveur, liaison d'empreinte de requête, et limitation de débit.


Table des matières

  • Fonctionnalités
  • Architecture
  • Démarrage rapide
  • API côté client
  • Intégration côté serveur
  • Modules de détection
  • Configuration
  • Liste de vérification pour la production
  • Tests

Fonctionnalités

  • 28 modules de détection couvrant les frameworks d'automatisation, les navigateurs sans tête, l'empreinte numérique, l'analyse comportementale, les pots de miel et les pièges de trace de pile
  • Système de score pondéré — chaque signal a un poids configurable ; le score final est calculé côté serveur
  • Trois niveaux de verdict : humain, suspect, robot avec des actions de friction correspondantes (surveiller, défier, bloquer)
  • Vérification côté serveur — protégée par nonce, contre la relecture, signée par preuve de travail
  • Pièges de trace de pile — modifie les API DOM pour capturer les appels de pile des outils d'automatisation
  • Analyse comportementale — courbure de la souris, variance temporelle des frappes, accélération du défilement, dynamique tactile
  • Pots de miel anti-détection — masquage CSS aléatoire, champs leurres, noms de champs réalistes
  • Détection de falsification côté serveur — valide l'intégrité des signaux, détecte les tentatives de triche
  • Liaison d'empreinte de requête — jetons PoW liés aux attributs de la requête HTTP
  • Limitation de débit — limitation de débit par session sur tous les points de terminaison de vérification
  • Détection sans script — identifie les clients qui n'envoient jamais de charges utiles de détection
  • Liste blanche de robots connus — 20+ robots légitimes exclus du score

  • Architecture

    root@kitploit:~
    Navigateur                                 Votre Serveur
    ┌──────────────────────────────┐            ┌──────────────────────────┐
    │ Collecteur (singleton)       │  POST      │ Middleware Express        │
    │  ├─ 28 modules de détection │  signaux   │  ├─ GestionnaireNonce     │
    │  ├─ SuiviComportemental     │  + nonce   │  ├─ LimiteurDébit         │
    │  ├─ PiègesPotMiel           │───────────▶│  ├─ DétecteurFalsification│
    │  ├─ PiègesTracePile         │            │  ├─ calculerVerdict()     │
    │  └─ ContexteIframe         │            │  └─ Preuve-de-Travail      │
    │                              │  verdict   │                            │
    │  ↓ collect() →              │  + preuve  │  Retourne :               │
    │  DetectionResult[]          │◀───────────│  { verdict, score,        │
    └──────────────────────────────┘            │    confiance, preuve,     │
                                                │    scoreFalsification }   │
                                                └──────────────────────────┘
                                                      │
                                                      ▼
                                                Point de terminaison
                                                protégé par session
                                                (connexion, paiement, etc.)
                                                valide la preuve avant
                                                d'accorder l'accès
    

    Principe clé : Le navigateur collecte uniquement les signaux bruts DetectionResult[]. Le serveur calcule le verdict final à l'aide d'une table de poids secrète. Les verdicts calculés par le client ne sont jamais fiables.


    Démarrage rapide

    1. Construire

    root@kitploit:~
    npm install
    npm run build
    

    Produit dans dist/ :

    • botdetect.min.js (avec polyfills, ~151 Ko)
    • botdetect-clean.min.js (navigateurs modernes uniquement, ~74 Ko)

    2. Inclure sur votre page

    root@kitploit:~
    <script src="/chemin/vers/botdetect.min.js"></script>
    <script>
      BotDetect.collector.enableTraps();
      BotDetect.collector.enableBehavioralTracking();
      BotDetect.collector.enableHoneypots();
    </script>
    

    3. Configurer la vérification côté serveur

    root@kitploit:~
    cd server
    npm install express cors express-session
    node example-integration.js
    

    4. Envoyer les signaux lors d'une action sensible

    root@kitploit:~
    async function onLogin() {
      const { nonce } = await (await fetch('/api/botdetect/nonce')).json();
      BotDetect.collector.setNonce(nonce);
    
      const signals = await BotDetect.collector.collect();
    
      const resp = await fetch('/api/botdetect/verify', {
        method: 'POST',
        headers: { 'Content-Type': 'application/json' },
        body: JSON.stringify({ signals, nonce })
      });
      const { verdict, score, proof, friction } = await resp.json();
    
      document.getElementById('botdetect-proof').value = proof;
      document.getElementById('login-form').submit();
    }
    

    5. Valider sur le serveur

    root@kitploit:~
    app.post('/api/login', (req, res) => {
      const bd = req.session.botdetect;
      if (!bd) return res.status(403).json({ error: 'no_verification' });
      if (bd.verdict === 'bot') return res.status(403).json({ error: 'access_denied' });
      if (bd.verdict === 'suspicious') return challengeCaptcha(req, res);
      res.json({ success: true });
    });
    

    API côté client

    Collecteur (singleton)

    root@kitploit:~
    import Collector from './collector/Collector';
    // ou via global : BotDetect.collector
    
    MéthodeRetourDescription
    getInstance(config?)CollectorAccesseur singleton
    configure(config)voidMettre à jour la configuration en cours d'exécution
    getConfig()CollectorConfigConfiguration actuelle
    init()voidInitialisation paresseuse des pièges, suivi, pots de miel
    enableTraps()voidInstaller les pièges de trace de pile sur les API DOM
    enableBehavioralTracking()voidDémarrer la surveillance souris/clavier/défilement
    enableHoneypots(conteneur?)voidInstaller les champs pot de miel
    collect()Promise<DetectionResult[]>Exécuter toutes les détections
    setNonce(nonce)voidStocker le nonce émis par le serveur
    getSessionId()stringIdentifiant unique de session
    getFingerprint()stringHachage d'empreinte de session
    resetBehavioralData()voidEffacer les données comportementales
    destroy()voidNettoyer tous les écouteurs et éléments DOM

    Détecteur (débogage uniquement)

    root@kitploit:~
    import Detector from './detector/Detector';
    
    MéthodeRetourDescription
    getInstance(config?)DetectorAccesseur singleton
    configure(config)voidMettre à jour la configuration
    analyze(résultats)DetectionVerdictScore + classification (débogage local uniquement)
    handleError(erreur)DetectionVerdictVerdict de secours en cas d'échec

    Avertissement : analyze() s'exécute entièrement dans le navigateur. N'utilisez jamais sa sortie pour des décisions de production.

    Types

    root@kitploit:~
    interface DetectionResult {
      name: string;      // Nom du module
      score: number;     // 0.0 – 1.0
      weight: number;    // 1 – 10 (importance)
      detail?: string;   // Description lisible par un humain
    }
    
    interface DetectionVerdict {
      verdict: 'bot' | 'suspicious' | 'human';
      score: number;       // 0.0 – 1.0
      confidence: number;  // 0.0 – 1.0
      signals: DetectionResult[];
      threshold: number;
      friction: 'monitor' | 'challenge' | 'block';
    }
    
    interface CollectorConfig {
      detectionTimeoutMs: number;   // délai d'attente par module (défaut : 3000)
      enableTraps: boolean;
      enableBehavioralTracking: boolean;
      enableHoneypots: boolean;
      thresholds: { strict: number; balanced: number; relaxed: number };
    }
    

    Intégration côté serveur

    Middleware Express

    root@kitploit:~
    const { createBotDetectEndpoint } = require('./server');
    
    const { router, generateProofOfWork, cleanup } = createBotDetectEndpoint({
      secretSalt: process.env.BOTDETECT_SALT,
      scoring: {
        threshold: 'balanced',       // 'strict' | 'balanced' | 'relaxed' | number
        minSignals: 2,
        signalBoostThreshold: 0.8,
        frictionThresholds: { monitor: 0.2, challenge: 0.5, block: 0.8 }
      },
      nonce: { ttl: 300000 },              // expiration du nonce après 5 minutes
      noScript: { timeout: 10000 },         // fenêtre sans script de 10 s
      rateLimit: { maxRequests: 10, windowMs: 60000 },
      noScriptPaths: ['/api/login', '/api/checkout', '/api/register']
    });
    
    app.use('/api', router);
    

    Points de terminaison

    Point de terminaisonMéthodeObjectif
    /api/botdetect/nonceGETÉmettre un nonce à usage unique
    /api/botdetect/verifyPOSTSoumettre les signaux, recevoir un verdict signé
    /api/botdetect/midcyclePOSTRe-vérification en milieu de session

    Format de réponse du serveur

    root@kitploit:~
    {
      "verdict": "human",
      "score": 0.125,
      "confidence": 0.85,
      "tamperScore": 0,
      "friction": "monitor",
      "threshold": 0.5,
      "proof": "a1b2c3d4e5f6..."
    }
    

    Score côté serveur (Node.js)

    root@kitploit:~
    const { computeVerdict, RateLimiter, NonceManager } = require('./scoring');
    
    const verdict = computeVerdict(signals, {
      threshold: 'balanced',
      minSignals: 2,
      signalBoostThreshold: 0.8,
      frictionThresholds: { monitor: 0.2, challenge: 0.5, block: 0.8 }
    });
    
    // verdict.tamperScore > 0 si falsification de signal détectée
    

    Modules de détection

    Frameworks d'automatisation (poids 5–7)

    ModuleDétectePoids
    webdrivernavigator.webdriver, propriétés selenium, descripteurs getter5
    chromeDriverDoublons intégrés sur window, cache_ dans document6
    fakeCreateElementdocument.createElement usurpé7
    toStringSpoofedAltération de Function.prototype.toString6
    cdpDetectioncdc_*, __playwright__, __puppeteer__ globals, chrome.runtime7
    stealthDetectionIntégrité des fonctions natives (Notification, Navigator, Permissions, plugins, languages, canvas)5
    inconsistentCloneErrorIncohérences dans l'algorithme de clonage structuré5
    iframeChromeRuntimechrome.runtime dans un contexte iframe5
    inconsistentChromeObjectObjet chrome différent entre iframe et fenêtre principale4

    Spécifiques à Playwright (poids 3–4)

    ModuleDétectePoids
    playwrightWebKitArtefacts d'automatisation WebKit4
    playwrightOrientationIncohérence orientation + chrome.runtime3

    Analyse comportementale (poids 7)

    ModuleSignaux analysésPoids
    behavioralAnalysisCourbure de la souris + rapport ligne droite, CV des frappes + schémas de rafales + KPM, accélération du défilement + changements de direction, variance de force tactile + rayon7

    Empreinte numérique du navigateur (poids 3–4)

    ModuleDétectePoids
    canvasFingerprintDifférences de rendu canvas, somme des pixels, ratio toile vierge4
    webglFingerprintRendu SwiftShader, llvmpipe, Brian Paul, précision des shaders4
    fingerprintConsistencyVérification croisée : cohérence canvas + WebGL + écran + navigateur4
    audioFingerprintTaux d'échantillonnage AudioContext, anomalies des données de fréquence3
    fontEnumerationEnsembles de polices limités (≤15 polices de base → sans tête)3
    timingAnomaliesRésolution de performance.now(), temporisation des boucles, délai rAF, latence eval3

    Propriétés Navigateur & OS (poids 5)

    ModuleVérifiePoids
    navigatorInconsistencies11 vérifications : languages, plugins, mimeTypes, platform, UA, cookies, DNT, touch, hardwareConcurrency, deviceMemory, connection5

    Écran & Performances (poids 3)

    ModuleDétectePoids
    screenAnomaliesDimensions nulles, profondeur de couleur, incohérences d'espace disponible3
    performanceAnomaliesTiming de navigation, mémoire, origine temporelle, performance.now()3
    navigationFlowEntrées de performance, suivi pushState, référent manquant3

    Pièges actifs & Pots de miel (poids 8–9)

    ModuleDétectePoids
    honeypotTrapsChamps cachés aléatoires + leurres + point de terminaison canari9
    stackTraceTrapsAnalyse de la pile d'appels de querySelector/getElementById/eval8

    Réseau & Contextuel (poids 1–2)

    ModuleDétectePoids
    webrtcCheckExposition IP locale, anomalies des candidats ICE2
    hardwareConcurrencyRapport CPU vs mémoire, valeurs invraisemblables2
    hiddenScrollBarre de défilement cachée en mode sans tête (bureau uniquement)2
    noHovermqAbsence de prise en charge de la media query hover (bureau uniquement)1
    webGLDisabledWebGL désactivé, SwiftShader1
    inconsistentPermissionsÉtats disparates de l'API Permissions4

    Liste blanche (poids 0)

    ModuleDétectePoids
    verifiedBots20+ robots connus (Googlebot, Bingbot, Yandex, Facebook, Twitter, etc.) — retourne -1, exclus du score0

    Configuration

    Collecteur

    root@kitploit:~
    const collector = Collector.getInstance({
      detectionTimeoutMs: 1000,    // Plus bas pour une UX plus rapide
      enableTraps: true,
      enableBehavioralTracking: true,
      enableHoneypots: true,
      thresholds: {
        strict: 0.3,     // Agressif (connexion, paiement)
        balanced: 0.5,   // Défaut
        relaxed: 0.7     // Permissif (navigation de contenu)
      }
    });
    

    Détecteur (débogage uniquement)

    root@kitploit:~
    const detector = Detector.getInstance({
      threshold: 'balanced',      // 'strict' | 'balanced' | 'relaxed' | number
      minSignals: 2,              // Nombre minimum de signaux avant boost
      signalBoostThreshold: 0.8,  // Les signaux au-dessus de ce seuil reçoivent un poids supplémentaire
      failPolicy: 'open',         // 'open' = humain en cas d'erreur, 'closed' = robot en cas d'erreur
      frictionThresholds: {
        monitor: 0.2,
        challenge: 0.5,
        block: 0.8
      }
    });
    

    Serveur

    root@kitploit:~
    createBotDetectEndpoint({
      secretSalt: process.env.BOTDETECT_SALT,  // Garder secret
      scoring: { threshold: 'balanced' },
      nonce: { ttl: 300000, cleanupInterval: 60000 },
      noScript: { timeout: 10000 },
      rateLimit: { maxRequests: 10, windowMs: 60000 },
      requestFingerprint: true,                // Lier PoW aux attributs de la requête
      noScriptPaths: ['/api/login', '/api/checkout']
    });
    

    Liste de vérification pour la production

    Sécurité

    • secretSalt stocké dans une variable d'environnement, jamais dans le code
    • HTTPS + HSTS activé
    • CORS limité à votre domaine
    • Durée de vie du nonce définie à ≤ 5 minutes
    • Secrets de session changés régulièrement
    • Limitation de débit configurée par point de terminaison
    • Liaison d'empreinte de requête activée

    Performances

    • detectionTimeoutMs ajusté (1000–2000ms recommandé)
    • Bundle propre (botdetect-clean.min.js) pour les navigateurs modernes
    • Pré-charger la détection au ralenti avant une action sensible
    • Surveiller la latence de collecte en production (performance.measure)

    Surveillance

    • Journaliser les événements tamperScore > 0 (tentatives de falsification de signal)
    • Suivre le taux de friction === 'block' dans le temps
    • Alerter en cas de dépassement des seuils de limitation de débit
    • Réviser l'efficacité de la détection trimestriellement (les robots évoluent)

    Tests

    root@kitploit:~
    npm test              # 74 tests Jest répartis sur 6 suites
    npm run typecheck     # Mode strict TypeScript
    npm run lint          # ESLint
    npm run build         # Bundle de production Webpack
    

    Licence

    Apache — Lahmeri Mohamed Amine

    Télécharger l’outil