Логотип seo-prodvizhenie-biznesa.ru
+7 (921) 333-77-45

Спам в комментариях WordPress: как он попадает в индекс Яндекса и что отключить за десять минут

Спам в комментариях WordPress: как он попадает в индекс Яндекса и что отключить за десять минут
Анатолий Кузнецов
Анатолий Кузнецов
SEO-оптимизатор с 20-летним стажем. Автор блога seo-prodvizhenie-biznesa.ru о продвижении и доработке сайтов.

Спам в комментариях WordPress редко выглядит как катастрофа: сайт открывается, заявки идут, в админке просто висит счётчик непроверенных сообщений. Беда обнаруживается в другом месте — в отчёте «Страницы в поиске» Яндекс Вебмастера появляются адреса вида /uslugi/?replytocom=4821, а под забытой статьёй лежат двести сообщений со ссылками на чужие домены.

Ниже — механика вреда, откуда берутся мусорные адреса, что поставить в каждом пункте раздела «Настройки → Обсуждение», чем «закрыть у новых записей» отличается от «закрыть у старых» и как убрать из индекса то, что уже туда попало.

Что спам-комментарий делает с сайтом в поиске

Одно пропущенное сообщение не значит ничего: вред набирается количеством.

  • Исходящие ссылки с вашей страницы. Поле «Сайт» превращается в ссылку с имени автора, ссылки внутри текста тема обычно тоже делает кликабельными. Двести одобренных комментариев — сотни ссылок на чужие домены с одной страницы.
  • Посторонний текст внутри страницы. Комментарии выводятся в коде наравне со статьёй: для поиска это часть содержимого документа. Когда их больше, чем текста, страница перестаёт быть статьёй об услуге.
  • Адреса, которых вы не создавали. Обсуждение генерирует свои URL: пагинацию, ссылки «Ответить» с параметром, фиды. Отсюда «у меня 90 страниц, а Вебмастер знает про 4000».
  • Риск записи в нарушениях. В разделе «Диагностика → Безопасность и нарушения» один из пунктов — размещение SEO-ссылок, и оговорки «это не я, а спамеры» формулировка не делает.

Пятое следствие техническое: обход уходит на мусор, и до новой статьи робот доходит позже — типовая причина в разборе, почему Яндекс не индексирует новые статьи на WordPress. Отличить просадку от санкций помогает материал, как понять, что сайт под фильтром Яндекса.

Что поиск видит на странице с двумя сотнями спам-комментариев

  • Соотношение своего текста к чужому. Статья на восемь тысяч знаков и двести комментариев по триста знаков дают перевес не в пользу статьи, и тема размывается.
  • Чужие анкоры. Спам ссылается коммерческими фразами: займы, ставки, дипломы. Эти слова оказываются на странице вашей услуги.
  • Чужие языки. Английский, немецкий, турецкий — норма для рассылок и явный признак постороннего содержимого.
  • Однотипность. Сорок сообщений по одному шаблону с разными доменами в поле «Сайт» — рассылка, а не дискуссия.

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

rel=»nofollow ugc»: что WordPress ставит сам и чего это не отменяет

С версии 5.3 WordPress добавляет ссылкам в комментариях атрибут rel="nofollow ugc" — и с имени автора, и внутри текста. Значение ugc означает «содержимое, созданное пользователями», nofollow — просьбу не считать ссылку рекомендацией. Без плагинов ссылки уже помечены, но закрывает это одну задачу из четырёх:

Проблема Решает ли атрибут Почему
Передача веса спамеру в основном да прямое указание не считать ссылку рекомендацией
Посторонний текст в содержимом нет атрибут на ссылке, текст остаётся в документе
Размножение адресов с параметрами нет их создаёт вывод комментариев, а не ссылки

Атрибут ставится при выводе, а не в базе, поэтому самодельная тема в обход стандартных функций его теряет — проверяется в исходном коде. И nofollow — просьба, а не запрет: робот по такой ссылке ходить может.

Мусорные адреса, которые плодят комментарии

Спам-текст виден в админке, а лишние адреса — только в отчётах Вебмастера, и появляются они даже без единого спам-сообщения.

