---
type: explanation
title: Проверяй без бэкенда
summary: Что такое размещённая проверка, для кого она и как Caputchin проверяет отправку и пересылает её на вебхук или email, чтобы тебе никогда не запускать бэкенд.
---

Токен Caputchin ничего не доказывает, пока что-то его не подтвердит. Обычно это что-то это [твой собственный бэкенд](/docs/integration-guides/verify-on-your-backend), который вызывает `/siteverify` и решает, доверять ли запросу. Размещённая проверка переносит этот шаг на Caputchin: твоя форма отправляется на пересыльщик Caputchin, Caputchin проверяет токен, отбрасывает всё, что не прошло, и пересылает только проверенные отправки в назначение, которое ты выбираешь.

Это то же решение о доверии, что и серверная проверка, выполняемое на стороне Caputchin вместо твоей. Суть в том, что нет вызова `/siteverify`, который надо писать, и нет секрета, который надо держать на сервере, потому что сервера нет.

Размещённая проверка это платная функция, доступная на Alpha и выше.

## Для кого она

Размещённая проверка существует для случая, когда запускать бэкенд только чтобы проверить токен это больше, чем нужно проекту.

| Ты | Почему она подходит |
|---|---|
| Статический сайт (Webflow, Framer, чистый HTML на CDN) | Нет сервера, чтобы принять форму или вызвать `/siteverify`. |
| No-code конструктор (Wix, Squarespace, Carrd) | Ты не можешь добавить серверный код проверки. |
| Соло-разработчик или маленькая команда | Контактная форма или форма регистрации не стоит того, чтобы поднимать и эксплуатировать бэкенд ради неё. |
| Уже запускаешь бэкенд, но не для этой формы | Ты можешь направить одну форму на пересыльщик и оставить остаток своего стека в покое. |

Если ты запускаешь бэкенд и хочешь проверять там, используй вместо этого [проверь на своём бэкенде](/docs/integration-guides/verify-on-your-backend). Эти двое альтернативы, а не слои.

## Как это работает

```mermaid
sequenceDiagram
  autonumber
  participant U as Посетитель
  participant B as Браузер (виджет)
  participant F as Пересыльщик Caputchin
  participant D as Твоё назначение (вебхук или email)

  U->>B: Заполняет форму и отправляет
  B->>F: POST полей формы плюс токен caputchin
  Note over F: Проверить токен, затем убрать его из нагрузки
  alt Токен валиден
    F->>D: Доставить отправку
    D-->>F: Подтвердить
    F-->>B: 200 с результатом доставки
  else Токен отсутствует или невалиден
    F-->>B: Отклонено, ничего не доставлено
  end
```

Пересыльщик держит отправку в памяти только на тот миг, что нужен для её доставки. Нет хранения между отправкой и доставкой, и поле `caputchin-token` убирается до того, как нагрузка достигнет твоего назначения.

## Назначения

Ты настраиваешь одно или оба на каждый ключ сайта. Включить оба это частый шаблон: слать на вебхук для обработки и слать копию себе на email.

| Назначение | Что ты получаешь |
|---|---|
| **Вебхук** | JSON-`POST`, несущий поля твоей формы плюс метаданные проверки Caputchin. |
| **Email** | Обычное письмо с полями формы и подвалом, отмечающим, что Caputchin проверил отправку. |

Доставки не подписываются. Секретность URL пересыльщика и есть то, что аутентифицирует вызов вебхука, так что держи URL вне публичных репозиториев и клиентского кода. [Руководство по настройке](/docs/hosted-verification/set-up) показывает точную нагрузку вебхука.

## Что держится в тайне

Размещённая проверка следует той же позиции без-данных-о-посетителе, что и остальной Caputchin:

- **Отправки никогда не хранятся.** Они живут в памяти процесса на время пересылки, затем их нет. Построй собственную запись на стороне вебхука, если хочешь её.
- **Никаких данных об отправителе не собирается.** Ни IP, ни User-Agent, ни отпечатка, ни отслеживания.
- **Телеметрия только сводная.** Caputchin считает успехи и сбои доставки, чтобы ты видел, здоровы ли твои назначения, никогда содержимое какой-либо отправки. Смотри [статистику](/docs/hosted-verification/statistics).

## Как держится в безопасности URL, предоставленный клиентом

URL, который будут вызывать серверы Caputchin, это классический риск подделки запроса на стороне сервера (Server-Side Request Forgery). Пересыльщик отклоняет любой URL вебхука, чей хост это приватный, петлевой, link-local или облачно-метаданный адрес, и когда ты его сохраняешь, и снова прямо перед каждой доставкой. Заблокированные категории включают:

| Категория | Примеры |
|---|---|
| Петлевые и неуказанные | `127.0.0.1`, `0.0.0.0`, `::1` |
| Приватные (RFC 1918) | `10.x.x.x`, от `172.16.x.x` до `172.31.x.x`, `192.168.x.x` |
| Link-local и облачные метаданные | `169.254.x.x`, в частности метаданный эндпоинт `169.254.169.254` |
| Carrier-grade NAT | от `100.64.x.x` до `100.127.x.x` |
| Multicast и зарезервированные | `224.x.x.x` и выше |
| Внутренние хостнеймы | `localhost` и любой хост, заканчивающийся на `.local`, `.localhost` или `.internal` |
| Приватные IPv6 | адреса link-local (`fe80::/10`) и unique-local (`fc00::/7`) |

Кодировки, которые пытаются замаскировать заблокированный адрес, тоже ловятся: десятично-целочисленный хост вроде `http://2130706433/` или hex-хост вроде `http://0x7f000001/` (оба означают `127.0.0.1`) отклоняются. Принимаются только URL `http` и `https`; любая другая схема отказывается. Пересыльщик также отказывается следовать редиректам, так что эндпоинт вебхука не может отбить вызов на внутреннюю цель. Заблокированный URL всплывает как общая ошибка, а не конкретная, так что его нельзя использовать для зондирования сети. Твой вебхук поэтому должен жить по публичному `https`-URL.

## Что намеренно оставлено за бортом

- **Нет входящего ящика отправок.** Нет хранимой истории отправок для просмотра в панели.
- **Нет собственных адаптеров Discord, Slack, Telegram или SMS.** Только вебхук и email. Вебхук может разветвиться на любой из них на твоей стороне.
- **Нет загрузки файлов.** Пересыльщик принимает текстовые поля; отправка, несущая файл, отклоняется.
- **Нет преобразования нагрузки.** Что форма отправляет, то твоё назначение и получает, плюс метаданные проверки.

## См. также

- [Настрой размещённую проверку](/docs/hosted-verification/set-up): прохождение, которое сначала подключает её к тестовому ящику.
- [Статистика размещённой проверки](/docs/hosted-verification/statistics): чтение здоровья доставки.
- [Проверь на своём бэкенде](/docs/integration-guides/verify-on-your-backend): альтернатива, когда ты всё же запускаешь сервер.
