Урок 1. Краулинг и краулинг-бюджет Ты сделал идеальную страницу, прописал мету, закрыл семантику. А она не в индексе. И дело не в том, что робот ее увидел и забраковал - он до нее просто не дошел. Пока страницу не скачали, для поиска ее не существует. С этого и начнем.
Как это работает У робота есть очередь URL - ее называют фронтиром. Он берет адрес из очереди, скачивает HTML, вытаскивает из него ссылки и кладет новые адреса обратно в очередь. И так по кругу, годами, по десяткам миллиардов страниц. Важный момент: ссылки робот достает из исходного HTML. Не из того, что ты видишь в браузере после отработки скриптов, а из того, что сервер отдал в ответ. Если ссылка появляется только после клика, скролла или дорисовывается скриптом - в очередь она по умолчанию не попадет. Дальше есть лимит. Робот не может долбить один хост сколько влезет - он бы его уронил. Поэтому на каждый сайт выделяется ограниченное число запросов за период. Это и есть краулинг-бюджет. Складывается он из двух вещей: сколько хост физически выдержит (медленный сервер = меньше запросов) и сколько поисковик вообще считает нужным тратить на этот сайт.
Бюджет конечен. Каждый запрос робота на мусорный URL - это запрос, который не достался твоей новой нормальной странице.
На что ты влияешь, а на что нет Самое честное место урока. Разложим по полкам.
Где у тебя прямой рычаг:
- Обнаружимость. Хочешь, чтобы страницу нашли - поставь на нее обычную ссылку a href в HTML. Это полностью в твоих руках.
- Глубина клика. Страница в 1-2 переходах от главной обходится чаще, чем та, что в шести. Плоская структура и перелинковка - это буквально подкормка фронтира.
- Мусор в очереди. Параметры, бесконечные пространства, редиректы - ты можешь их не плодить или прикрыть. Об этом ниже.
- Скорость ответа. Ускорил сервер - робот за то же время скачает больше страниц.
Где влияние косвенное:
- Размер бюджета. Ты не выставляешь его в настройках. Но через скорость, чистоту структуры и общую значимость сайта ты на него давишь.
- Частота переобхода. Прямой кнопки нет. Но честный lastmod и реально меняющийся контент со временем приучают робота заходить чаще.
Где у тебя рычага нет:
- Ты не заставишь проиндексировать страницу. Краулинг - это только скачивание. Решение об индексе принимается дальше по конвейеру.
- Sitemap не команда, а подсказка. Он помогает найти URL и сообщает дату изменения. Он не повышает ранг и не гарантирует индекс.
Для маленького сайта на пару тысяч страниц бюджет почти никогда не узкое место - робот и так все обойдет. Танцы вокруг бюджета начинаются от сотен тысяч и миллионов URL. Если у тебя интернет-магазин на 50 страниц, не выдумывай себе проблему.
Что делать
- Прибей дубли по параметрам. Сортировки sort, метки sessionid и sid, UTM - все это плодит сотни URL с одним контентом. Решай канонизацией, а параметры по возможности отсекай.
- Найди бесконечные пространства. Календарь с кнопкой следующий месяц до бесконечности, фасетные фильтры с комбинаторным взрывом галочек, пагинация без конца - типовые ямы, куда бюджет утекает в никуда.
- Почини коды ответа. Несуществующая страница должна отдавать 404 или 410, а не 200 с текстом ничего не найдено. Мягкие 404 робот вынужден качать снова и снова.
- Вычисти цепочки редиректов. Каждый лишний хоп в цепочке - отдельный запрос робота.
- Держи sitemap чистым. Только канонические, отдающие 200, не закрытые в robots URL. Протухший sitemap с 404 подрывает доверие к этому каналу.
- Сделай критичный контент и навигацию в исходном HTML - server-side rendering, пререндер или гидратация. Ссылки - настоящими a href.
- Ускорь сервер. Высокий TTFB режет capacity: каждый запрос дороже, значит их влезает меньше.
Мифы и устаревшее Закрыл в robots.txt - значит убрал из индекса. Самая дорогая ошибка. robots.txt запрещает обход, а не индексацию. Закрытая там страница, на которую есть внешние ссылки, остается в выдаче - только робот не видит ее содержимого и показывает вслепую, без описания. Скрыть от обхода и убрать из индекса - две разные задачи с разными инструментами.
Хочешь убрать из индекса - открой страницу для обхода и поставь noindex. Хочешь убрать из обхода ради бюджета - закрой в robots. Путать нельзя: закроешь в robots то, что хотел убрать noindex, и оно зависнет в выдаче навсегда.
Работает в моем браузере - значит робот это видит. Нет. Робот сначала смотрит голый HTML. Рендеринг скриптов - это отдельная очередь со своим бюджетом, которая может задержаться или не наступить. Данные, подгруженные запросом после загрузки страницы, могут быть не увидены вовсе.
Чем больше страниц в sitemap, тем лучше. Нет. Завалить sitemap всем подряд, включая мусор и редиректы, - это не помощь, а способ убить доверие к каналу.
Проверь у себя
- Возьми любую важную ссылку и посмотри исходный код страницы (Ctrl+U, не инструменты разработчика). Если ссылки в сыром HTML нет - для робота ее может не быть.
- Открой логи сервера и глянь, на какие URL чаще всего ходит робот. Если в топе сортировки, фильтры и sid - бюджет течет.
- Ткни заведомо несуществующий адрес и проверь код ответа. Должно быть 404 или 410, а не 200.
- Прогони пару случайных URL из своего sitemap. Все должны отдавать 200 и не быть закрыты в robots.