Клоакинг в политике Google описан коротко: пользователям и поисковой системе показывают разный контент с намерением поднять позиции или обмануть людей. Классика жанра старая: робот получает осмысленную статью, человек попадает на страницу с навязчивой рекламой. Обнаружение давно не ручное, автоматика сравнивает версии страниц и передаёт лучших кандидатов живому проверяющему. Хуже другое: под алгоритмические сравнения регулярно попадают законные сценарии, от гео-версий до платного доступа, и разница между приёмом и нарушением иногда сводится к одной строчке разметки. Разберём, как устроено автоматическое сравнение версий, какие приёмы попадают под подозрение, как подготовить проект к проверке, чтобы мера не пришла за честный сервис, и что делать, если письмо о мере уже лежит в ящике.

Определение клоакинга из политики спама и границы дозволенного

Политика приводит характерные примеры: страница о туристических направлениях для робота и страница про сомнительные лекарства для людей, а также текст и ключевые слова, которые появляются в HTML только при запросе со стороны поисковой машины. Граница проведена не по факту различия версий, а по намерению обмануть. Поисковая система не наказывает за технологии, она наказывает за подмену: если сайт построен на JavaScript и изображениях, Google прямо рекомендует сделать контент одинаково доступным роботу и человеку, и рендеринг давно научился исполнять скрипты, так что прятать от него почти нечем. Историческая причина клоакинга исчезла ещё в двухтысячных: тогда роботы не исполняли скрипты, честный контент в графике и Flash не индексировался, и вебмастера подсовывали машине отдельную страницу. Сегодняшний спор о намерениях, а не о технических ограничениях.

Рядом в политике живёт скрытое перенаправление: десктопная аудитория видит нормальную страницу, а мобильная уезжает на посторонний домен. Бывает и обратная сторона, техническая случайность: из-за сбоя балансировщика робот раз за разом получает заглушку. Единичный инцидент мерой не заканчивается, систематическая раздача заканчивается.

Отдельное исключение сделано для платного доступа: пейвол не считается клоакингом, если робот видит полный материал так же, как человек с подпиской, а закрытые части размечены по правилам Flexible Sampling. Легальная динамика интерфейса в список нарушений не входит: аккордеоны и вкладки, всплывающие подсказки, текст для скринридеров политикой разрешены. Хакерский клоакинг упомянут отдельно: взломщики прячут спам именно от владельца, подменяя ответ по пользовательскому агенту и источнику перехода, поэтому система нередко находит взлом раньше хозяина. Отсюда практический совет: при загадочном проседании позиций сравнивают ответ сайта для робота и для человека до любых других гипотез.

Два слоя зрения, как автоматика сравнивает версии страницы

Googlebot скачивает исходный HTML, после чего сервис рендеринга исполняет JavaScript и применяет стили в актуальной версии Chromium. Текст, спрятанный через CSS, вычисляется так же, как исчезает в браузере пользователя. Дальше сравниваются исходник и отрендеренное дерево: содержимое, которое есть в коде, но не видно на странице, помечается как кандидат на манипуляцию.

Сравнение идёт по нескольким осям: текст, ссылки, статус-коды и цепочки перенаправлений. Подмена не обязана быть текстовой: роботу отдают код 200 с полной страницей, человеку 302 на другой адрес, и фиксация мгновенная.

Второй слой: повторные запросы к одной странице в разных условиях. Другой User-Agent, другой IP, переход из результатов поиска против прямого захода, с куками и без. Так находят подмены по географии, источнику перехода и пользовательскому агенту. Настоящего робота проверяют обратным DNS-запросом в обе стороны:

CODE0
Двусторонняя проверка имени и адреса отделяет настоящего робота от подделки, и тот же механизм доступен владельцу: антибот-фильтры пропускают робота не по строке агента, а по подтверждённому имени хоста, потому что строку агента подделывают за секунду. Косвенный канал тот же конвейер: жалобы людей на страницы, где сниппет не сходится с посадочной, попадают в поток проверок наравне с алгоритмическими находками.

Финальное решение о мере остаётся за человеком: автоматика готовит дело, проверяющий выносит решение, а пересмотр после исправлений занимает от нескольких дней до недель. В отчёте владелец видит категорию, шаблон затронутых адресов и образцы страниц, этого хватает, чтобы найти источник расхождения. Ручной поиск подмен не масштабируется на сотни миллиардов страниц, поэтому человек подключается на последнем шаге конвейера. На практике находка редко ограничивается одной страницей: подмены живут на шаблонах, и в отчёте о мере указывают сразу группу адресов. Для владельца рабочий инструмент проверки инспектор URL в Search Console, где рядом лежат исходный HTML и отрендеренная страница. Скорость конвейера объясняет, почему клоакинг всё ещё продают как услугу: разовые подмены живут неделями, но шаблонные схемы вскрываются пачками, и мера приходит на группу адресов, а не на одну страницу.

Региональные версии и автоперенаправления, самый частый источник ложных находок

Распространённый приём: посетителя из региона автоматически перебрасывают на региональную версию, а робот с чужого IP получает дефолтную страницу. Для системы это расхождение, и добрые намерения роли не играют. Типичный конфликт: сеть клиник направляет жителей города на городской поддомен по IP, робот стабильно получает версию другого региона, и городская страница показывается там, где не должна. Тот же риск у перенаправлений по заголовку Accept-Language: браузер робота получает не тот ответ, что браузер человека. При этом раздача по географии сама по себе не запрещена: корректной считается конфигурация, где робот из одной точки видит то же, что местные пользователи.

