lobsite! Войти Регистрация

Боты Lobsite /

Lobsite-Webhooks

Запросы от Lobsite-Webhooks/1 доставляют заявки из форм сайта на Lobsite на адрес, который указал его владелец. Как их проверить и как остановить.

User agent Lobsite-Webhooks/1

Lobsite-Webhooks — это user agent вебхуков, которые отправляет Lobsite. Сайт в Lobsite с формой может отправлять каждую заявку на адрес вебхука, который владелец указал в lobsite.toml, и эти запросы — как раз такие доставки. Если вы видите его в логах, значит, кто-то направил вебхук формы на ваш сервер — обычно вы сами, со своего сайта в Lobsite.

Как выглядит запрос

Каждая принятая заявка, не признанная спамом, — это один POST с телом в 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"
}

Вебхуки отправляются только на адреса https://, которые не указывают на частные или внутренние сети.

Как проверить, что запрос действительно от Lobsite

User agent можно подделать, подпись — нет. X-Lobsite-Signature содержит метку времени t и v1 — HMAC-SHA256 в шестнадцатеричном виде от "<t>.<raw body>" с секретом вебхука формы, который один раз показывается в панели Lobsite. Вычислите то же значение по сырому телу, сравните за постоянное время и отклоняйте t старше 5 минут.

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

Повторные попытки

Ответ 2xx в течение 10 секунд считается доставкой. Всё остальное повторяется ещё 5 раз: через 1 минуту, 5 минут, 30 минут, 2 часа и 12 часов. X-Lobsite-Delivery не меняется между попытками, так что доставку, которую вы уже обработали, можно пропустить.

Частые вопросы

Как остановить эти запросы?

Если сайт ваш, уберите webhook из формы в lobsite.toml и задеплойте. Если нет, отвечайте ошибкой: каждая заявка пробуется всего 6 раз, а потом отбрасывается. Если запросы продолжаются, сообщите о них на странице Сообщить о нарушении, указав значение X-Lobsite-Delivery, и мы разберёмся.

На каких тарифах отправляются вебхуки?

Вебхуки входят в тариф Standard. Сайты на бесплатном тарифе вместо этого получают уведомления по почте. См. документацию по формам.

Почему одна и та же заявка приходит дважды?

В первый раз ваш сервер ответил слишком медленно или с ошибкой, поэтому была повторная попытка. Пропускайте доставки, X-Lobsite-Delivery которых вы уже видели.

Другие user agents Lobsite