Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
vi-bot — Biblioteca de detección de bots del lado del cliente con 28 módulos ponderados, análisis de comportamiento, huella digital del navegador, honeypots y verificación del lado del servidor. Detecta navegadores sin interfaz gráfica, Selenium, Puppeteer, Playwright y marcos de automatización sigilosos. | Kitploit
Herramientas/GitHubGitHub/mohamedlahmeri01/vi-bot
Herramientas DefensivasEvasión de IDS/IPSSeguridad WebAnti-BotSuplantación de Huella DigitalDetección de Anomalías
GitHubmohamedlahmeri01/vi-bot

vi-bot

Ver Repositorio
2hace 1 mesAún no revisado

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →

Acerca de

Biblioteca de detección de bots del lado del cliente con 28 módulos ponderados, análisis de comportamiento, huella digital del navegador, honeypots y verificación del lado del servidor. Detecta navegadores sin interfaz gráfica, Selenium, Puppeteer, Playwright y marcos de automatización sigilosos.

Compartir

BotDetect v2 — Librería de Detección de Bots en Producción

BotDetect Logo

Librería de detección de bots y automatización del lado del cliente con puntuación ponderada, análisis de comportamiento, huella digital del navegador y umbrales configurables. Detecta navegadores sin cabeza, Selenium, Puppeteer, Playwright, herramientas basadas en CDP y marcos de automatización sigilosos.

v2.1.0 — honeypots anti-detección, huella digital de canvas estable en GPU, análisis de comportamiento mejorado, inicialización diferida, detección de manipulación del lado del servidor, vinculación de huella de solicitud y limitación de tasa.


Tabla de Contenidos

  • Características
  • Arquitectura
  • Inicio Rápido
  • API del Lado del Cliente
  • Integración del Lado del Servidor
  • Módulos de Detección
  • Configuración
  • Lista de Verificación para Producción
  • Pruebas

