Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
vi-bot — Client-seitige Bot-Erkennungsbibliothek mit 28 gewichteten Modulen, Verhaltensanalyse, Browser-Fingerprinting, Honeypots und serverseitiger Verifizierung. Erkennt kopflose Browser, Selenium, Puppeteer, Playwright und Stealth-Automatisierungs-Frameworks. | Kitploit
Tools/GitHubGitHub/mohamedlahmeri01/vi-bot
DefensivwerkzeugeIDS/IPS-UmgehungWebsicherheitAnti-BotFingerabdruck-SpoofingAnomalieerkennung
GitHubmohamedlahmeri01/vi-bot

vi-bot

Client-seitige Bot-Erkennungsbibliothek mit 28 gewichteten Modulen, Verhaltensanalyse, Browser-Fingerprinting, Honeypots und serverseitiger Verifizierung. Erkennt kopflose Browser, Selenium, Puppeteer, Playwright und Stealth-Automatisierungs-Frameworks.

Repository anzeigen
21vor 1 MonatNoch nicht geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

BotDetect v2 — Produktions-Bot-Erkennungsbibliothek

BotDetect Logo

Clientseitige Bot- und Automatisierungserkennungsbibliothek mit gewichteter Bewertung, Verhaltensanalyse, Browser-Fingerprinting und konfigurierbaren Schwellenwerten. Erkennt Headless-Browser, Selenium, Puppeteer, Playwright, CDP-basierte Tools und Stealth-Automatisierungsframeworks.

v2.1.0 — Anti-Erkennungs-Honeypots, GPU-stabiles Canvas-Fingerprinting, verbesserte Verhaltensanalyse, träge Initialisierung, serverseitige Manipulationserkennung, Anforderungs-Fingerprint-Bindung und Ratenbegrenzung.


Inhaltsverzeichnis

  • Funktionen
  • Architektur
  • Schnellstart
  • Clientseitige API
  • Serverseitige Integration
  • Erkennungsmodule
  • Konfiguration
  • Produktions-Checkliste
  • Testen

Funktionen

  • 28 Erkennungsmodule decken Automatisierungsframeworks, Headless-Browser, Fingerprinting, Verhaltensanalyse, Honeypots und Stack-Trace-Fallen ab.
  • Gewichtetes Bewertungssystem — jedes Signal hat ein konfigurierbares Gewicht; endgültige Bewertung serverseitig berechnet.
  • Drei Urteilsstufen: human, suspicious, bot mit entsprechenden Reaktionsmaßnahmen (monitor, challenge, block)
  • Serverseitige Überprüfung — Nonce-gesteuert, replay-geschützt, Proof-of-Work-signiert.
  • Stack-Trace-Fallen — patcht DOM-APIs, um Aufrufstapel von Automatisierungswerkzeugen zu erfassen.
  • Verhaltensanalyse — Mauskrümmung, Tastenanschlagsdauervarianz, Scrollbeschleunigung, Touch-Dynamik.
  • Anti-Erkennungs-Honeypots — zufälliges CSS-Cloaking, Täuschungsfelder, realistische Feldnamen.
  • Serverseitige Manipulationserkennung — prüft Signalintegrität, erkennt Manipulationsversuche.
  • Anforderungs-Fingerprint-Bindung — PoW-Tokens an HTTP-Anforderungsattribute gebunden.
  • Ratenbegrenzung — sitzungsbezogene Ratenbegrenzung auf allen Verifikationsendpunkten.
  • No-Script-Erkennung — identifiziert Clients, die nie Erkennungspayloads senden.
  • Bekannte Crawler-Whitelist — 20+ legitime Bots von der Bewertung ausgeschlossen.

Architektur

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

Schlüsselprinzip: Der Browser sammelt nur rohe DetectionResult[]-Signale. Der Server berechnet das endgültige Urteil mit einer geheimen Gewichtstabelle. Vom Client berechnete Urteile werden niemals vertraut.


Schnellstart

1. Erstellen

root@kitploit:~
npm install
npm run build

Ausgabe in dist/:

  • botdetect.min.js (mit Polyfills, ~151 KB)
  • botdetect-clean.min.js (nur moderne Browser, ~74 KB)

2. Auf Ihrer Seite einbinden

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

3. Serverseitige Verifikation einrichten

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

4. Signale bei sensiblen Aktionen senden

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. Auf dem Server validieren

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 });
});

Clientseitige API

Collector (Singleton)

root@kitploit:~
import Collector from './collector/Collector';
// or via global: BotDetect.collector

Detektor (nur Debug)

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

Warnung: analyze() läuft vollständig im Browser. Verwenden Sie seine Ausgabe niemals für Produktionsentscheidungen.

Typen

