Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
vi-bot — Libreria di rilevamento bot lato client con 28 moduli pesati, analisi comportamentale, fingerprinting del browser, honeypot e verifica lato server. Rileva browser headless, Selenium, Puppeteer, Playwright e framework di automazione stealth. | Kitploit
Strumenti/GitHubGitHub/mohamedlahmeri01/vi-bot
Strumenti DifensiviEvasione IDS/IPSSicurezza WebAnti-BotSpoofing dell'Impronta DigitaleRilevamento di Anomalie
GitHubmohamedlahmeri01/vi-bot

vi-bot

Libreria di rilevamento bot lato client con 28 moduli pesati, analisi comportamentale, fingerprinting del browser, honeypot e verifica lato server. Rileva browser headless, Selenium, Puppeteer, Playwright e framework di automazione stealth.

Vedi Repository
2102 mesi faNon ancora revisionato

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

BotDetect v2 — Libreria di Rilevamento Bot per Produzione

BotDetect Logo

Libreria client-side per il rilevamento di bot e automazione con punteggio ponderato, analisi comportamentale, fingerprinting del browser e soglie configurabili. Rileva browser headless, Selenium, Puppeteer, Playwright, strumenti basati su CDP e framework di automazione stealth.

v2.1.0 — honeypot anti-rilevamento, fingerprinting canvas stabile su GPU, analisi comportamentale migliorata, inizializzazione lazy, rilevamento lato server di manomissioni, binding dell'impronta della richiesta e limitazione della frequenza.


Indice

  • Funzionalità
  • Architettura
  • Avvio Rapido
  • API Lato Client
  • Integrazione Lato Server
  • Moduli di Rilevamento
  • Configurazione
  • Checklist per la Produzione
  • Test

