POST /api/scan
Пассивный скан безопасности сайта: разбор публичных данных, DNS и TLS. Сайт не нагружается и не «ломается». Бюджет скана — до 20 секунд.
Запрос
{
"domain": "example.ru", // домен или URL
"lang": "ru" // необязательно: "ru" | "en"; иначе Accept-Language, затем ru
}
curl -s -X POST https://scanops.ru/api/scan \
-H 'Content-Type: application/json' \
-d '{"domain": "example.ru", "lang": "ru"}'
Ответ
{
"target": "example.ru",
"score": 42, // 0–100, сумма весов находок
"level": "medium", // safe | medium | high | critical
"verdict": "Средний риск",
"summary": "…",
"counts": { "serious": 2, "medium": 3, "safe": 10, "total": 15 },
"findings": [
{
"id": "headers.csp-missing", // стабильный check_id, не переименовывается
"severity": "high", // critical | high | medium | safe | info
"category": "headers", // headers | tls | dns | domain | access | control-panel | admin | cms | forms | privacy | email | network | reputation | recon
"title": "…",
"what": "…", // что произошло
"why": "…", // почему это важно
"fix": "…", // что делать
"code": "…" // необязательно: пример/доказательство
}
],
"safe_browsing": { "checked": true, "flagged": false } // необязательно; фишинг-вердикт Google Safe Browsing
}
Важно про публичный скан
- Скрытие подробностей. Полные
what/why/fixотдаются только по четырём самым серьёзным находкам; остальные приходят обрезанными (id: "locked"). Полный отчёт — на платном тарифе или разовой покупкой в кабинете. - Кэш. Результат может прийти из кэша давностью до недели. Скрытие подробностей выполняется всегда, и на кэше, и на свежем прогоне.
- Фишинг (
safe_browsing). Считается только «вживую» и добавляется поверх отчёта:checked— удалось ли проверить,flagged— помечен ли адрес. Поля нет, если проверка недоступна.
Ошибки
400— домен не разобрался или отклонён SSRF-гардом:{"error": "…"}.429— превышен лимит по IP (по умолчанию 3 скана в час), заголовокRetry-After.