Языковые версии связывают разметкой, а не принуждением:

<link rel="alternate" hreflang="ru" href="https://example.com/ru/">
<link rel="alternate" hreflang="en" href="https://example.com/en/">

Лечится гео-логика честностью: роботу и пользователю из одной локации отдают одинаковый ответ, принудительные переезды между доменами убирают в пользу выбора пользователя, а автоматический выбор языка заменяют предложением переключиться. Работает простое правило: одна страница отвечает одинаково всем, кто пришёл из одной точки, без сюрпризов по заголовкам запроса. Автоподдомены не приговор: если региональные версии отличаются только ценами и контактами, расхождение минимально, и мера за такое не приходит. Приговор это перенаправление робота на версию, которую не видит ни один живой посетитель.

Платный доступ, разметка isAccessibleForFree и правила Flexible Sampling

Старая схема "роботу полный текст, подписчику два абзаца" без разметки выглядит как классическая подмена. Законный путь другой: робот видит материал целиком, а закрытые блоки размечены прямо в JSON-LD:

CODE2
Поле isAccessibleForFree объясняет системе, какая часть закрыта, а CSS-селектор указывает на конкретный блок, поэтому система связывает закрытую часть с открытым лидом, а не гадает, где заканчивается бесплатное. Сниппет в выдаче честно показывает человеку, что за меткой платный материал. Flexible Sampling добавляет допустимые модели: лид из нескольких абзацев, бесплатный период, месячный счётчик статей. Разметка не поднимет платную статью в топ сама по себе, но снимает претензию в подмене и убирает серую зону, в которой живут подписные проекты. Историческая веха: программа First Click Free закончилась в 2017 году, и с тех пор законный маршрут для подписных страниц один, через разметку и честные отрывки. Чего делать нельзя: полный текст роботу при обрезке у людей без всяких пометок, блоки, видимые только машине, и открытая роботом часть, спрятанная от подписчиков. Читатель видит правду, робот видит всю статью, политика не видит нарушения.

Разделение аудитории, антибот фильтры и стены согласия, где границы размыты

A/B тесты легальны, пока варианты распределяются по кукам и случайной доле аудитории. Как только сегментация строится по User-Agent или IP, система видит устойчивую подмену: робот стабильно получает одну версию, люди другую. Безопасность кук не в хитрости, а в механике: варианты распределяются внутри одной аудитории, и робот видит контрольную страницу так же, как случайный гость. Антибот фильтры дают обратный эффект: подтверждённый обратным DNS робот обязан проходить свободно, а страница-заглушка для робота равносильна признанию в подмене. Сервисы защиты от перегрузок настраивают так, чтобы достоверный робот попадал на основной ответ, а не на проверку с пустым телом. Иллюстрация из практики: магазин включает антибот-режим на распродаже, робот попадает под фильтр и неделями получает заглушку вместо каталога, позиции ползут вниз. Белый список по обратному DNS закрывает такой сценарий навсегда.

Стены согласия тоньше. Если робот видит весь текст, а человек только баннер согласия, автоматика фиксирует расхождение. Честнее показывать роботу ту же версию, что видит человек до согласия, либо размечать закрытую часть через тот же механизм, что и платный доступ. Оба варианта честны по одной причине: различие объяснено, а не спрятано, и проверяющий видит логику продукта, а не подмену. На взломанных сайтах всё сложнее: спам спрятан от владельца, и именно клоакинг вокруг него делает диагностику долгой, а претензии приходят владельцу, а не взломщику.

Аудит расхождений на своём сайте и порядок снятия ручной меры

Быстрая проверка версий делается curl прямо с сервера:

CODE3
Расхождение в ответах не всегда нарушение, но каждый такой случай обязан иметь объяснение в разметке или в устройстве продукта. Автоматизируют проверку: скрипт сравнения версий включают в регламент перед крупными релизами, тогда спор о приёмах решается за минуты, а не письмом из Search Console. Базовый порядок аудита такой:
1. сравнить исходный HTML и отрендеренную страницу в инспекторе URL Search Console;
2. запросить ключевые страницы с User-Agent Googlebot и обычного браузера и сверить ответы;
3. проверить перенаправления для разных регионов, источников перехода и наличия куки;
4. убедиться, что платные блоки размечены isAccessibleForFree и бот видит их честно;
5. перевести сплит-тесты с IP и User-Agent на куки и случайные доли аудитории;
6. наладить свободный пропуск подтверждённого Googlebot в антибот фильтрах;
7. подать запрос на пересмотр с описанием каждого исправленного пункта.

Если мера уже пришла, в отчёте смотрят категорию и образцы адресов, исправляют шаблон целиком, а не точечно, и только потом подают пересмотр. После снятия страницы возвращаются в выдачу постепенно, поэтому позиции проверяют волнами, а не в первый день. При подаче на пересмотр фиксируют три вещи: что именно расходилось, что изменилось, как проверить результат. Клоакинг перестал быть спором о намерениях: система измеряет разницу ответов, а легальность определяется тем, оформлено исключение явно или спрятано. Правило, которое экономит бюджет: с одного адреса робот и человек должны получать один и тот же ответ, а каждое исключение из политики размечено явно. Аудит перед релизом дешевле пересмотра после, и это единственный вывод, который стоит повесить над рабочим столом команды.