Тип адреса Откуда берётся Чем плох Как убрать
/statya/?replytocom=123 ссылка «Ответить» при древовидных комментариях адрес на каждый комментарий: 200 почти одинаковых страниц отключить древовидные, закрыть параметр Clean-param
/statya/comment-page-2/ разбивка комментариев на страницы дубли статьи: заголовок и текст те же снять «Разбивать комментарии верхнего уровня на страницы»
/comments/feed/ общий фид комментариев, работает по умолчанию отдаёт спам списком и индексируется отключить фиды комментариев или запретить в robots.txt
/statya/feed/ фид комментариев к отдельной записи адрес на каждую запись сайта то же: отключить фиды комментариев целиком
Трекбэки и пингбэки уведомления с других сайтов через xmlrpc.php почти целиком спам снять «Разрешить оповещения с других блогов»

Оговорка про robots.txt: запрет обхода — не удаление из индекса. Сначала убирают причину появления адресов и только потом закрывают их от робота.

«Настройки → Обсуждение»: что поставить в каждом пункте

Все нужные решения принимаются на одной странице админки. Ниже состояние, к которому я привожу коммерческий сайт.

Пункт в «Обсуждении» Что поставить Что это даёт
Разрешить оставлять комментарии на новых записях снять будущие записи выходят закрытыми, старые не меняются
Разрешить оповещения с других блогов (уведомления и обратные ссылки) снять отключает приём трекбэков и пингбэков
Пытаться оповещать блоги, упомянутые в статье снять убирает исходящие уведомления при публикации
Автор комментария должен указать имя и e-mail поставить отсекает простые скрипты
Пользователи должны быть зарегистрированы и авторизованы поставить, если обсуждение нужно сильнейший барьер, но губителен для открытого блога
Автоматически закрывать обсуждение для записей старше N дней поставить, 14–30 дней архив перестаёт быть мишенью рассылок
Комментарий должен быть одобрен вручную поставить ничего не публикуется без вас
Автор комментария должен иметь ранее одобренный комментарий снять иначе пропущенный спамер идёт мимо модерации
Помещать комментарий в очередь на модерацию при наличии более N ссылок поставить 0 любое сообщение со ссылкой уходит на проверку
Разрешить древовидные (вложенные) комментарии снять убирает ссылки с replytocom
Разбивать комментарии верхнего уровня на страницы снять убирает адреса comment-page-N
Письмо мне: комментарий ждёт проверки поставить вопрос читателя не теряется в очереди
Показывать аватары снять при закрытом обсуждении минус внешние запросы на странице

Недооценённых пунктов два. Автозакрытие по сроку спасает архив: рассылки берут адреса из карты сайта и идут по страницам подряд. Лимит ссылок в ноль отправляет в очередь любое сообщение со ссылкой. На новом сайте раздел логично закрыть сразу — порядок в инструкции по настройке WordPress после установки.

Ключевые слова для модерации и блокировки: как заполнять

Внизу того же раздела два поля. «Ключевые слова для модерации» отправляют совпавший комментарий в очередь, «Ключевые слова для блокировки комментариев» сразу помечают спамом. Слова вносятся по одному в строке, совпадение ищется в тексте, имени, адресе сайта, почте и IP, причём как часть слова.

