lobsite! Accedi Registrati

I bot di Lobsite /

Lobsite-Webhooks

Le richieste di Lobsite-Webhooks/1 consegnano gli invii dei moduli di un sito Lobsite a un indirizzo scelto dal proprietario. Come verificarle e fermarle.

User agent Lobsite-Webhooks/1

Lobsite-Webhooks è lo user agent dei webhook che Lobsite invia. Un sito Lobsite con un modulo può inviare ogni invio a un indirizzo webhook che il proprietario ha impostato in lobsite.toml, e queste richieste sono quelle consegne. Se lo vedi nei tuoi log, qualcuno ha puntato il webhook di un modulo al tuo server: di solito tu stesso, dal tuo sito Lobsite.

Com'è fatta una richiesta

Ogni invio accettato e non spam è un POST con un corpo JSON:

POST /hooks/contact HTTP/1.1
Content-Type: application/json
User-Agent: Lobsite-Webhooks/1
X-Lobsite-Event: form.submission
X-Lobsite-Delivery: dlv_3m9q…
X-Lobsite-Signature: t=1760372438,v1=5257a869…
{
  "type": "form.submission",
  "id": "sub_8x2k…",
  "site": "quiet-fox-4821",
  "form": "contact",
  "data": { "email": "ana@example.com", "message": "Hi!" },
  "created_at": "2026-10-13T16:20:38Z"
}

I webhook vanno solo a indirizzi https:// che non risolvono verso reti private o interne.

Verifica che una richiesta venga davvero da Lobsite

Lo user agent si può falsificare; la firma no. X-Lobsite-Signature contiene un timestamp t e v1, l'HMAC-SHA256 esadecimale di "<t>.<raw body>" con il secret del webhook del modulo, mostrato una sola volta nella dashboard di Lobsite. Calcola lo stesso valore dal corpo grezzo, confronta in tempo costante e rifiuta un t più vecchio di 5 minuti.

import { createHmac, timingSafeEqual } from "node:crypto";

function verified(secret, header, rawBody) {
  const { t, v1 } = Object.fromEntries(header.split(",").map((p) => p.split("=")));
  if (Math.abs(Date.now() / 1000 - Number(t)) > 300) return false;
  const expected = createHmac("sha256", secret).update(`${t}.${rawBody}`).digest("hex");
  return v1?.length === expected.length && timingSafeEqual(Buffer.from(v1), Buffer.from(expected));
}

Nuovi tentativi

Una risposta 2xx entro 10 secondi conta come consegnata. Qualsiasi altra cosa viene ritentata 5 volte: dopo 1 minuto, 5 minuti, 30 minuti, 2 ore e 12 ore. X-Lobsite-Delivery resta lo stesso tra un tentativo e l'altro, quindi puoi saltare una consegna già gestita.

Domande frequenti

Come fermo queste richieste?

Se il sito è tuo, rimuovi webhook dal modulo in lobsite.toml e pubblica. Se non lo è, rispondi con un errore: ogni invio viene tentato 6 volte in tutto e poi scartato. Se continuano ad arrivare, segnalale sulla pagina Segnala un abuso con il valore di X-Lobsite-Delivery e ce ne occuperemo.

Quali piani inviano webhook?

I webhook fanno parte del piano Standard. I siti del piano gratuito ricevono invece notifiche via email. Vedi la documentazione dei moduli.

Perché ricevo lo stesso invio due volte?

Il tuo server ha risposto troppo lentamente o con un errore la prima volta, quindi è stato ritentato. Salta le consegne il cui X-Lobsite-Delivery hai già visto.

Altri user agent di Lobsite