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í
| Event | Description |
|---|---|
bot_detected | Spuštěno, když je požadavek klasifikován jako bot. |
bot_spike | Spuštěno, když detekce botů překročí práh upozornění v nakonfigurovaném okně. |
quota_warning | Spuštěno, když využití kvóty dosáhne 80 % nebo 90 %. |
quota_exceeded | Spuštěno, když je měsíční kvóta překročena. |
domain_verification_failed | Spuštěno, když opětovná kontrola ověření domény selže. |
key_rotated | Spuš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ý.
- Získejte surové tělo požadavku (jako řetězec, před parsováním)
- Získejte hodnotu hlavičky X-SilentShield-Signature
- Vypočítejte HMAC-SHA256 těla pomocí vašeho tajného klíče webhooku
- 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.