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
21há 1 mêsAinda 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

Detector (apenas depuração)

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

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

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)

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)

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)

Armadilhas Ativas e Honeypots (pesos 8–9)

MóduloDetectaPeso
honeypotTrapsCampos ocultos aleatórios + iscas + endpoint canário9

Rede e Contexto (pesos 1–2)

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
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
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
Emitir nonce de uso único
/api/botdetect/verifyPOSTEnviar sinais, receber veredito assinado
/api/botdetect/midcyclePOSTReverificação no meio da sessão
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
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
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
stackTraceTraps
Análise de stack do chamador de querySelector/getElementById/eval
8
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