Formát webhooků

SilentShield může odesílat upozornění v reálném čase na váš server prostřednictvím webhooků. Nakonfigurujte URL adresy webhooků v Panel → Upozornění.

Struktura dat

Všechna data webhooků mají tuto strukturu:

{"event": "bot_detected", "timestamp": "2025-01-15T10:30:00Z", "data": {"keyId": "key_abc", "domain": "example.com", "ip": "203.0.113.42", "verdict": "bot", "score": 0.15, "userAgent": "Mozilla/5.0...", "page": "/contact"}}

Typy událostí

EventDescription
bot_detectedSpuštěno, když je požadavek klasifikován jako bot.
bot_spikeSpuštěno, když detekce botů překročí práh upozornění v nakonfigurovaném okně.
quota_warningSpuštěno, když využití kvóty dosáhne 80 % nebo 90 %.
quota_exceededSpuštěno, když je měsíční kvóta překročena.
domain_verification_failedSpuštěno, když opětovná kontrola ověření domény selže.
key_rotatedSpuštěno, když je API klíč rotován.

Ověření podpisu

Každý webhook obsahuje hlavičku X-SilentShield-Signature s podpisem HMAC-SHA256. Ověřte tento podpis, abyste se ujistili, že webhook je autentický.

  1. Získejte surové tělo požadavku (jako řetězec, před parsováním)
  2. Získejte hodnotu hlavičky X-SilentShield-Signature
  3. Vypočítejte HMAC-SHA256 těla pomocí vašeho tajného klíče webhooku
  4. Porovnejte vypočítaný podpis s hodnotou hlavičky
const crypto = require('crypto');

function verifyWebhook(body, signature, secret) {
  const computed = crypto
    .createHmac('sha256', secret)
    .update(body)
    .digest('hex');
  return crypto.timingSafeEqual(
    Buffer.from(computed),
    Buffer.from(signature)
  );
}

Politika opakování

Pokud váš koncový bod vrátí stavový kód jiný než 2xx nebo vyprší časový limit (10 sekund), SilentShield opakuje doručení až 3krát s exponenciálním zpožděním (1 minuta, 5 minut, 30 minut). Po 3 neúspěšných pokusech je webhook označen jako neúspěšný a viditelný v Panel → Upozornění → Neúspěšná doručení.

Tajný klíč webhooku

Tajný klíč webhooku je vygenerován při vytvoření koncového bodu webhooku v panelu. Můžete ho zobrazit nebo znovu vygenerovat v Panel → Upozornění → Webhooky → Upravit.