Краулер (от английского crawler — «ползать») — это поисковый робот, используемы поисковой системой для обнаружения новых страниц в интернете. Простыми словами, краулер — это поисковый робот Google, «Яндекса» и других поисковых систем.
Принцип работы заключается в постоянном сканировании страниц и нахождении на них ссылок с дальнейшим переходом по ним. Всю собранную информацию робот заносит в специальную базу данных, которая называется индексом. Данные о новых страницах в интернете поисковая машина берет как раз из такого индекса.
Отдельно следует отметить большое количество синонимов, которыми могут называть поискового краулера. Среди них поисковый паук, робот, бот, ant, webspider, webrobot и т. д.
Как поисковый робот видит страницу
Он видит веб-сайт совсем не так, как его видит пользователь. Вместо привычного нам визуального контента паук обращает внимание на заголовок, ответ и IP-адрес:
Поисковый робот анализирует следующие параметры:
- Ответ HTTP-заголовка страницы.
- Текущий веб-сервер.
- Текущую дату в GMT-формате.
- Тип контента.
- Объем контента.
- Наличие Keep-Alive (постоянное HTTP-соединение).
- Локейшн (URL сайта / страницы).
- Код перенаправления.
- IP-адрес.
- Установленные сайтом правила cookie.
- Внешние и внутренние ссылки на странице.
Как работает робот Google и «Яндекса»
Если представить алгоритм взаимодействия поискового робота со страницей обобщенно, оно выглядит следующим образом:
- Переход по URL.
- Сканирование контента страницы.
- Сохранение содержимого на сервере. На этом этапе может происходить конвертация формата данных в удобочитаемый для поисковой машины формат.
- Повторение указанной цепочки с переходом по новому URL.
У каждой поисковой машины свои роботы, и порядок сканирования может немного различаться. Например, по количеству посещений, максимальному количеству переходов, зацикливанию и т. д.
Все это регламентируется поисковой системой. Соответственно, нельзя вывести какие-то общие цифры, но можно посмотреть на поведение типичного, на примере паука Googlebot:
Типы краулеров
Поисковые системы используют разные типы для сканирования разного контента. Например, у Google есть отдельные поисковые роботы для обработки изображений, видео, новостного контента, общего качества страницы. Кроме этого, у зарубежной ПС имеется собственный целевой робот для индексации мобильных страниц и проверки качества рекламы. Каждый из перечисленных поисковых роботов обладает собственным user-agent'ом, и при желании для любого из них можно создать директиву в стандарте исключения для роботов. Об этом мы расскажем в разделе «Как запретить обход сайта».
У «Яндекса» разноцелевых гораздо меньше: по разным оценкам — от четырех до пяти штук. Основных пауков у «Яндекса» два: стандартный бот и быстрый паук Orange.
Работа краулера на примере поискового робота «Яндекса» выглядит так:
- Планировщик строит очередность сканирования.
- Этот маршрут отправляется роботу.
- Он обходит документы.
- Если сайт отдает корректный ответ, он скачивает данные.
- Самостоятельно идентифицирует параметры документа, включая язык.
- Затем он отправляет полученные сведения в кэш «Яндекса» или иное хранилище.
Вот примерная визуализация этих процессов:
Как часто обновляется индекс Google и «Яндекса»
Информация о найденных ссылках попадает в базы данных поисковых машин не сразу, а через определенный период времени. Обновление индекса — базы данных, содержащей ссылки на вновь найденные URL — у «Яндекса» может занимать от нескольких дней до 1–2 недель. Google же обновляет индекс гораздо чаще — несколько раз за сутки.
Это, пожалуй, одно из самых принципиальных отличий между двумя поисковыми системами именно с точки зрения процессов обработки новых страниц.
Почему краулер не индексирует все страницы сайта сразу
У каждого поискового робота существует собственный лимит по числу обращений к сайту — например, суточный — краулинговый бюджет. В Google Search Console можно посмотреть суммарное количество запросов сканирования вашего сайта на вкладке «Статистика сканирования»:
Учитываются и повторные запросы сканирования одного и того же URL. Кроме того, у каждой поисковой машины существуют ограничения по уровням доступа, а также по размеру текстового контента.
По всем вышеуказанным причинам сайт, особенно если он имеет сложную структуру и большое количество страниц, не может быть проиндексирован за один раз (и даже за 2-3-4).
Зачем поисковые роботы притворяются реальными пользователями
Краулеры поисковых систем почти всегда «играют по правилам». Они никогда не представляются пользовательским клиентом — например, браузером. Однако пауки различных сервисов сканируют огромные массивы данных. Если они будут соблюдать все ограничения для краулеров (бюджеты обращений, интервалы между обращениями), скорость сканирования будет оставаться очень низкой.
Чтобы решить эту проблему, разработчики веб-сервисов в частном порядке создают пауков, которые представляются пользовательским клиентом, чаще всего — браузером.
Фактор роботности
До недавнего времени поисковые роботы, которые притворяются реальными пользователями, могли негативным образом влиять на статистику посещаемости сайта, искажая ее. Сегодня фактор роботности учитывает как Google Analytics, так и «Яндекс.Метрика».
В любом отчете «Яндекс.Метрики» можно ограничить отображение визитов, создаваемых роботами. Для этого откройте любой интересующий вас отчет, кликните по строке «Данные с роботами» и выберите необходимый сценарий фильтрации:
Роботность по поведению — это доля визитов роботов, определенных по поведенческим факторам. Роботы по поведению маскируются под реальных посетителей
В Google Analytics также можно фильтровать роботов. Для этого откройте настройки администратора и перейдите в параметры представления:
Сделайте активным чекбокс «Исключить обращения роботов и пауков»:
Всё. Теперь GA не будет учитывать их своих отчетах.
Вежливые и вредные роботы
Классификация не официальная, но вполне подходящая в данном случае.
Вежливые роботы — те, которые представляются. Вредные роботы — маскируются под пользователя.
Не стоит думать, что объем трафика, генерируемого роботами, ничтожен: поисковые роботы есть не только у Google и «Яндекса», а также других поисковых систем, но и у огромного количества аналитических сервисов, сервисов статистики, SEO-инструментов. Например, существуют: Alexa, Amazon, Xenu, NetPeak, SEranking.
Поисковые роботы указанных сервисов в некоторых случаях — например, при сверхограниченных ресурсах сервера — могут становиться настоящей проблемой. Часто вебмастеры сталкиваются и с откровенно вредоносными краулерами, которые постоянно добывают определенный тип данных: например, электронные адреса для создания баз данных для организации дальнейших почтовых рассылок.
Способов борьбы предостаточно. Например, для многих CMS сегодня доступны разнообразные инструменты, ограничивающие воздействие вредных пауков на сайт. Часто они сделаны в виде плагинов или расширений. Например, в WordPress разработан плагин Blackhole for Bad Bots.
Этот плагин работает так: сначала плагин добавляет скрытую триггерную ссылку в нижний коллонтитул страниц. Вебмастер добавляет в robots.txt строку, запрещающую всем паукам переходить по скрытой ссылке. Те, которые игнорируют или не подчиняются правилам, сканируют ссылку и автоматически попадают в ловушку.
Плохие краулеры вредны для сайта в первую очередь тем, что создают высокую нагрузку на сервер. В особо тяжелых случаях сайт даже может стать недоступным.
Как запретить обход сайта
Чтобы запретить обход сразу всем или только определенным роботам, вы должны добавить директивы в robots.txt. В этом файле прописываются следующие параметры:
- Временные интервалы, которые он должен соблюдать при обращении к сайту.
- Конкретные разделы, которые паук не должен сканировать.
Выглядеть стандарт исключений для роботов может по-разному. Например, так:
Disallow: /nogooglebot/
Allow: /
Sitemap: http://www.abc.com/sitemap.xml
Расшифруем:
- Googlebot мы ограничили обход любых ссылок, которые начинаются с http://abc.com/nogooglebot/.
- Карта сайта опубликована по URL http://www.abc.com/sitemap.xml.
- Все остальные (кроме Googlebot) свободно обходят сайт.
Сайт по умолчанию доступен для всех, если в robots.txt не указано обратное.
Все указания в стандарте исключений для роботов носят лишь рекомендательный характер. Поисковый робот не обязаны соблюдать их на 100 %, так как директива является лишь рекомендацией для робота.
Чтобы посоветовать всем поисковым роботам не индексировать сайт, добавьте эту директиву:
Disallow: /
Чтобы посоветовать не индексировать страницу конкретному боту, укажите его юзерагент таким образом:
Disallow: /
Также в robots.txt вы можете создать директиву, которая советует роботам ограничить индексирование, например, целого каталога со всем содержимым внутри:
Disallow: /private/
Disallow: /musor/
А так мы советуем не обходить конкретную веб-страницу:
Disallow: /private_page.html
Важно: Файл robots.txt не должен применяться для полной блокировки показа страниц в результатах поиска. Для указанной задачи эффективнее всего просто запаролить страницу либо прописать noindex-директиву в HTTP-заголовок или страничный метатег.