ДАРА ЗАЩИТА / Документация / API антиспама
API антиспама
Метод POST /api/v1/check: запрос и ответ, поля action, verdict, checked и mode, пример на PHP, отметки feedback, проверка ключа и что делать при сбое Защиты.
Сервер сайта отправляет заявку на проверку до того, как отправить её дальше. Ключ — секретный dzs_… со вкладки «Код и ключи», передаётся в заголовке Authorization: Bearer. Никогда не вставляйте его в код страницы.
POSThttps://captcha.daratech.ru/api/v1/check
{
"token": "значение поля dara_token (или пусто)",
"fields": {"name": "Анна", "email": "anna@mail.ru", "phone": "+7 912 000-00-00", "message": "…", "любое_поле": "…"},
"ip": "IP посетителя",
"user_agent": "User-Agent посетителя",
"page_url": "https://site.ru/contacts/",
"form": "contacts"
}
Ответ:
{"check_id": "Vb3…", "verdict": "spam", "action": "reject", "score": 83,
"reasons": ["no_interaction", "links_in_text"], "checked": "full", "mode": "live"}
| Поле | Значение |
|---|---|
action | deliver — отправляйте заявку как обычно; reject — не отправляйте (она уже в журнале Защиты). Ориентируйтесь на это поле. |
verdict | ok, suspect (заявка доставляется, но подозрительна — можно пометить) или spam. |
checked | full — с данными визита по токену; partial — токена не было, проверка по содержимому, IP и браузеру. |
mode | shadow — режим «Только считать»: action всегда deliver. |
Повтор того же токена в течение 30 минут возвращает тот же ответ — проверять одну заявку дважды безопасно.
Если Защита не ответила за несколько секунд или вернула ошибку, отправляйте заявку как обычно — с пометкой «не проверено». Терять настоящие заявки из-за нашего сбоя нельзя. Пример на PHP:
$ch = curl_init('https://captcha.daratech.ru/api/v1/check');
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => ['Content-Type: application/json', 'Authorization: Bearer ' . getenv('DARA_PROTECT_SECRET')],
CURLOPT_POSTFIELDS => json_encode([
'token' => $_POST['dara_token'] ?? '',
'fields' => $_POST,
'ip' => $_SERVER['REMOTE_ADDR'],
'user_agent' => $_SERVER['HTTP_USER_AGENT'] ?? '',
'page_url' => $_SERVER['HTTP_REFERER'] ?? '',
]),
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 5,
]);
$r = json_decode((string)curl_exec($ch), true);
if (($r['action'] ?? 'deliver') === 'reject') {
exit; // спам: не отправляем, заявка в журнале Защиты
}
$unchecked = !isset($r['action']); // Защита не ответила — отправляем с пометкой
// … дальше как обычно: письмо, CRM, база
POSThttps://captcha.daratech.ru/api/v1/feedback
Отметка человека: {"check_id": "…", "label": "spam"} или "ham" (не спам). По отметкам видно, где Защита ошибается.
GEThttps://captcha.daratech.ru/api/v1/ping
Проверка ключа: {"ok": true, "site": "…", "mode": "shadow"}.