Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
vi-bot — Biblioteca de detecção de bots no lado do cliente com 28 módulos ponderados, análise comportamental, impressão digital do navegador, honeypots e verificação no lado do servidor. Detecta navegadores headless, Selenium, Puppeteer, Playwright e frameworks de automação stealth. | Kitploit
Ferramentas/GitHubGitHub/mohamedlahmeri01/vi-bot
Ferramentas DefensivasEvasão de IDS/IPSSegurança WebAnti-BotFalsificação de Impressão DigitalDetecção de Anomalias
GitHubmohamedlahmeri01/vi-bot

vi-bot

Biblioteca de detecção de bots no lado do cliente com 28 módulos ponderados, análise comportamental, impressão digital do navegador, honeypots e verificação no lado do servidor. Detecta navegadores headless, Selenium, Puppeteer, Playwright e frameworks de automação stealth.

Ver Repositório
210há 2 mesesAinda não revisado

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

BotDetect v2 — Biblioteca de Detecção de Bots de Produção

Logotipo do BotDetect

Biblioteca de detecção de bots e automação no lado do cliente com pontuação ponderada, análise comportamental, impressão digital do navegador e limites configuráveis. Detecta navegadores headless, Selenium, Puppeteer, Playwright, ferramentas baseadas em CDP e estruturas de automação furtiva.

v2.1.0 — honeypots anti-detecção, impressão digital de canvas estável em GPU, análise comportamental aprimorada, inicialização preguiçosa, detecção de adulteração no lado do servidor, vinculação de impressão digital de requisição e limitação de taxa.


Índice

  • Funcionalidades
  • Arquitetura
  • Início Rápido
  • API do Lado do Cliente
  • Integração no Lado do Servidor
  • Módulos de Detecção
  • Configuração
  • Lista de Verificação para Produção
  • Testes

