понедельник, 20 марта 2017 г.

Поиск поддоменов сайта в индексе Яндекса и Google

В данной статье я хочу рассмотреть один из способов применения операторов языка запроса поисковых машин Яндекс и Google для решения полезной практической задачи – поиска поддоменов сайта, проиндексированных этими поисковыми машинами. Не редки случаи, когда разработчики сайта забывают закрыть от индексации поддомены сайта, на которых содержится бесполезная для поиска информация – копии текущей версии сайта, неактуальные версии сайта, отчеты анализаторов логов и прочая техническая и служебная информация. Захламление поискового индекса подобными данными в ряде случаев может негативно повлиять на позиции сайта. Поэтому желательно все подобные случаи выявить и запретить к индексации поисковыми роботами.
Решение задачи поиска поддоменов в поисковом индексе базируется на простой логической операции – последовательном отрицании при поиске по всему сайту уже известных нам поддоменов. Поиск по всему сайту и в Яндексе и в Google осуществляется с помощью одинакового оператора site:, для которого в качестве значения необходимо указать домен сайта. Например, site:yandex.ru или site:google.com.
Что же касается поиска по определенному поддомену, то в Яндексе это можно сделать с помощью документированного оператора host:. Необходимо иметь ввиду, что указание домена без www и c www дает разные результаты – проиндексированные страницы только с домена второго уровня и только с поддомена www соответственно :
Особенность оператора host: заключается в том, что он не чувствителен к виду протокола http или https, то есть с помощью этого оператора невозможно отделить в выдаче страницы с протоколами http и https друг от друга.
Таким образом, для поиска поддоменов сайта в Яндексе с помощью оператора отрицания ~~ на первом этапе убираем из поиска по всему сайту документы из корневого домена и/или поддомена www и получаем в выдаче документы с других поддоменов:
Отмечу, что здесь есть некоторая особенность. Дело в том, что, в случае достаточно большого количества поддоменов этот список может быть неполным (вообще связка операторов ~~ и host: весьма странным способом то ли группирует, то ли фильтрует результаты поиска), и его необходимо будет уточнять последовательным отрицанием имеющихся в списке поддоменов (при этом в выдаче могут появляться новые поддомены):
Соответственно возможности метода в общем случае ограничены вместимостью поисковой строки (на сегодня ограничение на длину поискового запроса в Яндексе составляет 400 символов).
Рекомендую использовать в URL страницы поисковой выдачи get-параметр &rd=0, который позволяет снять ограничение на показ документов с одинаковыми сниппетами (подробнее см. в моей статье «Параметры URL страницы выдачи Яндекса»).
В Google нет аналога яндексовскому оператору host:, однако поиск по конкретному поддомену там можно осуществлять с помощью недокументированного оператора inurl:, указав в качестве значения полный (включая протокол) адрес поддомена. Например: inurl:https://google.com или inurl:http://www.google.com. Здесь надо иметь ввиду, что оператор inurl: ищет вхождение заданной подстроки в URL документа:
Соответственно, данный способ подразумевает разделение в выдаче страниц с http и https протоколами. А если же указывать в качестве значения просто доменное имя без прокола, то нужного результата мы можем не добиться, т.к., к примеру, все поддомены в качестве подстроки будут включать в себя доменное имя.
Итого для поиска поддоменов сайта в Google с помощью оператора отрицания (минус) на первом этапе убираем последовательно из поиска по всему сайту документы из корневого домена и/или поддомена www по обоим проколам (в случае необходимости) и получаем в выдаче документы с других поддоменов:
В отличие от ситуации с Яндексом здесь какой-либо особой фильтрации результатов не замечено, кроме страндартной фильтрации результатов, которые «очень похожи на уже представленные выше». Стандартная фильтрация обходится добавлением в URL страницы выдачи get-параметра &filter=0 (подробнее см. в моей статье «Параметры URL страницы поисковой выдачи Google»). Равно как не замечено и группировок, поэтому также в случае большого количества поддоменов для большей информативности результатов будет полезно применение последовательного отрицания уже известных поддоменов, т.к. страницы с одного-двух поддоменов могут забить видимую выдачу.  Опять же, здесь мы, как и в случае с Яндексом, ограничены лимитом на длину поискового запроса, в Google он составляет 32 слова.
Кстати, в Яндексе есть также оператор inurl: (бывший некогда документированным, затем прошлым летом исчезнувший из официальной документации, но на данный момент корректно функционирующий) с точно такой же функцией поиска в адресе документа, но по причине того, что он в отличие от гугловского, полностью игнорирует заданный протокол (по сути вырезая его из подстроки), он не годится для решения поставленной задачи:


среда, 1 марта 2017 г.

Кастрация языка запросов Яндекса

31 января 2017 года в блоге разработчиков поисковой системы Яндекс появилась новость об изменении языка запросов, а именно, о прекращении поддержки ряда операторов:
  • & – поиск документов, в которых слова запроса, объединенные оператором, встречаются в одном предложении;
  • && и << – поиск заданных слов в пределах документа;
  • ~ – поиск документов, в которых заданное слово не содержится в одном предложении со словом, указанным до оператора;
  • () – группировка слов при сложных запросах;
  • !! – поиск слова, начальная форма которого указана в запросе.
