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
211 mese 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

Detector (solo debug)

root@kitploit:~
import Detector from './detector/Detector';

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/nonceGET

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)

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)

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)

Trappole attive e Honeypot (pesi 8–9)

ModuloRilevaPeso
honeypotTrapsCampi nascosti randomizzati + esche + endpoint canarino9

Di rete e contestuali (pesi 1–2)

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
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
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
Emette un nonce monouso
/api/botdetect/verifyPOSTInvia i segnali, riceve verdetto firmato
/api/botdetect/midcyclePOSTRiverifica a metà sessione
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
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
Modulo
Rileva
Peso
screenAnomaliesDimensioni zero, profondità colore, incoerenze spazio disponibile3
performanceAnomaliesTempistiche di navigazione, memoria, time origin, performance.now()3
navigationFlowVoci di performance, tracciamento pushState, referrer mancante3
stackTraceTrapsAnalisi dello stack del chiamante di querySelector/getElementById/eval8
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