Что краулер делает и чего от него ждать
Настольный краулер запрашивает страницы сайта одну за другой, переходя по найденным ссылкам, и складывает результат в таблицу. Каждая строка — адрес, каждый столбец — свойство: код ответа, заголовок, описание, H1, канонический адрес, директивы индексирования, число входящих и исходящих ссылок, вес документа.
Ценность этого не в поиске «ошибок», а в том, что появляется полная выборка. Проверить сорок страниц вручную можно, четыре тысячи — нет. Краулер превращает вопросы вида «а везде ли у нас так» из предположения в запрос к таблице.
Важно сразу понимать границу. Программа показывает состояние сайта на момент обхода, то есть то, что доступно роботу. Она не показывает, что робот выбрал, что попало в базу и что получает показы. Полный технический аудит складывается минимум из трёх источников: краулера, панели вебмастера и серверных журналов.
Настройки, которые меняют результат
Половина неверных выводов рождается до запуска — из-за того, что обход шёл не в тех условиях.
Соблюдение robots.txt. По умолчанию его стоит соблюдать: тогда выборка совпадает с доступной роботу. Отдельный обход с игнорированием правил показывает, сколько сайта закрыто и что именно там лежит — сопоставление двух наборов полезнее каждого по отдельности, а сама механика описана в разборе robots.txt.
Скорость и число потоков. Ограничение обязательно для сайтов на слабом хостинге. Обход без ограничений выглядит как атака, и сервер начинает отдавать ошибки — а вы получите отчёт, в котором половина страниц «недоступна» по вине самого обхода.
Исполнение скриптов. Выключено — быстро и совпадает с базовым поведением робота. Включено — медленно, но показывает содержимое, появляющееся после отрисовки. Разница между двумя режимами на одних и тех же страницах и есть ответ на вопрос, теряет ли робот содержимое.
Учёт параметров в адресе. Если оставить всё как есть, обход каталога с фильтрами может не закончиться никогда: комбинации параметров перемножаются. Правила отсечения задаются до старта, иначе выборка утонет в вариантах одного и того же документа.
Дополнительные источники адресов. Обход по ссылкам плюс загруженный список из карты сайта плюс выгрузка адресов из панели. Только так находятся страницы без входящих ссылок — их не видно при обходе по определению.
Порядок чтения отчётов
Отчёты читаются не по интересности, а по зависимости: каждый следующий имеет смысл только на том, что прошло предыдущий.
| Очередь | Что смотрят | Почему именно здесь |
|---|---|---|
| 1 | Коды ответа | Ошибки и переадресации отсекают часть сайта; остальные проверки на них бессмысленны |
| 2 | Директивы индексирования | noindex и запреты решают, попадёт ли страница в базу, независимо от её содержания |
| 3 | Канонические адреса | Показывают, какие страницы объявлены копиями и не окажется ли среди них нужная |
| 4 | Заголовки и описания | Пустые, дублирующиеся, обрезанные — влияют на показ в выдаче |
| 5 | Глубина и входящие ссылки | Страницы на четвёртом уровне и без входящих ссылок обходятся редко |
| 6 | Размер и время ответа | Медленные шаблоны видны как класс, а не как отдельные случаи |
Смысл порядка виден на примере. Тысяча предупреждений о пустых описаниях выглядит страшно, пока не выясняется, что девятьсот из них — на страницах с noindex, которые в выдаче не появятся никогда. Работа над ними даст ноль.
Практический приём, который экономит больше всего времени: после первого прохода отфильтровать выгрузку до строк с кодом 200 и без запретов индексирования, сохранить как отдельный набор и дальше работать только с ним. Всё, что отсеялось, разбирается один раз и целыми классами — «весь раздел закрыт», «вся пагинация переадресуется», — а не постранично. Разбор по одной строке на таких объёмах не заканчивается никогда, потому что причины у строк общие.
Первые три строки таблицы читаются как один блок: вместе они отвечают на вопрос, какие страницы вообще претендуют на попадание в индекс.
Как сверить обход с картой сайта
Расхождение между числом адресов в карте сайта и числом найденных при обходе — быстрый способ обнаружить и потерянные страницы, и мусор в карте.
curl -s 'https://example.com/sitemap.xml' | grep -c '<loc>'
cut -d',' -f1 internal_all.csv | tail -n +2 | sort -u | wc -l
Первая команда считает адреса в карте сайта, вторая — уникальные адреса в выгрузке краулера. Как читать разницу:
- Числа близки — карта соответствует реальной структуре. Дальше сравнивают уже поимённо, а не по количеству.
- В карте заметно больше — там перечислены адреса, до которых нет пути по ссылкам, либо удалённые страницы. Робот попадёт на них позже и с меньшим приоритетом, а часть встретит ошибкой.
- При обходе найдено заметно больше — сайт генерирует адреса, не попадающие в карту: параметры фильтров, страницы пагинации, варианты со слешем и без. Здесь же обычно обнаруживаются дубли из-за структуры адресов.
- Вторая команда вернула единицу — в выгрузке только заголовок, обход не состоялся. Обычно это запрет в robots.txt на стартовый адрес или блокировка со стороны защиты сайта.
Разделитель в cut указан запятой; если выгрузка сохранена с другим разделителем, значение флага -d меняется. tail -n +2 отбрасывает строку заголовков.
Обход остановился на нескольких десятках адресов. Чаще всего запрет в robots.txt, требование авторизации или защита от ботов, отдающая ошибку. Проверьте код ответа для стартового адреса и повторите обход с другим user-agent.
В отчёте тысячи страниц с одинаковыми заголовками. Обычно это варианты одного документа с параметрами сортировки и фильтров, а не отдельные страницы. Прежде чем править метатеги, выясните, сколько из этих адресов вообще должны существовать — разбор в материале о дублях.
Краулер нашёл страницы, о которых вы не знали. Остатки старого движка, тестовые разделы, чужие страницы после взлома. По каждому классу решение своё — переадресация, удаление с кодом 404 или закрытие от обхода.
Много страниц на глубине четыре и дальше. Путь по ссылкам от главной слишком длинный, и робот доходит туда редко. Лечится не настройками краулера, а сокращением маршрута — приёмы собраны в перелинковке.
Чего краулер не покажет
Ограничения принципиальные и не снимаются настройками.
Он не знает, что делал робот. Обход программой показывает доступность, а не факт посещения. Страница может быть идеально настроена и при этом не запрашиваться месяцами. Ответ на этот вопрос есть только в журналах сервера.
Он не знает, что в индексе. Наличие страницы в выгрузке не означает ничего, кроме того, что она открылась. Сопоставление с реальным попаданием в базу делается через панель вебмастера.
Он не оценивает содержание. Столбец с числом слов не отличает полезный текст от набора шаблонных фраз. Решение «эта страница тонкая» принимает человек, программа только сортирует.
Он не измеряет скорость для людей. Время ответа сервера в выгрузке — это не то же самое, что скорость загрузки у посетителя с медленным устройством; разница разобрана в материале про скорость.
Он ничего не решает про приоритеты. Число предупреждений не измеряет качество сайта. Двести пустых описаний на страницах без показов менее важны, чем один неверный канонический адрес на разделе, приносящем половину трафика.
Спорное место
Отчёт краулера легко превратить в список задач: выгрузил, отфильтровал по столбцу «ошибка», отдал в работу. Получается длинный, конкретный и внешне обоснованный план.
Слабость такого плана в том, что программа сортирует по формальным признакам, а важность определяется совсем другим — тем, приносит ли страница показы и рассчитываете ли вы на неё вообще. Технически безупречный сайт из страниц, которые никому не нужны, остаётся сайтом из ненужных страниц.
Практичнее сначала свести выгрузку краулера с выгрузкой показов из панели и работать сверху вниз по трафику, а не сверху вниз по числу предупреждений. Это менее эффектно в отчёте: вместо «устранено 1400 ошибок» получается «исправлено 12 адресов». Зато исправленное относится к страницам, которые кто-то открывает.
Частые вопросы
Чем краулер отличается от панели вебмастера?
Нужно ли исполнять скрипты при обходе?
Почему краулер нашёл меньше страниц, чем есть на сайте?
Обязательно ли соблюдать robots.txt при обходе своего сайта?
Не навредит ли обход работе сайта?
Источники
- Поисковый робот — Wikipedia
- Общие сведения о сканировании и индексировании — Google