Это «как часть слова» и рождает главную ошибку: строка press заблокирует WordPress, строка кредит зацепит «аккредитацию». Вносите не корни, а конструкции — домены целиком, характерные фразы, связки вида [url= и [link=: BBCode в комментариях WordPress не используется и бывает только в рассылках. Самый точный список — домены спамеров из вашей очереди; чужие списки на десять тысяч строк не тащите.

Слабое место обоих полей — они смотрят на текст, а не на поведение: нейтральное сообщение со ссылкой только в поле «Сайт» не поймает ни одно ключевое слово.

Закрыть у новых записей — не то же, что закрыть у старых

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

Закрывается массово и без плагинов: «Записи → Все записи», показ по 999 элементов в настройках экрана, галочка в шапке списка, «Действия → Изменить → Применить», в блоке массового редактирования «Обсуждение» и «Обратные ссылки» — «Не разрешать», «Обновить». Дальше дыры, о которых вспоминают в последнюю очередь.

  • Страницы, а не записи. Массовое редактирование в «Страницы → Все страницы» такое же. Проверять обязательно: тема часто не выводит комментарии на страницах, а форма доступна, и сообщения копятся в базе невидимо.
  • Вложения-медиафайлы. У каждого файла есть своя страница вложения со своим статусом обсуждения. В новых версиях WordPress она перенаправляется на файл, но на сайтах, обновлявшихся со старых версий, жива. Список — в «Медиафайлах» в режиме списка.
  • Товары и другие типы записей. У магазина свои списки, а отзывы к товарам — отдельный механизм в настройках магазина.

Пагинация комментариев и древовидные ответы

Разбивка на страницы. WordPress создаёт адреса comment-page-2 и далее, каждый отдаёт полный текст статьи с другой порцией комментариев. Для поиска это почти одинаковые документы: часть уйдёт в исключённые как дубли.

Древовидные ответы. При вложенности у каждого комментария появляется ссылка «Ответить» с параметром ?replytocom= и номером. В браузере перехода нет, форма перемещается скриптом, но робот скрипты не исполняет и видит обычную ссылку.

Если адреса уже наплодились: отключить вложенность, добавить Clean-param: replytocom в robots.txt — директива говорит роботу, что параметр не меняет содержимое, — и дождаться переобхода. Запрет через Disallow тоже работает, но грубее.

Akismet, Antispam Bee, премодерация или полное отключение

Плагин нужен, если обсуждение действительно нужно, а поток больше, чем вы готовы читать руками. Из каталога wordpress.org я пользуюсь двумя.

Akismet Anti-spam. Плагин от Automattic, идёт в поставке WordPress, но не активирован и требует ключа. Работает как внешний сервис: текст, имя, почта, адрес сайта и IP уходят на его серверы, и точность высокая потому, что решение принимается по данным со всех подключённых сайтов сразу. Два следствия: на сайте с монетизацией нужна платная подписка, бесплатный режим рассчитан на личные сайты без коммерции — условия сверяйте на сайте сервиса; передача данных комментатора наружу это обработка персональных данных, её место в политике сайта.

Antispam Bee. Бесплатный плагин из того же каталога с обратным подходом: проверки идут на вашем сервере, данные комментаторов никуда не уходят. Отсекает по стране отправителя и языку сообщения, ловит BBCode-ссылки, сверяется с локальной базой спамеров, умеет поле-ловушку и удаление спама без очереди. Жёсткий языковой фильтр отбросит короткие сообщения.

Способ Когда подходит Что закрывает Цена вопроса
Akismet Anti-spam живой блог с десятками комментариев в день массу рассылок, включая тексты без ссылок подписка для коммерческого сайта, данные уходят наружу
Antispam Bee средний поток плюс требования к приватности ботов, чужие языки и страны, BBCode, повторных спамеров бесплатно, но нужен контроль срабатываний
Премодерация вручную до нескольких комментариев в день всё, потому что решает человек ваше время каждый день, в отпуске очередь копится
Полное отключение сайт, где обсуждение не часть продукта проблему целиком, вместе с адресами и фидами обратная связь уходит в форму
Капча в форме дополнение, когда остальное сделано часть простых ботов внешний скрипт, минус к удобству

Капча не первый инструмент потому, что бьёт по живому посетителю и подгружает сторонний скрипт, а рассылки давно обходят простые варианты и часть спама идёт прямым запросом к обработчику, минуя форму. Последовательность: настройки «Обсуждения», лимит ссылок и автозакрытие, антиспам-плагин, и только потом капча. Плагины-комбайны здесь лишние; про разумный минимум — в материале о том, как защитить WordPress без плагинов-комбайнов.

Как проверить, что мусор уже в индексе

  • Поиск по сайту. Оператор site по домену плюс характерное слово из спама, а для адресов — плюс replytocom или comment-page.
  • «Индексирование → Страницы в поиске». Главный отчёт: вид «Все страницы», выгрузка адресов файлом, фильтр по подстрокам comment-page, replytocom, /feed/, trackback. Сколько строк — столько мусора в поиске.
  • «Индексирование → Статистика обхода». Видно, по каким адресам робот ходил и с какими кодами ответа. Если половина обойдённого — параметры и фиды, обход уходит в мусор.
  • Свои исходящие ссылки. Отчёт «Внешние ссылки» показывает ссылки на ваш сайт, а не ваши наружу, поэтому нужен краулер: он собирает внешние ссылки по страницам, и после сортировки по количеству страницы с обсуждением окажутся сверху.
  • Админка. В «Комментариях» смотрите не только очередь, но и вкладки «Спам» и «Одобренные»: сортировка по записи покажет, где сообщений больше.

Что делать со спамом, который уже проиндексирован

  1. Закрыть источник. Настройки «Обсуждения», массовое закрытие у записей, страниц и вложений, отключение пагинации и вложенности. Пока форма открыта, остальное бессмысленно.
  2. Удалить спам и очистить корзину. Пометка «спам» комментарий не удаляет, он остаётся в таблице. Срок автоочистки задаёт константа EMPTY_TRASH_DAYS в wp-config.php, при обнулённой константе корзина не очищается вообще. Руками: вкладка «Спам» → «Очистить спам», затем корзина.
  3. Проверить ответы адресов. После отключения пагинации адреса comment-page-N обычно перенаправляются на запись. Для удалённого навсегда раздела уместен ответ 410, для адреса с заменой — постоянный редирект: как его настроить, разобрано в инструкции про 301-редиректы в WordPress без плагина.
  4. Отправить страницы на переобход. «Индексирование → Переобход страниц» плюс способы из материала о том, как ускорить индексацию сайта в Яндексе. Первыми — те, с которых вычищены комментарии.
  5. Закрыть параметры от обхода. Только теперь: Clean-param для replytocom, запреты для фидов комментариев и трекбэков.
  6. Проверить нарушения в «Диагностике». Если запись о размещении SEO-ссылок есть, сначала убрать исходящие ссылки из комментариев, потом отправлять на перепроверку.
  7. Дать время отчёту. Смотреть на динамику числа страниц в поиске за несколько недель, а не на снимок одного дня.

Если комментариев десятки тысяч, чистка через админку может упасть по времени запроса: делайте порциями и со свежей копией базы. Если после этого сайт перестал открываться — см. разбор ошибок на сайте WordPress. С этого пункта я начинаю бесплатный аудит сайта, когда вижу в Вебмастере адреса с параметрами комментариев.

Когда комментарии всё-таки нужны, а когда их проще выключить

Отключать обсуждение рефлекторно я не призываю: живые комментарии дают вопросы, которые не приходят в голову автору, — готовые темы для новых материалов. Рабочая схема для контентного проекта: премодерация, лимит ссылок ноль, автозакрытие через две-четыре недели, вложенность и разбивка на страницы отключены.

Обратный случай — сайт услуг или магазин, где обсуждение никто не читает и не ведёт: комментарии дают только мусор и работу по чистке. Проще выключить совсем и оставить форму заявки. Так я настраиваю сайты, которые беру на SEO-продвижение сайта на WordPress под ключ: обсуждение закрыто на всех типах записей, фиды комментариев отключены, вопросы приходят в форму и мессенджер.

Если спам появился не через форму комментариев

Сценарий, который путают со спам-комментариями: страниц в индексе тысячи, тексты на чужом языке, а в «Комментариях» чисто. Это взлом, признаки другие: мусор лежит в записях и страницах, часто с датами публикации в будущем; есть пользователи, которых вы не создавали; содержимое видно роботу, но не вам. Начинать надо с поиска точки входа и смены всех паролей — пошагово это разобрано в материале о том, как убрать спам-страницы из индекса после взлома WordPress.

Десять минут: порядок действий

Шаг Где Результат
Снять «комментарии на новых записях» и «оповещения с других блогов» Настройки → Обсуждение новые записи закрыты, трекбэков нет
Одобрение вручную, снять «ранее одобренный», лимит ссылок — 0 Настройки → Обсуждение ничего не публикуется без вашего решения
Включить автозакрытие обсуждения через 14–30 дней Настройки → Обсуждение архив перестаёт быть мишенью
Снять древовидные комментарии и разбивку на страницы Настройки → Обсуждение нет ?replytocom и comment-page-N
Выставить «Не разрешать» в «Обсуждении» и «Обратных ссылках» Записи, Страницы, Медиафайлы закрыто у опубликованного
Очистить вкладку «Спам» и корзину Комментарии мусор уходит из базы
Выгрузить «Все страницы», отфильтровать по comment-page Вебмастер → Страницы в поиске число мусорных адресов
Отправить вычищенные страницы на переобход Вебмастер → Переобход страниц поиск быстрее увидит правку
Проверить «Безопасность и нарушения» Вебмастер → Диагностика подтверждение, что нарушений нет

Восемь шагов из девяти делаются мышкой в админке; дольше всего идёт массовое закрытие обсуждения на нескольких тысячах записей.

Коротко

  • Вред складывается из четырёх механизмов: исходящие ссылки с вашей страницы, посторонний текст в содержимом, лишние адреса и риск записи о SEO-ссылках в «Безопасности и нарушениях».
  • С версии 5.3 WordPress сам ставит ссылкам в комментариях rel="nofollow ugc": это снимает вопрос передачи веса, но не остальные.
  • Мусорные адреса дают три вещи: разбивка комментариев на страницы, древовидные ответы с replytocom и фиды комментариев.
  • В «Обсуждении» решают два пункта: автозакрытие обсуждения через 14–30 дней и лимит ссылок, выставленный в 0.
  • Галочка «на новых записях» не влияет на существующие: записи, страницы и вложения закрываются массовым редактированием отдельно.
  • Akismet точнее, но платен для коммерческих сайтов и передаёт данные наружу; Antispam Bee работает локально и бесплатно. Капча — последний шаг.
  • Уборка по порядку: закрыть источник, удалить спам и очистить корзину, проверить ответы адресов, отправить на переобход и только потом закрывать параметры в robots.txt.
  • Если мусор в записях и страницах, а в комментариях чисто, это взлом: точка входа, пароли, чистка базы, потом индекс.

Увеличьте позиции и продажи вашего сайта

Профессиональное SEO-продвижение с гарантией результата. Выберите подходящую услугу:

Анатолий Кузнецов — SEO-оптимизатор

Остались вопросы по продвижению?

Меня зовут Анатолий Кузнецов, я SEO-оптимизатор с 20-летним стажем. Разберу ваш сайт, отвечу на вопросы и подскажу, что улучшить для роста позиций в Яндексе и Google.

Связаться со мной →

Комментарии

Игорь

Снял галочку про новые записи полгода назад, спам всё равно идёт, думал — WordPress глючит. Посмотрел массовое редактирование: 1400 записей с открытым обсуждением. Спасибо, дошло.

Анатолий Кузнецов автор

Самая частая история по теме. Когда закроете записи, отдельно пройдите «Страницы» и «Медиафайлы»: у них свои статусы. И поставьте показ по 999 элементов, иначе на 1400 записях устанете листать.

Наталья

Не согласна с советом отключать комментарии на коммерческом сайте. В блоге нашего магазина люди задают вопросы по товарам, и это половина полезного на странице.

Анатолий Кузнецов автор

Если вопросы задают и на них отвечают — это как раз случай, где обсуждение оставляют. Совет про отключение адресован сайтам, где под страницами годами висит только автоматический мусор. У вас я бы сделал так: премодерация, лимит ссылок ноль, автозакрытие через месяц, вложенность и пагинация выключены.

Павел

Выгрузил «Все страницы» из Вебмастера и отфильтровал по replytocom: 612 адресов в поиске при 78 реальных страницах. Спасибо за метод.

Елена

Вопрос про «Ключевые слова для блокировки»: можно вписать туда список доменов из накопившегося спама? У меня их штук триста в очереди.

Анатолий Кузнецов автор

Домены целиком — безопасный вариант, ложных срабатываний почти не даёт, по одному в строке. Но триста доменов проблему не закроют: следующая партия придёт с других адресов. Поле вспомогательное, решает премодерация плюс лимит ссылок. И не вписывайте короткие корни: проверка идёт по части слова.

Сергей

Есть смысл ставить капчу, если антиспам-плагин уже стоит? Предлагают прикрутить, говорят, без неё никак.

Анатолий Кузнецов автор

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

Дмитрий

Про страницы вложений — в десятку. У меня спам сидел на страницах картинок, сообщения приходили от записей с названиями вида IMG-2048, и я не понимал, откуда они берутся.

Марина

После очистки таблицы комментариев от сорока тысяч спамных записей у нас заметно ускорились страницы блога, хостинг перестал жаловаться на нагрузку. Так что это не только про поиск.

Антон

Зачем что-то настраивать, если WordPress сам ставит nofollow? Ссылки не учитываются, спамеру ничего не достаётся. Мне кажется, проблема раздута.

Анатолий Кузнецов автор

Атрибут закрывает один вопрос — про вес. Остальные остаются: текст спама лежит в содержимом страницы, чужая тематика соседствует с описанием услуги, адреса с параметрами тратят обход. И на самодельных темах атрибут теряется — проверьте свою в исходном коде.

Владимир

Спасибо за порядок действий. Я в прошлый раз сделал наоборот: сначала закрыл всё в robots, потом чистил комментарии. Полгода ждал и не понимал, почему ничего не меняется.

Оксана

Фид комментариев к каждой записи отключается без правки темы? У меня их по числу записей, и все висят в статистике обхода.

Руслан

Про ложные срабатывания по ключевым словам — выстрадано. Вписал короткий корень, три месяца в модерацию улетали сообщения по моей же теме. Обнаружил случайно.

Алексей

Пометка «спам» реально не удаляет комментарий. У меня в базе лежало больше ста тысяч таких записей, таблица весила больше остального сайта. Очистил вкладку — база сжалась в несколько раз.

Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

 Нажимая «оставить комментарий» вы принимаетеправила конфиденциальности 

Прокрутить вверх