BotDetect v2 — Libreria di Rilevamento Bot per Produzione
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.
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
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.
Integrità delle funzioni native (Notification, Navigator, Permissions, plugins, languages, canvas)
5
inconsistentCloneError
Incoerenze nell'algoritmo di clonazione strutturata
5
iframeChromeRuntime
chrome.runtime in contesto iframe
5
inconsistentChromeObject
Oggetto chrome diverso tra iframe e finestra principale
4
Specifici per Playwright (pesi 3–4)
Modulo
Rileva
Peso
playwrightWebKit
Artefatti di automazione WebKit
4
playwrightOrientation
Incoerenza tra orientamento e chrome.runtime
3
Analisi comportamentale (peso 7)
Modulo
Segnali Analizzati
Peso
behavioralAnalysis
Curvatura del mouse + rapporto linee rette, CV della digitazione + pattern di raffica + KPM, accelerazione dello scorrimento + cambi di direzione, varianza della forza tattile + raggio
7
Fingerprinting del browser (pesi 3–4)
Modulo
Rileva
Peso
canvasFingerprint
Differenze di rendering canvas, somma pixel, rapporto canvas bianco
4
webglFingerprint
Renderer SwiftShader, llvmpipe, Brian Paul, precisione shader
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
}
});