root@kitploit:~
interface DetectionResult {
  name: string;      // Modulname
  score: number;     // 0.0 – 1.0
  weight: number;    // 1 – 10 (Wichtigkeit)
  detail?: string;   // Menschenlesbare Beschreibung
}

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;   // Zeitüberschreitung pro Modul (Standard: 3000)
  enableTraps: boolean;
  enableBehavioralTracking: boolean;
  enableHoneypots: boolean;
  thresholds: { strict: number; balanced: number; relaxed: number };
}

Serverseitige Integration

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 },              // Nonce verfällt nach 5 Minuten
  noScript: { timeout: 10000 },         // 10s No-Script-Fenster
  rateLimit: { maxRequests: 10, windowMs: 60000 },
  noScriptPaths: ['/api/login', '/api/checkout', '/api/register']
});

app.use('/api', router);

Endpunkte

EndpunktMethodeZweck
/api/botdetect/nonce

Server-Antwortformat

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

Serverseitige Bewertung (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 wenn Signalmanipulation erkannt

Erkennungsmodule

Automatisierungsframeworks (Gewichte 5–7)

Playwright-spezifisch (Gewichte 3–4)

ModulErkenntGewicht
playwrightWebKitWebKit-Automatisierungsartefakte4
playwrightOrientationOrientierung + Inkonsistenz von chrome.runtime3

Verhaltensanalyse (Gewicht 7)

ModulAnalysierte SignaleGewicht
behavioralAnalysisMauskrümmung + Gerade-Linie-Verhältnis, Tastenanschlags-CV + Burst-Muster + KPM, Scrollbeschleunigung + Richtungswechsel, Touch-Kraftvarianz + Radius7

Browser-Fingerprinting (Gewichte 3–4)

Navigator- & Betriebssystemeigenschaften (Gewicht 5)

ModulPrüfungenGewicht
navigatorInconsistencies11 Prüfungen: languages, plugins, mimeTypes, platform, UA, cookies, DNT, touch, hardwareConcurrency, deviceMemory, connection5

Bildschirm & Leistung (Gewicht 3)

Aktive Fallen & Honeypots (Gewichte 8–9)

ModulErkenntGewicht
honeypotTrapsZufällige versteckte Felder + Täuschungsfelder + Canary-Endpunkt9

Netzwerk & Kontext (Gewichte 1–2)

Whitelist (Gewicht 0)

ModulErkenntGewicht
verifiedBots20+ bekannte Crawler (Googlebot, Bingbot, Yandex, Facebook, Twitter usw.) — gibt -1 zurück, von Bewertung ausgeschlossen0

Konfiguration

Collector

root@kitploit:~
const collector = Collector.getInstance({
  detectionTimeoutMs: 1000,    // Niedriger für schnellere UX
  enableTraps: true,
  enableBehavioralTracking: true,
  enableHoneypots: true,
  thresholds: {
    strict: 0.3,     // Aggressiv (Login, Checkout)
    balanced: 0.5,   // Standard
    relaxed: 0.7     // Nachsichtig (Inhaltsnavigation)
  }
});

Detektor (nur Debug)

root@kitploit:~
const detector = Detector.getInstance({
  threshold: 'balanced',      // 'strict' | 'balanced' | 'relaxed' | number
  minSignals: 2,              // Mindestsignale vor Verstärkung
  signalBoostThreshold: 0.8,  // Signale darüber erhalten zusätzliches Gewicht
  failPolicy: 'open',         // 'open' = human bei Fehler, 'closed' = bot bei Fehler
  frictionThresholds: {
    monitor: 0.2,
    challenge: 0.5,
    block: 0.8
  }
});

Server

root@kitploit:~
createBotDetectEndpoint({
  secretSalt: process.env.BOTDETECT_SALT,  // Geheim halten
  scoring: { threshold: 'balanced' },
  nonce: { ttl: 300000, cleanupInterval: 60000 },
  noScript: { timeout: 10000 },
  rateLimit: { maxRequests: 10, windowMs: 60000 },
  requestFingerprint: true,                // PoW an Anforderungsattribute binden
  noScriptPaths: ['/api/login', '/api/checkout']
});

Produktions-Checkliste

Sicherheit

  • secretSalt in Umgebungsvariable gespeichert, niemals im Code
  • HTTPS + HSTS aktiviert
  • CORS auf Ihre Domain beschränkt
  • Nonce-TTL auf ≤ 5 Minuten gesetzt
  • Sitzungsgeheimnisse regelmäßig rotiert
  • Ratenbegrenzung pro Endpunkt konfiguriert
  • Anforderungs-Fingerprint-Bindung aktiviert

Leistung

  • detectionTimeoutMs optimiert (1000–2000 ms empfohlen)
  • Sauberes Bundle (botdetect-clean.min.js) für moderne Browser
  • Erkennung bei Leerlauf vor sensibler Aktion vorladen
  • Sammellatenz in Produktion überwachen (performance.measure)

Überwachung

  • Ereignisse mit tamperScore > 0 protokollieren (Signal-Manipulationsversuche)
  • Rate von friction === 'block' im Zeitverlauf verfolgen
  • Alarm bei Überschreitung der Ratenbegrenzungsschwelle
  • Erkennungseffektivität vierteljährlich überprüfen (Bots entwickeln sich weiter)

Testen

root@kitploit:~
npm test              # 74 Jest-Tests in 6 Suiten
npm run typecheck     # TypeScript Strict Mode
npm run lint          # ESLint
npm run build         # Webpack-Produktionsbundle

Lizenz

Apache — Lahmeri Mohamed Amine

Tool herunterladen
MethodeRückgabeBeschreibung
getInstance(config?)CollectorSingleton-Zugriff
configure(config)voidKonfiguration zur Laufzeit aktualisieren
getConfig()CollectorConfigAktuelle Konfiguration
init()voidLazy-Initialisierung von Traps, Tracking, Honeypots
enableTraps()voidStack-Trace-Fallen auf DOM-APIs installieren
enableBehavioralTracking()voidMaus-/Tastatur-/Scroll-Überwachung starten
enableHoneypots(container?)voidHoneypot-Felder installieren
collect()Promise<DetectionResult[]>Alle Erkennungen ausführen
setNonce(nonce)voidVom Server ausgestellte Nonce speichern
getSessionId()stringEindeutige Sitzungskennung
getFingerprint()stringSitzungs-Fingerprint-Hash
resetBehavioralData()voidVerhaltensdaten zurücksetzen
destroy()voidAlle Listener und DOM-Elemente bereinigen
MethodeRückgabeBeschreibung
getInstance(config?)DetectorSingleton-Zugriff
configure(config)voidKonfiguration aktualisieren
analyze(results)DetectionVerdictBewerten + klassifizieren (nur lokales Debug)
handleError(error)DetectionVerdictFallback-Urteil bei Fehler
GET
Einmal-Nonce ausstellen
/api/botdetect/verifyPOSTSignale einreichen, signiertes Urteil erhalten
/api/botdetect/midcyclePOSTErneute Verifikation während der Sitzung
ModulErkenntGewicht
webdrivernavigator.webdriver, Selenium-Eigenschaften, Getter-Deskriptoren5
chromeDriverDoppelte Built-ins auf window, cache_ in document6
fakeCreateElementGefälschtes document.createElement7
toStringSpoofedManipulation von Function.prototype.toString6
cdpDetectioncdc_*, __playwright__, __puppeteer__-Globale, chrome.runtime7
stealthDetectionIntegrität nativer Funktionen (Notification, Navigator, Permissions, plugins, languages, canvas)5
inconsistentCloneErrorInkonsistenzen im strukturierten Klonalgorithmus5
iframeChromeRuntimechrome.runtime im iframe-Kontext5
inconsistentChromeObjectchrome-Objekt unterscheidet sich zwischen iframe und Hauptfenster4
ModulErkenntGewicht
canvasFingerprintCanvas-Rendering-Unterschiede, Pixelsumme, Leer-Canvas-Verhältnis4
webglFingerprintSwiftShader, llvmpipe, Brian-Paul-Renderer, Shader-Präzision4
fingerprintConsistencyQuervergleich: Canvas + WebGL + screen + Navigator-Kohärenz4
audioFingerprintAudioContext-Samplerate, Frequenzdaten-Anomalien3
fontEnumerationBegrenzte Schriftartenmengen (≤15 Basisschriftarten → headless)3
timingAnomaliesperformance.now()-Auflösung, Schleifentiming, rAF-Verzögerung, eval-Latenz3
Modul
Erkennt
Gewicht
screenAnomaliesNull-Dimensionen, Farbtiefe, Inkonsistenzen im verfügbaren Platz3
performanceAnomaliesNavigationstiming, Speicher, Zeitursprung, performance.now()3
navigationFlowPerformance-Einträge, pushState-Tracking, fehlender Referrer3
stackTraceTrapsquerySelector/getElementById/eval-Aufrufer-Stack-Analyse8
ModulErkenntGewicht
webrtcCheckLokale IP-Offenlegung, ICE-Kandidaten-Anomalien2
hardwareConcurrencyCPU-Anzahl vs. Speicherverhältnis, unplausible Werte2
hiddenScrollVersteckte Bildlaufleiste in Headless (nur Desktop)2
noHovermqKeine Hover-Media-Query-Unterstützung (nur Desktop)1
webGLDisabledDeaktiviertes WebGL, SwiftShader1
inconsistentPermissionsNicht übereinstimmende Permission-API-Zustände4