На моей памяти предыдущее подобное объявление Яндексом о прекращении поддержки операторов случалось всего однажды – в сентябре 2007-го года – и было довольно резонансным, так как касалось операторов link (поиск страниц, ссылающихся на заданную) и anchor (поиск в текстах ссылок, ведущих на заданную страницу), являвшихся важным инструментов для аналитики ссылочного ранжирования.
После этого громких заявлений на данную тему уже не делалось, но часть операторов языка запросов прекратила свое существование, тихо исчезнув из документации (такие, например, как операторы задания веса для слова из запроса : и :: или оператор настройки мягкости для фильтрации по кворуму softness). С другой стороны, до сих пор поддерживаются операторы, никогда не входившие в официальную документацию для большого веб-поиска, а упоминавшиеся, например, только в документации к сервису поиска по сайту или корпоративной сети Яндекс.Сервер. О подобных операторах я писал в своих статьях «Сеанс поисковой магии. Недокументированные операторы языка запросов Яндекса» и «Недокументированные операторы языка запросов Яндекса. Продолжение сеанса поисковой магии».
Звоночки о том, что в языке запросов будет что-то меняться, начали поступать уже некоторое время назад. Так, например, оператор << не так давно стал некорректно работать справа от оператора url: (скриншот сделан до появления обсуждаемой новости):
Для сравнения – пример корректной работы оператора << справа от оператора site:
Операторы, о прекращении поддержки которых было объявлено 31 января, относились к операторам морфологии и поискового контекста и упоминание о них уже исчезло из документации по языку запросов Яндекс.Помощи.
К слову, последние изменения в документации языка запросов были зафиксированы примерно полгода назад, летом 2016 года. Тогда из документации по операторам поискового контекста безо всяких анонсов исчезли операторы расстояния /n, /+n, /-n, /(m n), &&/ n.
А из списка документных операторов исчезло упоминание об операторах:
  • title: - поиск по заголовкам документов (тег title);
  • inurl: - поиск по страницам, в адресе которых есть заданный фрагмент.
При этом обращает на себя внимание тот факт, что два последних оператора допускали применение в связке с официально упраздненным сейчас оператором группировки (), который использовался в случае, если запрос, который нужно было найти в соответствующем фрагменте страницы (заголовке или адресе), состоял из нескольких слов. Руководитель службы Яндекса по работе с веб-мастерами Михаил Сливинский в одном из обсуждений данной новости в соцсетях подтвердил, что последние изменения повлияют также на операторы title: и inurl:, они также будут отключены. Хотя, полагаю, что, возможно, не исключен вариант с частичной работоспособностью данных операторов, когда они будут корректно работать только в применении к единичным словам без использования оператора ().
Примечательно, что все тихо исчезнувшие из официальной документации прошлым летом операторы по факту продолжают на момент написания этой статьи работать корректно. Впрочем, как и операторы, официально упраздненные 31 января (за редким исключением, упомянутым выше). Однако сам факт появления новости о прекращении их поддержки неумолимо свидетельствует о том, что в любой момент можно ожидать изменений в их работе.
Несмотря на то, что в новости о прекращении поддержки операторов упомянуто, что они являются редко используемыми, думаю, что не ошибусь, предположив, что многочисленные SEO-сервисы активно использовали некоторые из них в промышленных масштабах. Возможно, это явилось одной из причин отключения операторов с целью уменьшить нагрузку на поиск от автоматических запросов. Причем, даже если задать вручную буквально несколько подряд запросов с использованием различных операторов, перед вами непременно появится капча, требующая подтвердить, что вы не робот. Это достаточно красноречиво свидетельствует о том, что Яндекс считает подобные запросы, скажем так, не совсем естественными. В любом случае, Яндекс оптимизирует производительность поиска, и посчитал поддержку части операторов слишком большой роскошью. По крайней мере, я не думаю, что отмена операторов связана исключительно с целью лишить SEO-специалистов инструментов для анализа поисковой выдачи, как это было с отключением операторов link и anchor без малого десять лет назад.
Обращает на себя внимание тот факт, что прекращается поддержка операторов, не имеющих прямых аналогов в задокументированном списке операторов языка запросов Google - главного конкурента Яндекса на российском поисковом рынке. Впрочем, в официальном списке Google есть небольшая оговорка о «часто используемых функциях». И реально работающих операторов поиска Google несколько больше, среди недокументированных операторов есть такие как
  • intitle: и allintitle: – поиск в заголовке страницы по одному слову и по фразе соответственно;
  • inurl: и allinurl: – поиск в адресе страницы по одному слову и по фразе соответственно;
  • intext: и allintext: – поиск только в тексте страницы по одному слову и по фразе соответственно;
  • inanchor: и allinanchor: – поиск только в тексте ссылок на страницу по одному слову и по фразе соответственно;
И так вот с учетом недокументированных, но работающих операторов Google, язык запросов Яндекса с отключением операторов title: и inurl: становится еще беднее, чем у основного конкурента.

Итак, язык запросов Яндекса, некогда бывший невероятно мощным, продолжает планомерно урезаться, что, несомненно, осложняет решение задач аналитических исследований поисковой выдачи. Из отключаемых в этот раз операторов особенно жаль терять операторы << и (), которые использовались для построения запросов, решающих ряд важных задач, в частности поиска по анкор-файлу (подробнее см. в моей статье «Сеанс поисковой магии. Поиск по анкор-файлу»). Судя по всему, придется искать новые варианты построения подобных запросов с использованием оставшихся в распоряжении операторов. И вполне возможно, что эта задача не относится к разряду невыполнимых.

Технологии Blogger.