Funzionalità

  • 28 moduli di rilevamento che coprono framework di automazione, browser headless, fingerprinting, analisi comportamentale, honeypot e trappole per stack trace
  • Sistema di punteggio ponderato — ogni segnale ha un peso configurabile; il punteggio finale viene calcolato lato server
  • Tre livelli di verdetto: human, suspicious, bot con corrispondenti azioni di contrasto (monitor, challenge, block)
  • Verifica lato server — protetta da nonce, replay, proof-of-work firmato
  • Trappole per stack trace — monkey-patching delle API DOM per catturare gli stack delle chiamate degli strumenti di automazione
  • Analisi comportamentale — curvatura del mouse, varianza temporale della digitazione, accelerazione dello scorrimento, dinamiche tattili
  • Honeypot anti-rilevamento — mascheramento CSS randomizzato, campi esca, nomi di campo realistici
  • Rilevamento lato server di manomissioni — verifica l'integrità dei segnali, rileva tentativi di manipolazione
  • Binding dell'impronta della richiesta — token PoW legati agli attributi della richiesta HTTP
  • Limitazione della frequenza — limitazione per sessione su tutti gli endpoint di verifica
  • Rilevamento no-script — identifica i client che non inviano mai payload di rilevamento
  • Whitelist di crawler noti — oltre 20 bot legittimi esclusi dal calcolo del punteggio

  • Architettura

    root@kitploit:~
    Browser                                  Il tuo Server
    ┌──────────────────────────┐            ┌──────────────────────┐
    │ Collector (singleton)    │  POST      │ Express Middleware    │
    │  ├─ 28 moduli rilevam.   │  segnali   │  ├─ NonceManager      │
    │  ├─ BehaviorTracker      │  + nonce   │  ├─ RateLimiter       │
    │  ├─ HoneypotTraps        │───────────▶│  ├─ TamperDetector    │
    │  ├─ Trappole stack trace │            │  ├─ computeVerdict()  │
    │  └─ IframeContext        │            │  └─ Proof-of-Work     │
    │                          │  verdetto  │                        │
    │  ↓ collect() →           │  + proof   │  Restituisce:         │
    │  DetectionResult[]       │◀───────────│  { verdict, score,    │
    └──────────────────────────┘            │    confidence, proof, │
                                            │    tamperScore }      │
                                            └──────────────────────┘
                                                  │
                                                  ▼
                                            Endpoint protetto da sessione
                                            (login, checkout, etc.)
                                            valida il proof prima di
                                            concedere l'accesso
    

    Principio chiave: Il browser raccoglie solo i segnali DetectionResult[] grezzi. Il server calcola il verdetto finale utilizzando una tabella di pesi segreta. I verdetti calcolati dal client non sono mai attendibili.


    Avvio Rapido

    1. Build

    root@kitploit:~
    npm install
    npm run build
    

    Output in dist/:

    • botdetect.min.js (con polyfill, ~151 KB)
    • botdetect-clean.min.js (solo browser moderni, ~74 KB)

    2. Includere nella pagina

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

    3. Configurare la verifica lato server

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

    4. Inviare i segnali in occasione di un'azione sensibile

    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. Validare lato server

    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 Lato Client

    Collector (singleton)

    root@kitploit:~
    import Collector from './collector/Collector';
    // oppure via globale: BotDetect.collector
    
    MetodoRestituisceDescrizione
    getInstance(config?)CollectorAccessor singleton
    configure(config)voidAggiorna la configurazione a runtime
    getConfig()CollectorConfigConfigurazione corrente
    init()voidInizializzazione lazy di trappole, tracciamento, honeypot
    enableTraps()voidInstalla trappole per stack trace sulle API DOM
    enableBehavioralTracking()voidAvvia il monitoraggio di mouse/tastiera/scorrimento
    enableHoneypots(container?)voidInstalla campi honeypot
    collect()Promise<DetectionResult[]>Esegue tutti i rilevamenti
    setNonce(nonce)voidMemorizza il nonce emesso dal server
    getSessionId()stringIdentificatore univoco di sessione
    getFingerprint()stringHash dell'impronta di sessione
    resetBehavioralData()voidCancella i dati comportamentali
    destroy()voidPulisce tutti i listener e gli elementi DOM

    Detector (solo debug)

    root@kitploit:~
    import Detector from './detector/Detector';
    
    MetodoRestituisceDescrizione
    getInstance(config?)DetectorAccessor singleton
    configure(config)voidAggiorna la configurazione
    analyze(results)DetectionVerdictCalcola punteggio + classifica (solo debug locale)
    handleError(error)DetectionVerdictVerdetto di fallback in caso di errore

    Attenzione: analyze() viene eseguito interamente nel browser. Non utilizzare mai il suo output per decisioni in produzione.

    Tipi

    root@kitploit:~
    interface DetectionResult {
      name: string;      // Nome del modulo
      score: number;     // 0.0 – 1.0
      weight: number;    // 1 – 10 (importanza)
      detail?: string;   // Descrizione leggibile dall'uomo
    }
    
    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;   // timeout per modulo (default: 3000)
      enableTraps: boolean;
      enableBehavioralTracking: boolean;
      enableHoneypots: boolean;
      thresholds: { strict: number; balanced: number; relaxed: number };
    }
    

    Integrazione Lato Server

    Express Middleware

    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 },              // scadenza nonce di 5 minuti
      noScript: { timeout: 10000 },         // finestra no-script di 10s
      rateLimit: { maxRequests: 10, windowMs: 60000 },
      noScriptPaths: ['/api/login', '/api/checkout', '/api/register']
    });
    
    app.use('/api', router);
    

    Endpoint

    EndpointMetodoScopo
    /api/botdetect/nonceGETEmette un nonce monouso
    /api/botdetect/verifyPOSTInvia i segnali, riceve verdetto firmato
    /api/botdetect/midcyclePOSTRiverifica a metà sessione

    Formato della risposta del server

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

    Calcolo del punteggio lato server (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 se vengono rilevate manomissioni dei segnali
    

    Moduli di Rilevamento

    Framework di automazione (pesi 5–7)

    ModuloRilevaPeso
    webdrivernavigator.webdriver, proprietà selenium, descrittori getter5
    chromeDriverBuilt-in duplicati su window, cache_ in document6
    fakeCreateElementdocument.createElement contraffatto7
    toStringSpoofedManomissione di Function.prototype.toString6
    cdpDetectionVariabili globali cdc_*, __playwright__, __puppeteer__, chrome.runtime7
    stealthDetectionIntegrità delle funzioni native (Notification, Navigator, Permissions, plugins, languages, canvas)5
    inconsistentCloneErrorIncoerenze nell'algoritmo di clonazione strutturata5
    iframeChromeRuntimechrome.runtime in contesto iframe5
    inconsistentChromeObjectOggetto chrome diverso tra iframe e finestra principale4

    Specifici per Playwright (pesi 3–4)

    ModuloRilevaPeso
    playwrightWebKitArtefatti di automazione WebKit4
    playwrightOrientationIncoerenza tra orientamento e chrome.runtime3

    Analisi comportamentale (peso 7)

    ModuloSegnali AnalizzatiPeso
    behavioralAnalysisCurvatura del mouse + rapporto linee rette, CV della digitazione + pattern di raffica + KPM, accelerazione dello scorrimento + cambi di direzione, varianza della forza tattile + raggio7

    Fingerprinting del browser (pesi 3–4)

    ModuloRilevaPeso
    canvasFingerprintDifferenze di rendering canvas, somma pixel, rapporto canvas bianco4
    webglFingerprintRenderer SwiftShader, llvmpipe, Brian Paul, precisione shader4
    fingerprintConsistencyVerifica incrociata: coerenza tra canvas + WebGL + schermo + navigator4
    audioFingerprintFrequenza di campionamento AudioContext, anomalie nei dati di frequenza3
    fontEnumerationSet di font limitati (≤15 caratteri base → headless)3
    timingAnomaliesRisoluzione di performance.now(), temporizzazione loop, ritardo rAF, latenza eval3

    Proprietà Navigator e OS (peso 5)

    ModuloControlliPeso
    navigatorInconsistencies11 controlli: languages, plugins, mimeTypes, platform, UA, cookies, DNT, touch, hardwareConcurrency, deviceMemory, connection5

    Schermo e Performance (peso 3)

    ModuloRilevaPeso
    screenAnomaliesDimensioni zero, profondità colore, incoerenze spazio disponibile3
    performanceAnomaliesTempistiche di navigazione, memoria, time origin, performance.now()3
    navigationFlowVoci di performance, tracciamento pushState, referrer mancante3

    Trappole attive e Honeypot (pesi 8–9)

    ModuloRilevaPeso
    honeypotTrapsCampi nascosti randomizzati + esche + endpoint canarino9
    stackTraceTrapsAnalisi dello stack del chiamante di querySelector/getElementById/eval8

    Di rete e contestuali (pesi 1–2)

    ModuloRilevaPeso
    webrtcCheckEsposizione IP locale, anomalie nei candidati ICE2
    hardwareConcurrencyRapporto CPU vs memoria, valori implausibili2
    hiddenScrollBarra di scorrimento nascosta in headless (solo desktop)2
    noHovermqSupporto media query hover assente (solo desktop)1
    webGLDisabledWebGL disabilitato, SwiftShader1
    inconsistentPermissionsStati API dei permessi non corrispondenti4

    Whitelist (peso 0)

    ModuloRilevaPeso
    verifiedBotsOltre 20 crawler noti (Googlebot, Bingbot, Yandex, Facebook, Twitter, ecc.) — restituisce -1, escluso dal punteggio0

    Configurazione

    Collector

    root@kitploit:~
    const collector = Collector.getInstance({
      detectionTimeoutMs: 1000,    // Più basso per UX più veloce
      enableTraps: true,
      enableBehavioralTracking: true,
      enableHoneypots: true,
      thresholds: {
        strict: 0.3,     // Aggressivo (login, checkout)
        balanced: 0.5,   // Default
        relaxed: 0.7     // Permissivo (navigazione contenuti)
      }
    });
    

    Detector (solo debug)

    root@kitploit:~
    const detector = Detector.getInstance({
      threshold: 'balanced',      // 'strict' | 'balanced' | 'relaxed' | number
      minSignals: 2,              // Segnali minimi prima del boost
      signalBoostThreshold: 0.8,  // Segnali sopra questa soglia ottengono peso extra
      failPolicy: 'open',         // 'open' = umano in caso di errore, 'closed' = bot in caso di errore
      frictionThresholds: {
        monitor: 0.2,
        challenge: 0.5,
        block: 0.8
      }
    });
    

    Server

    root@kitploit:~
    createBotDetectEndpoint({
      secretSalt: process.env.BOTDETECT_SALT,  // Mantieni segreto
      scoring: { threshold: 'balanced' },
      nonce: { ttl: 300000, cleanupInterval: 60000 },
      noScript: { timeout: 10000 },
      rateLimit: { maxRequests: 10, windowMs: 60000 },
      requestFingerprint: true,                // Lega PoW agli attributi della richiesta
      noScriptPaths: ['/api/login', '/api/checkout']
    });
    

    Checklist per la Produzione

    Sicurezza

    • secretSalt salvato in una variabile d'ambiente, mai nel codice
    • HTTPS + HSTS abilitati
    • CORS limitato al tuo dominio
    • TTL del nonce impostato a ≤ 5 minuti
    • Segreti di sessione ruotati regolarmente
    • Limitazione della frequenza configurata per endpoint
    • Binding dell'impronta della richiesta abilitato

    Performance

    • detectionTimeoutMs ottimizzato (raccomandato 1000–2000ms)
    • Bundle pulito (botdetect-clean.min.js) per browser moderni
    • Pre-caricare il rilevamento durante l'inattività prima di un'azione sensibile
    • Monitorare la latenza di raccolta in produzione (performance.measure)

    Monitoraggio

    • Registrare eventi con tamperScore > 0 (tentativi di manipolazione dei segnali)
    • Tracciare il tasso di friction === 'block' nel tempo
    • Avvisare in caso di superamento delle soglie di limitazione della frequenza
    • Revisionare trimestralmente l'efficacia del rilevamento (i bot si evolvono)

    Test

    root@kitploit:~
    npm test              # 74 Jest tests across 6 suites
    npm run typecheck     # TypeScript strict mode
    npm run lint          # ESLint
    npm run build         # Webpack production bundle
    

    Licenza

    Apache — Lahmeri Mohamed Amine

    Scarica lo strumento