
Спам в комментариях 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. Сколько строк — столько мусора в поиске. - «Индексирование → Статистика обхода». Видно, по каким адресам робот ходил и с какими кодами ответа. Если половина обойдённого — параметры и фиды, обход уходит в мусор.
- Свои исходящие ссылки. Отчёт «Внешние ссылки» показывает ссылки на ваш сайт, а не ваши наружу, поэтому нужен краулер: он собирает внешние ссылки по страницам, и после сортировки по количеству страницы с обсуждением окажутся сверху.
- Админка. В «Комментариях» смотрите не только очередь, но и вкладки «Спам» и «Одобренные»: сортировка по записи покажет, где сообщений больше.
Что делать со спамом, который уже проиндексирован
- Закрыть источник. Настройки «Обсуждения», массовое закрытие у записей, страниц и вложений, отключение пагинации и вложенности. Пока форма открыта, остальное бессмысленно.
- Удалить спам и очистить корзину. Пометка «спам» комментарий не удаляет, он остаётся в таблице. Срок автоочистки задаёт константа
EMPTY_TRASH_DAYSвwp-config.php, при обнулённой константе корзина не очищается вообще. Руками: вкладка «Спам» → «Очистить спам», затем корзина. - Проверить ответы адресов. После отключения пагинации адреса
comment-page-Nобычно перенаправляются на запись. Для удалённого навсегда раздела уместен ответ 410, для адреса с заменой — постоянный редирект: как его настроить, разобрано в инструкции про 301-редиректы в WordPress без плагина. - Отправить страницы на переобход. «Индексирование → Переобход страниц» плюс способы из материала о том, как ускорить индексацию сайта в Яндексе. Первыми — те, с которых вычищены комментарии.
- Закрыть параметры от обхода. Только теперь:
Clean-paramдляreplytocom, запреты для фидов комментариев и трекбэков. - Проверить нарушения в «Диагностике». Если запись о размещении SEO-ссылок есть, сначала убрать исходящие ссылки из комментариев, потом отправлять на перепроверку.
- Дать время отчёту. Смотреть на динамику числа страниц в поиске за несколько недель, а не на снимок одного дня.
Если комментариев десятки тысяч, чистка через админку может упасть по времени запроса: делайте порциями и со свежей копией базы. Если после этого сайт перестал открываться — см. разбор ошибок на сайте 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-оптимизатор с 20-летним стажем. Разберу ваш сайт, отвечу на вопросы и подскажу, что улучшить для роста позиций в Яндексе и Google.
Связаться со мной →
Комментарии
Игорь
Снял галочку про новые записи полгода назад, спам всё равно идёт, думал — WordPress глючит. Посмотрел массовое редактирование: 1400 записей с открытым обсуждением. Спасибо, дошло.
Анатолий Кузнецов автор
Самая частая история по теме. Когда закроете записи, отдельно пройдите «Страницы» и «Медиафайлы»: у них свои статусы. И поставьте показ по 999 элементов, иначе на 1400 записях устанете листать.
Наталья
Не согласна с советом отключать комментарии на коммерческом сайте. В блоге нашего магазина люди задают вопросы по товарам, и это половина полезного на странице.
Анатолий Кузнецов автор
Если вопросы задают и на них отвечают — это как раз случай, где обсуждение оставляют. Совет про отключение адресован сайтам, где под страницами годами висит только автоматический мусор. У вас я бы сделал так: премодерация, лимит ссылок ноль, автозакрытие через месяц, вложенность и пагинация выключены.
Павел
Выгрузил «Все страницы» из Вебмастера и отфильтровал по replytocom: 612 адресов в поиске при 78 реальных страницах. Спасибо за метод.
Елена
Вопрос про «Ключевые слова для блокировки»: можно вписать туда список доменов из накопившегося спама? У меня их штук триста в очереди.
Анатолий Кузнецов автор
Домены целиком — безопасный вариант, ложных срабатываний почти не даёт, по одному в строке. Но триста доменов проблему не закроют: следующая партия придёт с других адресов. Поле вспомогательное, решает премодерация плюс лимит ссылок. И не вписывайте короткие корни: проверка идёт по части слова.
Сергей
Есть смысл ставить капчу, если антиспам-плагин уже стоит? Предлагают прикрутить, говорят, без неё никак.
Анатолий Кузнецов автор
Посчитайте, сколько спама реально проходит мимо плагина за неделю. Если единицы — капча не нужна, заплатите внешним скриптом и лишним шагом для посетителя. Если сотни — плагин настроен не до конца или обсуждение открыто там, где не нужно.
Дмитрий
Про страницы вложений — в десятку. У меня спам сидел на страницах картинок, сообщения приходили от записей с названиями вида IMG-2048, и я не понимал, откуда они берутся.
Марина
После очистки таблицы комментариев от сорока тысяч спамных записей у нас заметно ускорились страницы блога, хостинг перестал жаловаться на нагрузку. Так что это не только про поиск.
Антон
Зачем что-то настраивать, если WordPress сам ставит nofollow? Ссылки не учитываются, спамеру ничего не достаётся. Мне кажется, проблема раздута.
Анатолий Кузнецов автор
Атрибут закрывает один вопрос — про вес. Остальные остаются: текст спама лежит в содержимом страницы, чужая тематика соседствует с описанием услуги, адреса с параметрами тратят обход. И на самодельных темах атрибут теряется — проверьте свою в исходном коде.
Владимир
Спасибо за порядок действий. Я в прошлый раз сделал наоборот: сначала закрыл всё в robots, потом чистил комментарии. Полгода ждал и не понимал, почему ничего не меняется.
Оксана
Фид комментариев к каждой записи отключается без правки темы? У меня их по числу записей, и все висят в статистике обхода.
Руслан
Про ложные срабатывания по ключевым словам — выстрадано. Вписал короткий корень, три месяца в модерацию улетали сообщения по моей же теме. Обнаружил случайно.
Алексей
Пометка «спам» реально не удаляет комментарий. У меня в базе лежало больше ста тысяч таких записей, таблица весила больше остального сайта. Очистил вкладку — база сжалась в несколько раз.