info@bot-guard.ru

API проверки IP и User-Agent

Бесплатно, без ключа и регистрации. Лимит: 30 запросов в минуту с одного IP. Те же данные, что на странице проверки User-Agent и IP.

Запрос

POST https://bot-guard.ru/api/check/, тело application/x-www-form-urlencoded:

  • ip: публичный IPv4 или IPv6 (необязательно);
  • ua: строка User-Agent до 512 символов (необязательно). Передавайте её именно POST-ом.

Нужен хотя бы один параметр. Если переданы оба, подлинность «поискового бота» и ИИ-краулера проверяется по этому IP.

curl -X POST https://bot-guard.ru/api/check/ \
  --data-urlencode "ip=66.249.66.1" \
  --data-urlencode "ua=Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)"

Ответ

{
  "ok": true,
  "ua": { "known": true, "verdict": "ok", "label": "Не вызывает подозрений", "parsed": { ... } },
  "ip": { "ip": "66.249.66.1", "datacenter": null, "ptr": "crawl-66-249-66-1.googlebot.com",
          "ptrConfirmed": true, "claim": "search", "claimVerdict": true, "yandexNet": false, "aiProvider": null },
  "reputation": { "available": true, "blocks": 0, "sites": 0, "reasons": {} }
}
  • ua.verdict: ok, warn, bad или null, если строка нам ещё не встречалась;
  • ip.datacenter: провайдер, если адрес принадлежит датацентру или облаку;
  • ip.claimVerdict: true, если IP подтверждает заявленного бота обратным DNS; false: подделка; null: проверить не удалось;
  • reputation: сколько раз адрес блокировался на сайтах сервиса за 30 дней (только суммы, без названий сайтов).

Коды ответа

200 успешно, 400 нет параметров или IP не публичный, 429 лимит превышен (заголовок Retry-After).

Проверка e-mail: POST /api/email/

Параметр email. Возвращает проверку синтаксиса, наличия почтовых записей домена (MX), признак одноразового сервиса, бесплатного почтовика и служебного адреса (info@, admin@), а также risk (0–100) и verdict (ok, warn, bad). Список одноразовых сервисов базовый, не исчерпывающий. Подходит для фильтра фейковых регистраций.

curl -X POST https://bot-guard.ru/api/email/ --data-urlencode "email=test@mailinator.com"
{"ok":true,"email":"test@mailinator.com","syntax":true,"domain":"mailinator.com","disposable":true,"mx":true,"risk":80,"verdict":"bad"}

Капча без картинок для форм

Работает на сайте, который добавлен в кабинете Bot Guard (нужен номер сайта). Посетитель ничего не решает: виджет при первом движении мыши, касании или нажатии клавиши получает одноразовый токен, если запрос не похож на бота.

  1. Подключите скрипт на страницу с формой: <script src="https://bot-guard.ru/api/captcha-widget/?site=НОМЕР" async></script>. Он добавит скрытое поле bg_token во все формы страницы.
  2. На сервере при получении формы проверьте токен: POST https://bot-guard.ru/api/captcha-verify/ с параметрами site, token и (по желанию) ip посетителя. Ответ: {"ok":true,"success":true}.

Токен одноразовый и живёт 5 минут. success:false означает, что токена нет, он просрочен, использован, выдан для другого сайта или IP. Виджет работает на домене, указанном у сайта в кабинете (проверяется по Referer).

$r = json_decode(file_get_contents('https://bot-guard.ru/api/captcha-verify/', false, stream_context_create(['http' =>
    ['method' => 'POST', 'header' => 'Content-Type: application/x-www-form-urlencoded',
     'content' => http_build_query(['site' => 123, 'token' => $_POST['bg_token'] ?? '', 'ip' => $_SERVER['REMOTE_ADDR']])]])), true);
if (empty($r['success'])) { /* отклонить форму */ }

API работает в тестовом режиме: формат ответа может расширяться. Для защиты сайта в реальном времени используйте модули подключения.