Características

  • 28 módulos de detección que cubren marcos de automatización, navegadores sin cabeza, huellas digitales, análisis de comportamiento, honeypots y trampas de traza de pila
  • Sistema de puntuación ponderada — cada señal tiene un peso configurable; la puntuación final se calcula en el servidor
  • Tres niveles de veredicto: human, suspicious, bot con acciones de fricción correspondientes (monitor, challenge, block)
  • Verificación del lado del servidor — protegida por nonce, con protección contra repetición y firma de prueba de trabajo
  • Trampas de traza de pila — modifica APIs del DOM para capturar las pilas de llamadas de herramientas de automatización
  • Análisis de comportamiento — curvatura del ratón, variación de tiempo de pulsaciones, aceleración de desplazamiento, dinámica táctil
  • Honeypots anti-detección — ocultación CSS aleatoria, campos señuelo, nombres de campo realistas
  • Detección de manipulación del lado del servidor — valida la integridad de las señales, detecta intentos de engaño
  • Vinculación de huella de solicitud — tokens PoW vinculados a atributos de solicitud HTTP
  • Limitación de tasa — limitación de tasa por sesión en todos los endpoints de verificación
  • Detección sin script — identifica clientes que nunca envían cargas de detección
  • Lista blanca de rastreadores conocidos — más de 20 bots legítimos excluidos de la puntuación

  • Arquitectura

    root@kitploit:~
    Navegador                                  Tu Servidor
    ┌──────────────────────────┐            ┌──────────────────────┐
    │ Colector (singleton)     │  POST      │ Middleware Express     │
    │  ├─ 28 módulos detección│  señales   │  ├─ NonceManager       │
    │  ├─ BehaviorTracker     │  + nonce   │  ├─ RateLimiter        │
    │  ├─ HoneypotTraps       │───────────▶│  ├─ TamperDetector     │
    │  ├─ Trampas traza pila  │            │  ├─ computeVerdict()   │
    │  └─ IframeContext       │            │  └─ Prueba de trabajo  │
    │                         │  veredicto │                        │
    │  ↓ collect() →          │  + prueba  │  Devuelve:             │
    │  DetectionResult[]      │◀───────────│  { verdict, score,     │
    └──────────────────────────┘            │    confidence, proof,  │
                                            │    tamperScore }       │
                                            └──────────────────────┘
                                                  │
                                                  ▼
                                            Endpoint con compuerta de sesión
                                            (inicio sesión, pago, etc.)
                                            valida la prueba antes de
                                            conceder acceso
    

    Principio clave: El navegador solo recopila señales DetectionResult[] sin procesar. El servidor calcula el veredicto final utilizando una tabla de pesos secreta. Los veredictos calculados por el cliente nunca se confían.


    Inicio Rápido

    1. Construir

    root@kitploit:~
    npm install
    npm run build
    

    Salida en dist/:

    • botdetect.min.js (con polyfills, ~151 KB)
    • botdetect-clean.min.js (solo navegadores modernos, ~74 KB)

    2. Incluir en tu página

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

    3. Configurar la verificación del lado del servidor

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

    4. Enviar señales en acción 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. Validar en el servidor

    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 del Lado del Cliente

    Colector (singleton)

    root@kitploit:~
    import Collector from './collector/Collector';
    // o mediante global: BotDetect.collector
    
    MétodoDevuelveDescripción
    getInstance(config?)CollectorAccesor singleton
    configure(config)voidActualizar configuración en tiempo de ejecución
    getConfig()CollectorConfigConfiguración actual
    init()voidInicialización diferida de trampas, seguimiento, honeypots
    enableTraps()voidInstalar trampas de traza de pila en APIs del DOM
    enableBehavioralTracking()voidIniciar monitoreo de ratón/teclado/desplazamiento
    enableHoneypots(container?)voidInstalar campos honeypot
    collect()Promise<DetectionResult[]>Ejecutar todas las detecciones
    setNonce(nonce)voidAlmacenar nonce emitido por el servidor
    getSessionId()stringIdentificador único de sesión
    getFingerprint()stringHash de huella de sesión
    resetBehavioralData()voidLimpiar datos de comportamiento
    destroy()voidLimpiar todos los listeners y elementos DOM

    Detector (solo depuración)

    root@kitploit:~
    import Detector from './detector/Detector';
    
    MétodoDevuelveDescripción
    getInstance(config?)DetectorAccesor singleton
    configure(config)voidActualizar configuración
    analyze(results)DetectionVerdictPuntuar + clasificar (solo depuración local)
    handleError(error)DetectionVerdictVeredicto de respaldo en caso de fallo

    Advertencia: analyze() se ejecuta completamente en el navegador. Nunca uses su salida para decisiones en producción.

    Tipos

    root@kitploit:~
    interface DetectionResult {
      name: string;      // Nombre del módulo
      score: number;     // 0.0 – 1.0
      weight: number;    // 1 – 10 (importancia)
      detail?: string;   // Descripción legible por humanos
    }
    
    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;   // tiempo de espera por módulo (por defecto: 3000)
      enableTraps: boolean;
      enableBehavioralTracking: boolean;
      enableHoneypots: boolean;
      thresholds: { strict: number; balanced: number; relaxed: number };
    }
    

    Integración del Lado del Servidor

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

    Endpoints

    EndpointMétodoPropósito
    /api/botdetect/nonceGETEmitir nonce de un solo uso
    /api/botdetect/verifyPOSTEnviar señales, recibir veredicto firmado
    /api/botdetect/midcyclePOSTRe-verificación en medio de sesión

    Formato de Respuesta del Servidor

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

    Puntuación del Lado del Servidor (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 se detecta manipulación de señales
    

    Módulos de Detección

    Marcos de Automatización (pesos 5–7)

    MóduloDetectaPeso
    webdrivernavigator.webdriver, propiedades selenium, descriptores getter5
    chromeDriverDuplicados de built-ins en window, cache_ en document6
    fakeCreateElementdocument.createElement falsificado7
    toStringSpoofedManipulación de Function.prototype.toString6
    cdpDetectioncdc_*, __playwright__, __puppeteer__ globales, chrome.runtime7
    stealthDetectionIntegridad de funciones nativas (Notification, Navigator, Permissions, plugins, languages, canvas)5
    inconsistentCloneErrorInconsistencias en algoritmo de clonación estructurada5
    iframeChromeRuntimechrome.runtime en contexto iframe5
    inconsistentChromeObjectObjeto chrome diferente entre iframe y ventana principal4

    Específicos de Playwright (pesos 3–4)

    MóduloDetectaPeso
    playwrightWebKitArtefactos de automatización de WebKit4
    playwrightOrientationInconsistencia de orientación + chrome.runtime3

    Análisis de Comportamiento (peso 7)

    MóduloSeñales AnalizadasPeso
    behavioralAnalysisCurvatura del ratón + relación línea recta, CV de pulsaciones + patrones de ráfaga + KPM, aceleración de desplazamiento + cambios de dirección, varianza de fuerza táctil + radio7

    Huella Digital del Navegador (pesos 3–4)

    MóduloDetectaPeso
    canvasFingerprintDiferencias de renderizado de canvas, suma de píxeles, relación canvas en blanco4
    webglFingerprintSwiftShader, llvmpipe, renderizadores Brian Paul, precisión de shader4
    fingerprintConsistencyVerificación cruzada: coherencia canvas + WebGL + pantalla + navigator4
    audioFingerprintTasa de muestreo de AudioContext, anomalías en datos de frecuencia3
    fontEnumerationConjuntos de fuentes limitados (≤15 fuentes base → sin cabeza)3
    timingAnomaliesResolución de performance.now(), temporización de bucles, retardo rAF, latencia de eval3

    Propiedades Navigator y OS (peso 5)

    MóduloVerificaPeso
    navigatorInconsistencies11 comprobaciones: languages, plugins, mimeTypes, platform, UA, cookies, DNT, touch, hardwareConcurrency, deviceMemory, connection5

    Pantalla y Rendimiento (peso 3)

    MóduloDetectaPeso
    screenAnomaliesDimensiones cero, profundidad de color, inconsistencias de espacio disponible3
    performanceAnomaliesTemporización de navegación, memoria, origen temporal, performance.now()3
    navigationFlowEntradas de rendimiento, seguimiento pushState, referente faltante3

    Trampas Activas y Honeypots (pesos 8–9)

    MóduloDetectaPeso
    honeypotTrapsCampos ocultos aleatorizados + señuelos + endpoint canario9
    stackTraceTrapsAnálisis de pila de llamadas de querySelector/getElementById/eval8

    Red y Contexto (pesos 1–2)

    MóduloDetectaPeso
    webrtcCheckExposición de IP local, anomalías en candidatos ICE2
    hardwareConcurrencyRelación CPU vs memoria, valores inverosímiles2
    hiddenScrollBarra de desplazamiento oculta en modo sin cabeza (solo escritorio)2
    noHovermqSin soporte de media query hover (solo escritorio)1
    webGLDisabledWebGL deshabilitado, SwiftShader1
    inconsistentPermissionsEstados inconsistentes de API de permisos4

    Lista Blanca (peso 0)

    MóduloDetectaPeso
    verifiedBotsMás de 20 rastreadores conocidos (Googlebot, Bingbot, Yandex, Facebook, Twitter, etc.) — devuelve -1, excluidos de la puntuación0

    Configuración

    Colector

    root@kitploit:~
    const collector = Collector.getInstance({
      detectionTimeoutMs: 1000,    // Más bajo para UX más rápido
      enableTraps: true,
      enableBehavioralTracking: true,
      enableHoneypots: true,
      thresholds: {
        strict: 0.3,     // Agresivo (inicio sesión, pago)
        balanced: 0.5,   // Por defecto
        relaxed: 0.7     // Permisivo (navegación de contenido)
      }
    });
    

    Detector (solo depuración)

    root@kitploit:~
    const detector = Detector.getInstance({
      threshold: 'balanced',      // 'strict' | 'balanced' | 'relaxed' | number
      minSignals: 2,              // Señales mínimas antes de impulso
      signalBoostThreshold: 0.8,  // Señales por encima de esto obtienen peso extra
      failPolicy: 'open',         // 'open' = humano en error, 'closed' = bot en error
      frictionThresholds: {
        monitor: 0.2,
        challenge: 0.5,
        block: 0.8
      }
    });
    

    Servidor

    root@kitploit:~
    createBotDetectEndpoint({
      secretSalt: process.env.BOTDETECT_SALT,  // Mantener en secreto
      scoring: { threshold: 'balanced' },
      nonce: { ttl: 300000, cleanupInterval: 60000 },
      noScript: { timeout: 10000 },
      rateLimit: { maxRequests: 10, windowMs: 60000 },
      requestFingerprint: true,                // Vincular PoW a atributos de solicitud
      noScriptPaths: ['/api/login', '/api/checkout']
    });
    

    Lista de Verificación para Producción

    Seguridad

    • secretSalt almacenado en variable de entorno, nunca en código
    • HTTPS + HSTS habilitado
    • CORS restringido a tu dominio
    • TTL de nonce configurado a ≤ 5 minutos
    • Secretos de sesión rotados regularmente
    • Limitación de tasa configurada por endpoint
    • Vinculación de huella de solicitud habilitada

    Rendimiento

    • detectionTimeoutMs ajustado (1000–2000ms recomendado)
    • Paquete limpio (botdetect-clean.min.js) para navegadores modernos
    • Precargar detección en tiempo de inactividad antes de acción sensible
    • Monitorear latencia de recolección en producción (performance.measure)

    Monitoreo

    • Registrar eventos con tamperScore > 0 (intentos de manipulación de señales)
    • Rastrear tasa de friction === 'block' a lo largo del tiempo
    • Alertar sobre violaciones de umbral de limitación de tasa
    • Revisar efectividad de detección trimestralmente (los bots evolucionan)

    Pruebas

    root@kitploit:~
    npm test              # 74 pruebas Jest en 6 suites
    npm run typecheck     # Modo estricto de TypeScript
    npm run lint          # ESLint
    npm run build         # Paquete de producción de Webpack
    

    Licencia

    Apache — Lahmeri Mohamed Amine

    Descargar herramienta