Funcionalidades

  • 28 módulos de detecção cobrindo estruturas de automação, navegadores headless, impressão digital, análise comportamental, honeypots e armadilhas de stack trace
  • Sistema de pontuação ponderada — cada sinal tem peso configurável; pontuação final calculada no servidor
  • Três níveis de veredito: human, suspicious, bot com ações de atrito correspondentes (monitor, challenge, block)
  • Verificação no lado do servidor — protegido por nonce, replay protegido, prova-de-trabalho assinada
  • Armadilhas de stack trace — monkey-patches de APIs DOM para capturar call stacks de ferramentas de automação
  • Análise comportamental — curvatura do mouse, variação de tempo de digitação, aceleração de rolagem, dinâmica de toque
  • Honeypots anti-detecção — ocultação CSS aleatória, campos isca, nomes de campo realistas
  • Detecção de adulteração no servidor — valida integridade do sinal, detecta tentativas de manipulação
  • Vinculação de impressão digital da requisição — tokens PoW vinculados a atributos da requisição HTTP
  • Limitação de taxa — limitação de taxa por sessão em todos os endpoints de verificação
  • Detecção sem script — identifica clientes que nunca enviam payloads de detecção
  • Lista de permissão de crawlers conhecidos — 20+ bots legítimos excluídos da pontuação

  • Arquitetura

    root@kitploit:~
    Browser                                  Your Server
    ┌──────────────────────────┐            ┌──────────────────────┐
    │ Collector (singleton)    │  POST      │ Express Middleware    │
    │  ├─ 28 detection modules│  signals   │  ├─ NonceManager      │
    │  ├─ BehaviorTracker     │  + nonce   │  ├─ RateLimiter       │
    │  ├─ HoneypotTraps       │───────────▶│  ├─ TamperDetector    │
    │  ├─ Stack trace traps   │            │  ├─ computeVerdict()  │
    │  └─ IframeContext       │            │  └─ Proof-of-Work     │
    │                         │  verdict   │                        │
    │  ↓ collect() →          │  + proof   │  Returns:             │
    │  DetectionResult[]      │◀───────────│  { verdict, score,    │
    └──────────────────────────┘            │    confidence, proof, │
                                            │    tamperScore }      │
                                            └──────────────────────┘
                                                  │
                                                  ▼
                                            Session-gated endpoint
                                            (login, checkout, etc.)
                                            validates proof before
                                            granting access
    

    Princípio chave: O navegador apenas coleta sinais brutos DetectionResult[]. O servidor calcula o veredito final usando uma tabela de pesos secreta. Vereditos calculados no cliente nunca são confiáveis.


    Início Rápido

    1. Construir

    root@kitploit:~
    npm install
    npm run build
    

    Saída em dist/:

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

    2. Incluir na sua 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 verificação no lado do servidor

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

    4. Enviar sinais em ação sensível

    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 no 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 do Lado do Cliente

    Coletor (singleton)

    root@kitploit:~
    import Collector from './collector/Collector';
    // ou via global: BotDetect.collector
    
    MétodoRetornoDescrição
    getInstance(config?)CollectorAcessor singleton
    configure(config)voidAtualizar configuração em tempo de execução
    getConfig()CollectorConfigConfiguração atual
    init()voidInicialização preguiçosa de armadilhas, rastreamento, honeypots
    enableTraps()voidInstalar armadilhas de stack trace em APIs DOM
    enableBehavioralTracking()voidIniciar monitoramento de mouse/teclado/rolagem
    enableHoneypots(container?)voidInstalar campos honeypot
    collect()Promise<DetectionResult[]>Executar todas as detecções
    setNonce(nonce)voidArmazenar nonce emitido pelo servidor
    getSessionId()stringIdentificador único de sessão
    getFingerprint()stringHash da impressão digital da sessão
    resetBehavioralData()voidLimpar dados comportamentais
    destroy()voidLimpar todos os listeners e elementos DOM

    Detector (apenas depuração)

    root@kitploit:~
    import Detector from './detector/Detector';
    
    MétodoRetornoDescrição
    getInstance(config?)DetectorAcessor singleton
    configure(config)voidAtualizar configuração
    analyze(results)DetectionVerdictPontuar + classificar (apenas depuração local)
    handleError(error)DetectionVerdictVeredito de fallback em caso de falha

    Aviso: analyze() é executado inteiramente no navegador. Nunca use sua saída para decisões de produção.

    Tipos

    root@kitploit:~
    interface DetectionResult {
      name: string;      // Nome do módulo
      score: number;     // 0.0 – 1.0
      weight: number;    // 1 – 10 (importância)
      detail?: string;   // Descrição legível
    }
    
    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 por módulo (padrão: 3000)
      enableTraps: boolean;
      enableBehavioralTracking: boolean;
      enableHoneypots: boolean;
      thresholds: { strict: number; balanced: number; relaxed: number };
    }
    

    Integração no Lado do 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 },              // expiração de nonce de 5 minutos
      noScript: { timeout: 10000 },         // janela sem 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 uso único
    /api/botdetect/verifyPOSTEnviar sinais, receber veredito assinado
    /api/botdetect/midcyclePOSTReverificação no meio da sessão

    Formato da Resposta do Servidor

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

    Pontuação no 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 se adulteração de sinal detectada
    

    Módulos de Detecção

    Estruturas de Automação (pesos 5–7)

    MóduloDetectaPeso
    webdrivernavigator.webdriver, props selenium, descritores getter5
    chromeDriverBuilt-ins duplicados no window, cache_ no document6
    fakeCreateElementdocument.createElement falsificado7
    toStringSpoofedAdulteração de Function.prototype.toString6
    cdpDetectionGlobais cdc_*, __playwright__, __puppeteer__, chrome.runtime7
    stealthDetectionIntegridade de funções nativas (Notification, Navigator, Permissions, plugins, languages, canvas)5
    inconsistentCloneErrorInconsistências no algoritmo de clone estruturado5
    iframeChromeRuntimechrome.runtime em contexto iframe5
    inconsistentChromeObjectObjeto chrome difere entre iframe e janela principal4

    Playwright-Específico (pesos 3–4)

    MóduloDetectaPeso
    playwrightWebKitArtefatos de automação WebKit4
    playwrightOrientationInconsistência de orientação + chrome.runtime3

    Análise Comportamental (peso 7)

    MóduloSinais AnalisadosPeso
    behavioralAnalysisCurvatura do mouse + razão linha reta, CV de digitação + padrões de rajada + KPM, aceleração de rolagem + mudanças de direção, variação de força do toque + raio7

    Impressão Digital do Navegador (pesos 3–4)

    MóduloDetectaPeso
    canvasFingerprintDiferenças de renderização de canvas, soma de pixels, razão de canvas em branco4
    webglFingerprintRenderizadores SwiftShader, llvmpipe, Brian Paul, precisão de shader4
    fingerprintConsistencyVerificação cruzada: coerência canvas + WebGL + screen + navigator4
    audioFingerprintTaxa de amostragem do AudioContext, anomalias de dados de frequência3
    fontEnumerationConjuntos de fontes limitados (≤15 fontes base → headless)3
    timingAnomaliesResolução de performance.now(), temporização de loop, atraso rAF, latência de eval3

    Propriedades do Navigator e SO (peso 5)

    MóduloVerificaPeso
    navigatorInconsistencies11 verificações: languages, plugins, mimeTypes, platform, UA, cookies, DNT, touch, hardwareConcurrency, deviceMemory, connection5

    Tela e Performance (peso 3)

    MóduloDetectaPeso
    screenAnomaliesDimensões zero, profundidade de cor, inconsistências de espaço disponível3
    performanceAnomaliesTemporização de navegação, memória, origem de tempo, performance.now()3
    navigationFlowEntradas de performance, rastreamento pushState, referrer ausente3

    Armadilhas Ativas e Honeypots (pesos 8–9)

    MóduloDetectaPeso
    honeypotTrapsCampos ocultos aleatórios + iscas + endpoint canário9
    stackTraceTrapsAnálise de stack do chamador de querySelector/getElementById/eval8

    Rede e Contexto (pesos 1–2)

    MóduloDetectaPeso
    webrtcCheckExposição de IP local, anomalias de candidatos ICE2
    hardwareConcurrencyRazão CPU vs memória, valores implausíveis2
    hiddenScrollBarra de rolagem oculta em headless (apenas desktop)2
    noHovermqSuporte a media query hover ausente (apenas desktop)1
    webGLDisabledWebGL desabilitado, SwiftShader1
    inconsistentPermissionsEstados inconsistentes da API de permissões4

    Lista de Permissão (peso 0)

    MóduloDetectaPeso
    verifiedBots20+ crawlers conhecidos (Googlebot, Bingbot, Yandex, Facebook, Twitter, etc.) — retorna -1, excluído da pontuação0

    Configuração

    Coletor

    root@kitploit:~
    const collector = Collector.getInstance({
      detectionTimeoutMs: 1000,    // Menor para UX mais rápido
      enableTraps: true,
      enableBehavioralTracking: true,
      enableHoneypots: true,
      thresholds: {
        strict: 0.3,     // Agressivo (login, checkout)
        balanced: 0.5,   // Padrão
        relaxed: 0.7     // Permissivo (navegação de conteúdo)
      }
    });
    

    Detector (apenas depuração)

    root@kitploit:~
    const detector = Detector.getInstance({
      threshold: 'balanced',      // 'strict' | 'balanced' | 'relaxed' | number
      minSignals: 2,              // Mínimo de sinais antes do boost
      signalBoostThreshold: 0.8,  // Sinais acima disso ganham peso extra
      failPolicy: 'open',         // 'open' = humano em erro, 'closed' = bot em erro
      frictionThresholds: {
        monitor: 0.2,
        challenge: 0.5,
        block: 0.8
      }
    });
    

    Servidor

    root@kitploit:~
    createBotDetectEndpoint({
      secretSalt: process.env.BOTDETECT_SALT,  // Mantenha em segredo
      scoring: { threshold: 'balanced' },
      nonce: { ttl: 300000, cleanupInterval: 60000 },
      noScript: { timeout: 10000 },
      rateLimit: { maxRequests: 10, windowMs: 60000 },
      requestFingerprint: true,                // Vincular PoW a atributos da requisição
      noScriptPaths: ['/api/login', '/api/checkout']
    });
    

    Lista de Verificação para Produção

    Segurança

    • secretSalt armazenado em variável de ambiente, nunca no código
    • HTTPS + HSTS ativado
    • CORS restrito ao seu domínio
    • TTL do nonce configurado para ≤ 5 minutos
    • Segredos de sessão rotacionados regularmente
    • Limitação de taxa configurada por endpoint
    • Vinculação de impressão digital da requisição ativada

    Performance

    • detectionTimeoutMs ajustado (1000–2000ms recomendado)
    • Bundle limpo (botdetect-clean.min.js) para navegadores modernos
    • Pré-carregar detecção em idle antes de ação sensível
    • Monitorar latência de coleta em produção (performance.measure)

    Monitoramento

    • Registrar eventos de tamperScore > 0 (tentativas de manipulação de sinal)
    • Rastrear taxa de friction === 'block' ao longo do tempo
    • Alertar sobre violações de limite de taxa
    • Revisar eficácia da detecção trimestralmente (bots evoluem)

    Testes

    root@kitploit:~
    npm test              # 74 testes Jest em 6 suítes
    npm run typecheck     # Modo estrito TypeScript
    npm run lint          # ESLint
    npm run build         # Bundle de produção Webpack
    

    Licença

    Apache — Lahmeri Mohamed Amine

    Baixar ferramenta