Как понять что запрос пришел от SEO-робота или от пользователя?
DOM и браузер
SEO-робота от пользователя отличают по User-Agent (содержит имя бота: Googlebot, Bingbot), а также обратному DNS-подтверждению, поведению и заголовкам. Определяют обычно на сервере.
Основной способ — User-Agent
Боты указывают себя в заголовке User-Agent:
Googlebot: "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)"
Bingbot: "...bingbot/2.0..."На сервере проверяют User-Agent на известные боты:
const ua = req.headers['user-agent'];
const isBot = /googlebot|bingbot|yandex|baiduspider/i.test(ua);Надёжнее — обратное DNS-подтверждение
User-Agent можно подделать. Google рекомендует verify: reverse DNS lookup IP → должен быть googlebot.com, затем forward DNS обратно:
IP бота → reverse DNS → *.googlebot.com → forward DNS → тот же IPДругие признаки
- Поведение — боты не выполняют JS (обычно), не двигают мышью, быстро обходят страницы.
- Заголовки — отсутствие некоторых типичных для браузера.
- Список известных ботов — по официальным диапазонам IP.
Зачем различать
- SSR/пререндер для ботов (SEO) — отдавать готовый HTML.
- Dynamic rendering — боту статичный HTML, пользователю SPA (устаревающая практика; Google рендерит JS).
- Аналитика (исключить ботов).
Осторожно
- Cloaking (разный контент боту и пользователю) — нарушение правил Google, штрафы. Отдавать одинаковый контент.
Коротко для собеседования
SEO-робота отличают по User-Agent (Googlebot, Bingbot) на сервере, надёжнее — обратным DNS-подтверждением (reverse+forward DNS к googlebot.com, т.к. UA подделывается). Признаки: не выполняет JS, быстрый обход. Различают для SSR/пререндера (SEO). Нельзя делать cloaking (разный контент боту/пользователю) — штрафы Google.