Клоакинг, скрытый текст и варианты отображения
В предыдущем уроке независимую рекомендацию пытались подменить управляемой ссылкой. Теперь рассмотрим подмену самого документа. Страница может сообщать поисковому роботу одно содержание, а посетителю показывать другое. Есть и более простой вариант: одинаковый HTML содержит блок, который предназначен для поиска, но специально недоступен читателю.
Разберём эти случаи на альтернативных вымышленных вариантах статьи C, /articles/markdown-guide.html, на https://example.com. Основная модель A–H остаётся исправленной библиотекой; рассматриваемые дефекты не являются сообщением о состоянии ProfessorWeb. Результатом будет сравнение получаемого и видимого содержания, объяснение различий и план устранения подтверждённой подмены.
Один адрес и разные ответы
Клоакинг означает подмену контента для поисковой системы и посетителя с целью манипуляции поиском и обмана ожиданий. В правилах Google это описано как показ неодинакового содержания людям и поисковым системам для такой цели. Яндекс также рассматривает существенную подмену в зависимости от способа перехода. Маскировка в правилах Google, клоакинг в Яндексе.
Механизм состоит из условия выбора и двух вариантов результата. Условие может учитывать характеристики запроса или контекст перехода. Один вариант должен сформировать у поиска представление о содержательном документе, другой обслуживает фактическую цель владельца. Проблема возникает в несовпадении обещания и полученного посетителем материала, а не просто в наличии нескольких шаблонов.
Предположим, альтернативная версия C отдаёт поисковому роботу подробный урок о сборке Markdown, а обычному посетителю — страницу с предложением купить несвязанный продукт. Адрес и статус 200 у обеих загрузок могут совпадать. По внешней технической таблице это будет один доступный URL, но по содержанию — две разные задачи.
| Условие учебной загрузки | Полученный основной материал | Что видит посетитель | Рабочий вывод |
|---|---|---|---|
| Обычный прямой переход | Предложение несвязанного продукта | Это же предложение | Урок по адресу отсутствует |
| Проверка поисковым инструментом | Текст урока из обещания страницы | Отрисованная учебная версия | Требуется сравнение источника различия |
| Мобильный прямой переход | То же предложение продукта в одной колонке | Более узкий макет | Различие макета не объясняет подмену темы |
Таблица — описание придуманного дефекта, а не полученный сетевой результат. Мы не утверждаем, что поисковая система обнаружила его или уже применила меру. Но если такие ответы подтверждены на собственном сайте, предмет исправления достаточно конкретен: по учебному URL отсутствует единый ожидаемый материал для читателя и поисковой системы.
Условия могут быть настроены намеренно, а могут появиться из-за ошибки маршрутизации или кеша. Наблюдение разных ответов ещё не доказывает умысел. Оно всё равно требует разбора, потому что пользователь получает непредсказуемый результат. В журнале фиксируйте сначала расхождение, а затем подтверждённую причину.
Адаптивная вёрстка и тестирование интерфейса
Различие отображения не всегда является подменой содержания. У нормальной C на компьютере могут быть две колонки, а на телефоне — одна. Оглавление способно переехать под заголовок, иллюстрация — уменьшиться, кнопка — изменить размер. При этом определение Markdown, пример сборки и объяснение результата остаются доступны.
Яндекс прямо отделяет адаптивные макеты при одинаковом контенте, региональные варианты и обычные интерфейсные эксперименты от клоакинга. Ситуации, которые не признаются клоакингом. Это полезная граница: проверка должна сравнивать смысл и доступность материала, а не добиваться одинакового количества пикселей на разных экранах.
Для A/B-теста предположим два оформления оглавления C. Часть аудитории видит раскрытый список, часть — компактный блок с кнопкой. Мы сравниваем, удаётся ли найти нужное объяснение. Поисковый робот не выделяется в особую группу, которой показывается совершенно другая статья. Google рекомендует не подменять набор URL для робота относительно посетителей; для отдельных тестовых адресов описаны canonical и временные перенаправления. Рекомендации Google по тестированию сайта.
Авторизация и платный доступ тоже требуют отдельного объяснения. Существование закрытого материала не делает любую страницу входа обманной: важно, что обещано пользователю, какие права у него есть и как представлен доступ. У Google есть специальные рекомендации для платного контента и гибкого выборочного доступа. Применять их как общее разрешение показывать роботу любые скрытые документы нельзя. Платный контент и гибкий выборочный доступ.
При сравнении контента учитывайте эти условия до вывода. Авторизованный пользователь, новый посетитель и тестировщик могут получать разные персональные элементы. Если основной урок везде тот же, а различается приветствие, это иной случай, чем замена урока рекламой. Подробная запись условий позволяет объяснить результат без предположения, что вся персонализация запрещена.
HTML не всегда совпадает с видимым документом
Следующий альтернативный дефект проще. В HTML C находится длинный блок повторяемых запросов, который не имеет полезной роли в уроке. Стили прячут его от читателя. Робот может получить текст из документа, тогда как посетитель не может найти соответствующий ответ на странице. Такой блок предназначен для искусственного представления о содержании.
Скрытый текст не обязательно требует отдельного ответа сервера. Различие может появляться между исходной разметкой и её визуальным результатом. Поэтому одного сравнения статусов или сохранённых HTML-файлов недостаточно. Нужны просмотр документа, правила стилей и проверка возможности раскрыть содержимое обычным способом.
Google рассматривает злоупотребление скрытым текстом и ссылками отдельно от полезных интерфейсов, где содержание показывается по действию пользователя. Яндекс также выделяет бесполезные скрытые SEO-тексты и отличает их от сворачиваемого содержимого для удобства. Скрытый текст в правилах Google, использование SEO-текстов в Яндексе.
Для C полезный сворачиваемый фрагмент может объяснять, почему изменение исходника не сразу видно в готовом HTML. Здесь нет перечня запросов, предназначенного исключительно роботу: читатель получает конкретное дополнение к уроку.
<details>
<summary>Почему страница не меняется после редактирования Markdown?</summary>
<p>
Браузер открывает готовый HTML. После изменения исходного Markdown
нужно повторить сборку, чтобы обновить этот документ.
</p>
</details>
Это полный фрагмент дополнительного пояснения, который можно вставить в подходящее место статьи. summary задаёт видимое описание, а details позволяет раскрывать содержимое. Такой механизм определён в стандарте HTML. Дополнение может быть свёрнуто по умолчанию, но его назначение и способ доступа понятны человеку.
Аналогично, текст для программы чтения с экрана может быть визуально скрыт, чтобы доступное имя элемента стало яснее. Он служит пользователю вспомогательной технологии, а не набору поисковых фраз. Google прямо приводит подобную доступность среди допустимых случаев. Полезные варианты скрытия содержимого.
Не удаляйте весь невидимый текст по автоматическому правилу. Сначала установите, кто его использует, как его получить и что он объясняет. Иначе вместе с ненужным SEO-блоком можно убрать подписи элементов, пояснения форм и содержимое вкладок.
Сравнение условий на собственной странице
Для диагностики соберите несколько наблюдений одного точного URL. Сохраните время, тип загрузки, устройство, наличие авторизации, источник перехода и доступные сведения о выбранном варианте интерфейса. Если меняется сразу всё, причина различия останется непонятной; удобнее сравнивать пары, в которых различается одно условие.
Начните с прямого перехода без входа в аккаунт и соответствующего ему HTML. Затем сравните отрисованный документ: появились ли новые основные блоки после выполнения JavaScript, не исчез ли текст из-за стилей, доступны ли ссылки и пояснения? Успешная загрузка исходника не подтверждает, что вся необходимая часть страницы стала доступна.
Поисковые инструменты предоставляют собственные сведения о полученном или отрисованном документе. В Google важно различать результаты текущей проверки и прежнюю просканированную версию. Для JavaScript нужно учитывать загрузку ресурсов и итоговый отрисованный HTML. JavaScript и доступность контента для Google.
Если вы просто изменили строку User-Agent в локальном запросе, это не делает его запросом настоящего поискового робота. Так можно исследовать зависимость ответа от параметра, но нельзя подтвердить то, что реально получил Googlebot или робот Яндекса. Сохраните такой результат как локальное наблюдение, а данные официальной проверки — отдельно.
При расхождении изучите источники ответа: правила приложения, шаблон, промежуточный кеш и сторонние компоненты. Если текст меняется после загрузки, исследуйте соответствующий сценарий. Если разные версии приходят уже в HTTP, причина находится раньше визуального отображения. Эта граница помогает выбрать место правки вместо случайной замены CSS.
Наконец, сопоставьте поисковое обещание и фактический материал. Старое описание в выдаче может относиться к прежнему обходу, поэтому сначала проверьте даты. Если текущая страница действительно другая, а сведения поиска ещё старые, это не то же самое, что специально выдаваемая роботу отдельная версия.
Исправление подтверждённой подмены
Для первого альтернативного дефекта C восстановим полноценный урок по её постоянному адресу и уберём правило, которое заменяло его несвязанным предложением. Рекламный блок, если он уместен, может существовать как понятное дополнение к материалу; он не должен занимать место обещанного объяснения для отдельной группы переходов.
Для второго дефекта разберите каждый скрытый блок. Бессмысленный перечень запросов удаляется из источника. Полезное пояснение переносится в текст или становится доступным через нормальный элемент интерфейса. Простое раскрытие огромного повторяющегося блока не добавляет ему самостоятельной ценности; смысл правки — вернуть материалу читательскую задачу.
В рабочей копии журнала seo-audit/changes.csv, созданной из changes-template.csv, укажите подтверждённый источник подмены, область действия и ожидаемое наблюдение. Для C это может быть одинаковый основной урок при прямом и поисковом переходе, отсутствие отдельного текстового набора для робота и доступность полезного дополнения. Если правило находилось в общем шаблоне, изучите и другие использующие его материалы, сохраняя их URL.
Поисковое состояние и возможная мера рассматриваются отдельно от технической правки. Наличие сообщения в инструменте фиксируется с названием, датой и областью; отсутствие сообщения не превращает непроверенный алгоритмический вывод в факт. Порядок разбора ограничений мы рассмотрим в завершающей главе.
Для самостоятельного варианта сравните два решения: мобильная версия C переносит оглавление вниз, а версия для робота дополнительно получает список нерелевантных запросов. У первого есть понятное объяснение устройства экрана; у второго основной вопрос — зачем и для кого появился дополнительный текст. Именно назначение, доступность и подтверждённые различия позволяют отделить нормальный веб-интерфейс от обманной подмены.