lobsite! ログイン アカウント作成

Lobsite のボット /

Lobsite-Webhooks

Lobsite-Webhooks/1 からのリクエストは、Lobsite サイトのフォーム送信内容を所有者が設定したアドレスに届けます。リクエストの検証方法と停止方法を説明します。

ユーザーエージェント Lobsite-Webhooks/1

Lobsite-Webhooks は、Lobsite が送信する Webhook のユーザーエージェントです。フォームのある Lobsite サイトは、所有者が lobsite.toml で設定した Webhook アドレスに各送信内容を送ることができ、これらのリクエストがその配信です。ログにこれが見られる場合、誰かがフォームの Webhook をあなたのサーバーに向けています。通常は、ご自身の Lobsite サイトからのものです。

リクエストの内容

受け付けられたスパムではないフォーム送信ごとに、JSON 本文を持つ POST が 1 回送られます。

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"
}

Webhook が送信されるのは、プライベートネットワークや内部ネットワークに解決されない https:// アドレスのみです。

リクエストが本当に Lobsite からのものか確認する

ユーザーエージェントは偽装できますが、署名は偽装できません。X-Lobsite-Signature にはタイムスタンプ t と v1 があります。後者は、Lobsite ダッシュボードに一度だけ表示されるフォームの Webhook シークレットで計算した "<t>.<raw body>" の 16 進 HMAC-SHA256 です。生の本文から同じ値を計算し、定数時間で比較して、5 分より古い t は拒否してください。

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

再試行

10 秒以内の 2xx の応答で配信完了とみなします。それ以外は、1 分後、5 分後、30 分後、2 時間後、12 時間後の 5 回再試行します。X-Lobsite-Delivery は再試行の間変わらないため、処理済みの配信はスキップできます。

よくある質問

これらのリクエストを止めるには?

サイトがご自身のものであれば、lobsite.toml のフォームから webhook を削除してデプロイしてください。そうでなければ、エラーで応答してください。各送信は合計 6 回試行された後に破棄されます。それでも続く場合は、X-Lobsite-Delivery の値を添えて不正利用の報告ページから報告してください。調査します。

どのプランで Webhook を送信できますか?

Webhook は Standard プランに含まれます。Free プランのサイトには代わりにメール通知が届きます。フォームのドキュメントをご覧ください。

同じ送信内容が 2 回届くのはなぜですか?

最初にサーバーの応答が遅すぎたかエラーだったため、再試行されました。確認済みの X-Lobsite-Delivery を持つ配信はスキップしてください。

その他の Lobsite ユーザーエージェント