Защита WordPress от спама в комментариях без плагинов или антиспам своими руками за 3 минуты

Защита WordPress от спама без плагинов Привет, народ. Кто и как защищает свой блог на WordPress от спама? Плагины? Капчи? Что-то еще?

До недавнего времени я тоже прибегал к помощи всех этих инструментов, а в частности я пользовался плагином Math Comment Spam Protection, думаю, вы все решали простейшие примеры, когда оставляли у меня комментарии. Отныне никаких примеров и прочей лабуды — я сделал простейший антиспам для комментариев сайта на WordPress своими руками ;) Кстати, решение не инновационное, если понимать принцип работы спам ботов, то оно напрашивается само собой. Решение, в принципе, универсальное и подойдет для любого движка или чего угодно, лишь бы найти нужный код.

Все началось с того, что люди периодически жаловались мне по почте и icq, что их убивает одна вещь на моем блоге — а именно, если писать комментарий (а жаловаться хочется именно тогда, когда ты написал большой шикарный коммент, а он вдруг пропал или удалился) и ввести неправильно капчу или любое другое поле, то блог выдает ошибку, а при возвращении назад текст из формы комментирования очищается, то есть все труды насмарку :(

Честно признаюсь, я так и не понял почему при нажатии в браузере «Назад» страница перезагружается, я даже специально походил по случайным блогам и оставляя комментарий специально вводил капчу неправильно, на некоторых так же как и у меня перезагружается страница, а где-то как ты не ходи взад-вперед по страницам заполненные формы сохраняют информацию. Ну да ладно, не об этом речь.

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

Третьим пришло самое гениальное решение — тупо избавиться от капчи или проверки на спам. Конечно, звучит совершенно глупо и абсолютно не гениально! Но одновременно с этими мыслями мне пришла в голову схема, благодаря которой я смогу «обломать» спам роботов.

Сейчас я опишу принцип работы спам программ, а вы сразу же поймете сами, что я хочу рассказать. Все роботы парсят страницы на предмет наличия формы <form>...</form> и инпутов <input ... /> внутри нее. Каждый инпут в свою очередь имеет уникальное имя. Но имя-то уникально для движка, по этому имени скрипт выполняет определенные действия и заносит данные формы в базу. Но движок WordPress он один единственный, а сайтов на нем много, нетрудно догадаться как сделать шаблон для спам программы, по которому бы прямым запросом методом POST для определенных полей формы отправлялась нужная информация.

Короче говоря, стандартная форма комментирования в WordPress имеет следующий вид (в разных шаблонах может незначительно отличаться):

<form action="<?php echo get_option('siteurl'); ?>/wp-comments-post.php" method="post" id="commentform">
 
<?php if ( $user_ID ) : ?>
 
<p>Вы вошли как <a href="<?php echo get_option('siteurl'); ?>/wp-admin/profile.php"><?php echo $user_identity; ?></a>. <a href="<?php echo wp_logout_url(get_permalink()); ?>" title="Выйти из аккаунта">Выйти &raquo;</a></p>
 
<?php else : ?>
 
<label for="author"><small>Имя или псевдоним <?php if ($req) echo "(обязательно)"; ?></small></label>
<input type="text" name="author" id="author" value="<?php echo $comment_author; ?>" tabindex="1" <?php if ($req) echo "aria-required='true'"; ?> />
 
<label for="email"><small>E-mail (не публикуется) <?php if ($req) echo "(обязательно)"; ?></small></label>
<input type="text" name="email" id="email" value="<?php echo $comment_author_email; ?>" tabindex="2" <?php if ($req) echo "aria-required='true'"; ?> />
 
<label for="url"><small>URL персонального блога</small></label>
<input type="text" name="url" id="url" value="<?php echo $comment_author_url; ?>" tabindex="3" />
 
<?php endif; ?>
 
<textarea name="comment" id="comment" tabindex="4"></textarea>
 
<input name="submit" type="submit" id="submit" tabindex="5" value="Отправить комментарий!" /><?php comment_id_fields(); ?>
 
<?php do_action('comment_form', $post->ID); ?>
 
</form>

Здесь нас интересуют только три инпута со следующими именами: name="author", name="email", name="url".
Это то, о чем я вам говорил — спамбот находит форму, находит в ней поля с данными именами (повторяюсь, во всех WordPress они имеют именно такие имена), и отправляет свой мусор.
Догадались, что надо сделать с этими именами? Конечно — изменить!

Так что проворачиваем примерно следующее:

<label for="author"><small>Имя или псевдоним <?php if ($req) echo "(обязательно)"; ?></small></label>
<input type="text" name="bname" id="author" value="<?php echo $comment_author; ?>" tabindex="1" <?php if ($req) echo "aria-required='true'"; ?> />
 
<label for="email"><small>E-mail (не публикуется) <?php if ($req) echo "(обязательно)"; ?></small></label>
<input type="text" name="bmail" id="email" value="<?php echo $comment_author_email; ?>" tabindex="2" <?php if ($req) echo "aria-required='true'"; ?> />
 
<label for="url"><small>URL персонального блога</small></label>
<input type="text" name="bsite" id="url" value="<?php echo $comment_author_url; ?>" tabindex="3" />

Как видите, я изменил только поля name="...".

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

Заходим к себе на сервер по ftp (или ssh, кто как привык) и в корне сайта находим файл wp-comments-post.php
В этом файле в районе 37 строки видим следующее:

$comment_author       = ( isset($_POST['author']) )  ? trim(strip_tags($_POST['author'])) : null;
$comment_author_email = ( isset($_POST['email']) )   ? trim($_POST['email']) : null;
$comment_author_url   = ( isset($_POST['url']) )     ? trim($_POST['url']) : null;
$comment_content      = ( isset($_POST['comment']) ) ? trim($_POST['comment']) : null;

И делаем вот так:

$comment_author       = ( isset($_POST['bname']) )  ? trim(strip_tags($_POST['bname'])) : null;
$comment_author_email = ( isset($_POST['bmail']) )   ? trim($_POST['bmail']) : null;
$comment_author_url   = ( isset($_POST['bsite']) )     ? trim($_POST['bsite']) : null;
$comment_content      = ( isset($_POST['comment']) ) ? trim($_POST['comment']) : null;

Теперь наш движок счастлив не меньше нас, он научился понимать и принимать данные из полей формы с новыми именами!

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

Вот такие дела, ребята! Я считаю, что это крайне полезная информация, да и работоспособность проверена на себе — спама нет!


PS Кстати, я однажды уже описывал один простейший способ защиты от спама блога на WordPress без плагинов во второй части сборника полезных хаков для комментариев WordPress, см. пункт 7. Там защита основывалась на проверке реферера, но с тех пор много воды утекло, и наверняка продвинутые спамботы научились собирать и отдавать правильный реферер, так что перестраховаться не помешает.

Александр «АлаичЪ» Алаев
Александр «АлаичЪ» Алаев

Вот уже 18 лет я профессионально занимаюсь созданием и продвижением сайтов и 13 лет с удовольствием пишу в любимый блог. Создал заслужившие доверие в seo-сообществе программы FastTrust и ComparseR и известный сервис для проверки траста сайтов CheckTrust.ru.

В 2014 основал веб-студию «АлаичЪ и Ко» в Краснодаре: 1 место в рейтинге агентств интернет-маркетинга (Рейтинг Рунета), 2 место в рейтинге SEO-компаний (CMSmagazine), 12 место в рейтинге известность бренда SEO-компаний в России (SeoNews).

Выступаю на профильных конференциях (All In Top, SEO Conference, SEMPRO, Baltic Digital Days). Веду канал в telegram про seo и бизнес. SEO-специалист года 2019 и 2020 (Sape).

Ерунда и баянЪ!Зачет! Плюсую!
+12

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

30 000 руб.

Комплексный подход к решению поставленных задач: достижение топ-10 и увеличение трафика на сайт. В стоимость уже включены полный технический аудит и оптимизация сайта.

45 000 руб.

У вас недостаточно знаний и нужны ответы на вопросы?
Интересует мнение эксперта или надо проверить подрядчика?
Вы задаете вопрос — я отвечаю!

5 000 руб./час

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

70 000 руб.

Я начал запись своего обучающего курса по seo-продвижению.

В каждом видео я разбираю какую-то одну важную тему, и делаю это последовательно, в порядке, подходящем для изучения с нуля. Видео выкладываются раз в неделю – по средам. Я думаю, весь курс будет состоять из 50-70 роликов, так до конца еще далеко, а значит самое время подписаться и начать изучение вместе со мной.

В блоке слева всегда будет выводиться самое свежее видео курса. Ссылки: на мой канал, на плейлист обучения.

Комментарии: 102 Написать комментарий
  1. seoshmeo (1 комм.)

    Только при обновлении WP нужно вспомнить про это и снова поправить файл wp-comments-post.php

    Ответить
    • АлаичЪ

      Ну да, это важно. Хотя вспомнить про это можно будет легко увидев кучу спама =)

      Одна из причин по которой я не обновляю движок — слишком много переписанного кода в движке за два года, а лог изменения я не вел :(

      Ответить
      • Наталья (26 комм.)

        Кучу спама говорите? Вчера обновила WP, вечером проснулась сегодня — ни одного коммента вообще. но подруга сказала, что невозможно комменты оставить — все время пишет введите емейл и имя. Проверила сама, да имя и емейдл введены, но коммент не проходит. Через пару часмов вспомнила про этот код -думаю что может из-за смены версии WP комменты навернулись. А тут читаю что спама должно куча быть. Может обратная реакция как раз это у меня? Буду сейчас проверять файлы. Один уже проверила и убедилась, что поля, которые на серсере меняли изменились на старые. буду ссейчасм искать дальше и вспоминать какик значения я прописывала в свои поля. Не ожидала что на севрере прийдется это делть, думала из админки и сохраняла все файлы именно там. а тут такой подвох.

        Ответить
        • АлаичЪ

          Конечно, после обновления необходимо снова вносить правки, иначе все испортится, как у вас и случилось!

          Ответить
  2. skiv (2 комм.)

    Не знаю, у меня стоит плагин, который распознает включен ли яваскрипт на компе, уже года два. Спам не сыпется вообще с ним.

    Ответить
    • АлаичЪ

      А причем тут яваскрипт вообще?

      Ответить
      • Порей (1 комм.)

        При том, что у ботов яваскрипт не включен.

        Ответить
        • АлаичЪ

          Ну если в этом плане, то да, как вариант подойдет.

          Ответить
  3. Константин Бояндин (3 комм.)

    Логическое заврешение идеи — модифицировать код WordPress так, чтобы при каждой загрузке страницы с формой комментариев в соовтетствующие атрибуты имён подставлялись случайно сгенерированные строки.

    Однако и этот подход относительно легко обходится анализом содержимого страницы — можно устроить конкурс, насколько коротким будет спам-бот, который всё равно опознает имена полей.

    Ответить
    • АлаичЪ

      Согласен, можно сделать универсальный парсер, который по другим меткам будет определять нужные элементы, но это нерентабельно, так как все равно 99% блогов будут пробиваться и тем, что уже написано. Так что никто этого не будет делать.

      А генератор случайных имен полей действительно можно придумать, но опять же незачем ;)

      Ответить
  4. Andrew (4 комм.)

    Беру на заметку. В последнее время завел для себя блог на блогспоте, то блоги на вордпрессе загружены, как минимум, двумя плагинами от спама. Буду использовать этот совет, так как вордпресс и так делает не малую нагрузку на сервер, а дополнительные плагины — это всегда не есть хорошо

    Ответить
    • АлаичЪ

      Ага, попробуй, потом не забудь отписаться о положительных результатах :)

      Ответить
  5. inkvizitorr68sl (1 комм.)

    Хм. Я с год назад поставил плагин invisible captcha, с тех пор видел у себя только спам, написанный ручками. Там вставляется жабоскриптовая кнопочка отправить. Бегать ботом, понимающим жысы — накладно.

    Ответить
    • АлаичЪ

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

      Ответить
  6. Komarik (2 комм.)

    На этом принципе работает плагин antispam bee, тот поля в форме комментариев подменяет.

    Ответить
    • АлаичЪ

      Там слишком много наворотов, и вообще в данном случае совершенно незачем пользоваться плагинами. Ведь мы, в том числе, собирались немного снизить нагрузку, избавившись от лишних действий.

      Ответить
  7. Фруталити (5 комм.)

    Метод не нов (хотя и хорош), читал про него (правда, в статье про антиспам в DLE). В WP юзаю Akismet и радуюсь.

    Ответить
    • АлаичЪ

      Ага, в DLE этот метод хорошо спасает от спама.

      Ответить
    • Данил (16 комм.)

      "Метод не нов (хотя и хорош), читал про него (правда, в статье про антиспам в DLE). В WP юзаю Akismet и радуюсь."

      не подскажите, где его можно найти? АлаичЪ, помогите вы хотя бы, где можно найти?

      Ответить
      • АлаичЪ

        Что найти?

        Ответить
        • Данил (16 комм.)

          Точно такой же метод, только для кмс DLE. Фруталити писал.

          Ответить
          • Данил (16 комм.)

            Напишите пожалуйста

            Ответить
  8. Gendolf (2 комм.)

    Сказать по правде, после того как установил плагин NotCaptcha проблемы со спамом просто исчезли, так что как вариант всем советую.

    Ответить
  9. UT3Player (2 комм.)

    Константин Бояндин, зачем давать рандомные имена инпутам? И так же все работает.

    Не знаю, почему при возвращении назад затираются заполненные поля формы. Возможно, зависит от браузера. Сам, несколько раз набив шишку на таких "затираниях", привык при отправке длинного коммента нажимать Ctrl + A, Ctrl + C, чтобы он был в буфере :)

    Также, с изменением стандартных имен инпутов, не сработало автозаполнение. Это не беда, один раз только прописать поля Имя, Емайл и Сайт, и браузер их запомнит :)

    Ответить
    • АлаичЪ

      У меня уже давно выработалась привычка везде делать Ctrl + A, Ctrl + C, даже там где это не надо ;)

      Да, с изменением имен автозаполнение браузера не сработает, но один раз ввел и успокоился. А вот если автогенерацию имен сделать, то автозапоминания не будет вообще, так что это не самый лучший вариант, как оказывается на практике.

      Ответить
      • Мэй (1 комм.)

        Приветствую.

        По теме поста — у меня Akismet стоит, но пока ни одного коммента не отловил. Их просто нет :D !

        Ну и еще пара замечаний. Данные имена полей подозреваю что не только в ВП стандартны, но и вообще — на сайтах. Почему такой вывод? У меня (на "стандартных" ресурсах) при тыкании на поле выскакивают варианты его заполнения, то как я заполняла подобные поля в прошлом. У вас на сайте все приходится вбивать ручками...

        Ну и еще. По поводу CTRL-C и CTRL-V. На Огненной Лисичке можно плагин поставить "Lazarus", который сохраняет введенную инфу. Лично меня он уже не один раз спасал и не в одной написанной тысяче символов :)

        Ответить
    • Константин Бояндин (3 комм.)

      Если цель — максимально осложнить работу авторам ботов, то надо двигаться последовательно.

      Понятно, что "всё работает", но в соревновании брони и снаряда постоянной победы не бывает.

      Ответить
  10. Ruslan (1 комм.)

    Хорошо придумал, достал меня спам буржуйский какой то, похоже после прогона по ихним каталогам мой сайт им на глаза попал вот и достали по 30-40 комментов шлют в день. Испытаю этот метод, надеюсь поможет

    Ответить
    • Нина (1 комм.)

      "...достал меня спам буржуйский какой то..."

      А я-то понять никак не могу, что за комменты стали появляться на WP-блоге: на английском языке, но обязательно с одной-двумя ошибками. Значит, это тоже буржуйский спам? Вот спасибо, буду применять Ваш метод, вроде несложно.

      А на блог Ваш подпишусь, он мне понравился.

      Ответить
  11. bboss (2 комм.)

    Привет.

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

    или не сделать плагин на эту тему ?

    Ответить
    • АлаичЪ

      Как уже обсудили выше, оказалось что этот вариант не очень состоятельный, потому что в таком случае при комментировании придется имя, мыло, url вводить каждый раз заново.

      А вообще над созданием плагина какого-нибудь интересного я давно думаю ;)

      Ответить
  12. Spond (3 комм.)

    Гениально! Люблю блоги, где палят подобные полезные фишки. Скажите, ваш блог участвует в рейтинге blograte? Чтобы 2й раз не подписываться ;)

    Ответить
    • АлаичЪ

      Ну да, я там есть, как ни странно, но в категории "фото" на первой же странице, месте на 10-ом ;)

      Ответить
  13. Alex (8 комм.)

    «антиспам своими руками за 3 минуты» — это выдержка из названия практически с точностью соответствует длительности самой защиты от спама, предложенной в этом посте по сути защитой не являющейся.

    Хотя, если взглянуть на содержание некоторых комментариев, есть люди которые введены в заблуждение.

    Если владелец не вырежет ссылку или не удалит этот камент, то не в качестве рекламы, поскольку реально достал англоязычный спам за последний месяц — http://wp-starter.ru/wordpress-blog-spam-odolel.html

    Ответить
    • АлаичЪ

      Мой метод является способом срыва шаблона роботам, благодаря чему они не могут запостить свой мусор — это ли не защита?

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

      Ну разве не прелесть? ;)

      Ответить
      • Alex (8 комм.)

        Не прелесть.

        Роботу без разницы, какое имя поля вы поставите, он заполнит для метода POST вашими же значениями name.

        Ответить
        • АлаичЪ

          Да ну? А чего же они тогда так не делают? Спама то нет!

          Ответить
          • Spond (3 комм.)

            Пускай устанавливает капчи :) Нам дольше не придется выдумывать новое.

            У меня на блоге боты пробивали siкапчу и спамили каждый день по 30-40 комментов, щас все в обломе.

            Удивляют люди, которые утверждают что-то с видом эксперта, не попробовав.

            PS если блог не в категории seo, значит не подписывался.

            Ответить
  14. Amforio (2 комм.)

    Как временное решение вполне сойдет, пока не проверят поля ввода (у меня есть самописный движок, потом какой-то умник добавил его в базу по которой спамят) потом снова польются реки спама. Лучше поставить Akismet это настоящая железобетонная защита.

    Ответить
    • Alex (8 комм.)

      или до прихода бота, заточенного под WP движок, Аkismet — это хорошо,

      но иногда он не пропускает реальные каменты, в массе спама их можно запросто затереть

      Ответить
      • АлаичЪ

        Акисмет мне не нравится. А вот на счет времени, это да, постепенно начинают пробиваться спам-комменты по 1-2 штуки в сутки. Сейчас работаю над решением проблемы — очень надеюсь, что найду вариант перманентной защиты.

        Ответить
        • Amforio (2 комм.)

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

          Ответить
  15. NewUser (4 комм.)

    Для перманентной защиты, КМК, стоит запретить на блоге комментирование незарегистрированными пользователями, а форму регистрации закрыть этим же принципом (изменить названия полей. Описано тут: http://www.wordpressplugins.ru/faq/no-autoreg.html)

    Ответить
    • АлаичЪ

      Ага... Это еще хуже чем самая плохая капча — для комментирования нужно будет регистрироваться, а это совсем не айс!

      Ответить
      • NewUser (4 комм.)

        Ну, тут конечно не всё так однозначно. Каждый владелец сам для себя решает, как ему лучше.

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

        Ответить
        • Константин Бояндин (3 комм.)

          Оптимальным решением была бы "скрытая регистрация", когда после первого ввода email создавался бы нужный пользователь на блоге.

          Хочешь что-то настроить — получи пароль и меняй настройки. Если email не твой — без обид, в итоги уйдёшь в чёрный список и т.д.

          Ответить
          • NewUser (4 комм.)

            Есть замечательный плагин Loginza (http://loginza.ru/wp-plugin). C ним вообще можно комментировать, не регистрируясь, а используя свою учётку из контакта, яндекса, фейсбука и пр.

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

            Ответить
  16. Русаков Вячеслав aka Udachnik (4 комм.)

    Отличный способ!

    Я сейчас у себя использую плагин, который засчитывает комментарии только после нажатия мышью на кнопку "сказать" (т.е. спам боты тупо не показываются в админке) + ручное модерирование.

    В итоге — нет спама )))

    Ответить
  17. Spond (3 комм.)

    А у меня с одной темой этот прием не работает, хотя делаю все по инструкции. Комментирую от лица читателя, а в результате "Ошибка: пожалуйста, заполните необходимые поля (имя, e-mail)." Как думаете, в чем дело?

    Ответить
    • АлаичЪ

      Значит что-то не совпадает. Проверьте не формируется ли какой-то вывод в файле functions.php, это вполне вероятно, во многих темах видел такое.

      Ответить
  18. Dimox (19 комм.)

    Изменение исходных файлов движка — не истинный путь джедая, тем более, что имеются решения, позволяющие этого избежать. Как уже писали выше в комментах, есть плагин с подобным принципом — Antispam Bee. Давно им пользуюсь (не один год) и очень доволен.

    Ответить
    • АлаичЪ

      Возможно и не стоит править файлы, особенно с этим проблема встанет при обновлении движка. Но зато работает ;)

      PS Я дополнительно пользуюсь плагином Invisible Captcha — что ты думаешь на счет него?

      Ответить
      • Dimox (19 комм.)

        > Но зато работает

        Ну ты же сам выше написал, что периодически приходится менять значения полей, так что это не очено хорошо.

        С плагином Invisible Captcha не знаком, так что не могу ничего сказать.

        Ответить
      • вася (1 комм.)

        У меня плагин Invisible Captcha начал все комментарии определять как спам и в папку со спамом складывать, не знаешь в чём тут может быть причина?

        Ответить
  19. Матерый (1 комм.)

    Спасибо за метод. Он единственный, который не перекосил мне весь сайт вместе с админкой в придачу!

    Ответить
  20. snegovik (7 комм.)

    Спасибо! Отличный способ. А на ДЛЕ можно такое сделать ?

    Ответить
    • АлаичЪ

      Можно, я даже в сети где-то такие штуки видел именно для ДЛЕ.

      Ответить
  21. Witch_You (5 комм.)

    А я читал "урок" спамера... Он там предлагал искать по "E-mail (обязательно)" — так названо поле у всех блогов на WP (по умолчанию)

    Ответить
  22. Наталья (26 комм.)

    А то что урл сайта только для админа не есть хорошо, обычно кому приглянусь — таким обоазом на сайт приходят ;) При заполнении данной формы пришлось все вручную набирать, что тоже не есть хорошо — обычно одной буквы хватеет и все слово/адрес сам набирается (автозаполнение). Хочу себе зак применить против спама, а вот теперь сомневаюсь — может и у меня полезные функции пропадут? Мой файлик (кстати надо название в тексте указать куда лезть исправлять код) выглядит иначе вот так:

    <label for="author"><small>Имя&nbsp;<?php if ($req) echo "(обязательно)"; ?></small></label></p>

    <p><input type="text" name="email" id="email" value="<?php echo $comment_author_email; ?>" size="22" tabindex="2" />

    <label for="email"><small>E-Mail (не публикуется <?php if ($req) echo ", обязательно)"; ?></small></label></p>

    <p><input type="text" name="url" id="url" value="<?php echo $comment_author_url; ?>" size="22" tabindex="3" />

    Немного не так...

    Попробую как вы пишете только поле Name поменять чтоб случайно другое не подпортить — очень хочется хорошую "защиту" от спама без капчи и без плагина. надеюсь получиться :) При установке кодов иногда полностью слетает сайт (не загружается) — страшновато

    Ответить
  23. Наталья (26 комм.)

    Всегда затрудняюсь ГДЕ корень сайта на хостинге * ищу по полчаса. если можно для чайников — указывайте полный путь (а там где имя сайта — значит ИМЯ САЙТа пишите). Вроде ничего сложного нету, должно получиться, когда найду этот файл!

    Ответить
  24. Александр (1 комм.)

    Здравствуйте.

    Не смогли бы Вы ответить мне на один вопрос? Когда мне на блог отправляют комментарий, каждый раз выскакивает

    следующее: "Не спамьте, пожалуйста. Этот сайт защищен. Включите JavaScript в Вашем обозревателе и попробуйте еще

    раз..." , и вордпресс показывает, что это ошибка. Но комментарии попадают на блог. Если бы это были единичные случаи,

    можно было бы подумать, что это действительно спамы, но это происходит при каждом комментировании.

    Причем, когда только начали присылать комменты, несколько первых пришли хорошо. Как избавиться от этого? Возможно

    что-то с плагином?

    Заранее благодарен, с уважением, Александр Кузнецов.

    Ответить
    • АлаичЪ

      Я без понятия, что у вас за плагин стоит и почему он так работает, следовательно, и помочь вам без подробностей не смогу.

      Ответить
  25. Ольга (3 комм.)

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

    Ответить
    • Наталья (26 комм.)

      Ольга, я уже оценила. Больше месяца никакого СПАМА нет и у меня были подозрения что акисмет вообще некоторые хорошие комменты не пускал. потому что видела твитят, а комментов нет. Обычно твитить забывают ;) Я и друзьям рекомендовала всякую лабуду (плагины) посносить и поставить этот мощный код.

      Ответить
  26. victor (1 комм.)

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

    Ответить
  27. googlinka (1 комм.)

    Сегодня вечером попробую тоже поменять. Я и так снесла капчу (вначале поставила — по привычке), а потом поняла — капча — это прошлый век. Меня саму бесит, когда приходится вводить на сайтах, потом сбивается — лишние нервы. Так почему мой бложек должен быть с ней? Он у меня новый, но сейчас без капчи начал скапливаться спам... Спасибо за рассуждения и подсказки.

    Ответить
  28. Ольга (2 комм.)

    Здравствуйте. Тоже хотела избавиться от спама этим способом. Но не нашла в своей теме в zeeSynergie: Comments (comments.php) места, где нужно изменить коды.

    <?php

    // Do not delete these lines

    if (!empty ($_SERVER['SCRIPT_FILENAME']) && 'comments.php' == basename ($_SERVER['SCRIPT_FILENAME']))

    die ('Please do not load this page directly. Thanks!');

    if ( post_password_required ()) { ?>

    <p><?php _e ('Enter password to view comments.', ZEE_LANG); ?></p>

    <?php return; } ?>

    <!-- You can start editing here. -->

    <?php if ( have_comments () ) : ?>

    <div id="comments">

    <h3><?php comments_number (__ ('No comments', ZEE_LANG),__ ('One comment',ZEE_LANG),__ ('% comments',ZEE_LANG) );?></h3>

    <?php if ( get_comment_pages_count () > 1 ) : ?>

    <div class="comment_navi">

    <div class="alignleft"><?php previous_comments_link () ?></div>

    <div class="alignright"><?php next_comments_link () ?></div>

    </div>

    <div class="clear"></div>

    <?php endif; ?>

    <ol class="commentlist">

    <?php wp_list_comments ( array ('avatar_size' => 48)); ?>

    </ol>

    <?php if ( get_comment_pages_count () > 1 ) : ?>

    <div class="comment_navi">

    <div class="alignleft"><?php previous_comments_link () ?></div>

    <div class="alignright"><?php next_comments_link () ?></div>

    </div>

    <div class="clear"></div>

    <?php endif; ?>

    </div>

    <?php else : ?>

    <?php if ( ! comments_open () and !is_page () ) : ?>

    <p class="nocomments"><?php _e ('Comments are closed.', ZEE_LANG); ?></p>

    <?php endif; ?>

    <?php endif; ?>

    <?php if ( comments_open () ) : ?>

    <?php comment_form (array ('comment_notes_after' => '')); ?>

    <div class="clear"></div>

    <?php endif; ?>

    Где можно поискать?

    Ответить
    • АлаичЪ

      Скорее всего тогда надо смотреть файл comments.php на сервере, он должен лежать в корне, там же где и index.php

      Ответить
      • Ольга (2 комм.)

        Спасибо, нашла в comments.php на сервере, буду редактировать и, наконец-то, избавлюсь от спамеров.

        Акисмет не использую — барахлил, все отправлял в спам (и хорошие, и плохие комментарии). Кроме того, нагрузки и от других плагинов, которые нельзя кодом заменить, хватает.

        Ответить
  29. Елена (2 комм.)

    ОГРОМНОЕ спасибо. Просто гениальное решение. Поставила на один из своих блогов, буду смотреть, как работает.

    До вчерашнего дня у меня стояла notcaptcha, где нужно было поворачивать картинки, замечательный плагин, и все работало хорошо несколько лет, но у плагина 09.03.13 почему-то истек срок действия домена, в результате чего все мои сайты — т.е. которые на вордпрессе, и на которых использовался данный плагин, стали перебрасываться на домен регистратора этой кликчи с показом списка чужих рекламных ссылок вместо моих сайтов!!! Я была в шоке.

    Надеюсь, что это временное недоразумение у них было, но мне от этого, вообще-то, не легче. До 16:00 вместо моих сайтов открывались чужие, приятного было мало. Не говоря уже о том, что все авторы плагинов любят прописать в файлах плагина свои собственные ссылки. Теперь и этой проблемой меньше.

    Снесла плагин со всех сайтов, работоспособность сайтов восстановилась, но ТУТ ЖЕ начал сыпаться массированный спам.

    Ответить
    • Елена (2 комм.)

      Рано я радовалась, похоже:-) Все сделала, в коде сайта теперь не видно никаких следов параметров, (author, email, url), используемых спамерами, но спам-комментарии продолжают сыпаться. Возможно, этот как-то связано с последними версиями вордпресса или просто спамеры это научились обходить. Видимо, все же придется капчу какую-нибудь ставить.

      Ответить
      • АлаичЪ

        Печально это :( В таком случае могу порекомендовать плагин invisible capcha.

        Ответить
      • My-Suicide (5 комм.)

        Просто спаммеры теперь работают вручную...

        Ответить
        • Александр (1 комм.)

          Спамеров, работающих вручную вы никак не победите. А вот ботов — легко. Можно еще скриптом что-то менять. Такие комментарии часто добавляются, не влияя на счетчик посещений.

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

          Ответить
  30. My-Suicide (5 комм.)

    "ОШИБКА: пожалуйста, заполните необходимые поля (имя, e-mail)." — у меня вот такая ошибка... С чем это связано? :(

    Ответить
    • My-Suicide (5 комм.)

      Прошу прощения! Не полностью разглядел, что менять в wp-comments-post.php

      Ошибка исчезла (надеюсь и спам исчезнет)

      Ответить
  31. Виталий (4 комм.)

    Привет! Большой недостаток вашего метода в том. что приходится править файл wp-comments-post.php после каждого обновления движка. У себя на блоге я реализовал это в файле functions.php, что снимает необходимость каждый раз заморачиваться после выхода новой версии WordPress.

    Ответить
    • АлаичЪ

      Ну да, есть такое дело. Но я не обновляюсь и меня это мало волнует. А вообще, конечно, правильно использовать правки functions.php.

      Ответить
    • My-Suicide (5 комм.)

      Вы бы, хоть ссылку на Ваш метод оставили...

      Ответить
  32. Елена (1 комм.)

    Здравствуйте! У меня на блоге возникла проблемма с коментариями, при отправлении коммента выдаёт -ОШИБКА: пожалуйста, заполните необходимые поля (имя, e-mail), хотя все формы заполнены правильно и в итоге посетители моего блога не могут отправить комменты. Сама не могу понять в чём проблемма, помогите если можите, обьясните что к чему. Мой блог http://www.solnechnaja.com/

    Заранее благодарна. С Уважением, Елена.

    Ответить
    • АлаичЪ

      Видимо где-то забыли внести правки. Так бывает, когда имена полей не совпадают. Проверьте еще раз все шаги.

      Ответить
      • Денис Иванов (8 комм.)

        У меня тоже самое. Возможно менять надо не только в двух указанных местах. Но и еще где то.

        Ответить
        • Денис Иванов (8 комм.)

          Уже нашел ошибку. Сам лошарик. :)

          Ответить
  33. RomanZmeu (1 комм.)

    Спасибо. Пригодилось для моего блога

    Ответить
  34. Юрий (1 комм.)

    Я слепил шаблон в программе "Artister", и только потом заметил, что ни один плагин против спама с этим шаблоном не работает. Вот попробовал сделать, как написано в этой статье, и ничего не получилось. Все проверил-перепроверил — все сделал правильно. Но при отправке сообщения, выдает: ERROR: please fill the required fields (name, email), т. е. требует заполнения полей: "имя" и "мыла". Теперь даже не знаю, что и делать. Уже и на форум обращался, но толку нет. Шаблон менять очень не хочется, потому что не помню всех изменений, которые делал в шаблоне. Завал какой-то. Интересно, а можно с другого шаблона файл comments.php подставить или нет?

    Ответить
    • АлаичЪ

      Попробуйте плагины, которые не требуют правок шаблона или каких-то файлов, такие есть — вроде как, Акисмет из этого разряда. Всяко лучше, чем без всего!

      Ответить
  35. Максим (1 комм.)

    Описанный в статье метод у же не работает. Поставил эту защиту на WordPress и через 2 часа прилетело 64 спам комментария. Скажите ручной спам – вряд ли, 64 спамных коммента на китайском и английском языках, при том, что сайт русскоязычный. И у многих комментов однотипные email адреса, т.е. работает скрипт, а не ручной спам.

    Ответить
  36. Вера (1 комм.)

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

    Ответить
  37. Денис Иванов (8 комм.)

    У меня не заработало. Сменил имена полей, прописал в файле из корня те же имена. Все равно пишет, что не введены имя и мыло. Капец.

    Ответить
    • Денис Иванов (8 комм.)

      Нашел косяк. При переименовании поля автора в файле темы потерял одну букву.

      Ответить
      • Денис Иванов (8 комм.)

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

        Ответить
  38. Юрий (2 комм.)

    Нравится мне обходится без плагинов. Был Antispam Bee. Постоянно нужно сидеть и вычитывать, где спам где не спам. Хотя и сайт еще молодой с небольшим трафиком. Случайно наткнулся на Вашу статью. Сделал все как в статье. Посмотрим как работает. Надеюсь классно. Не хочется ставить обратно плагин.

    Спасибо!!!

    Ответить
  39. Юрий (2 комм.)

    Вот попробовал. В итоге спам проходит. Тоже самое что и с плагином Antispam Bee, разницы нету.

    Ответить
  40. Рафис (1 комм.)

    Спасибо большое за такую полезную статью. Все получилось сделать. На спам еще не проверял, но наверное если они работают по такому алгоритму, то все получится.

    Ответить
  41. Петр (1 комм.)

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

    Ответить
  42. Booknic74 (1 комм.)

    Добрый день! Скажите пожалуйста, в чем причина не выходит прочитать новые добавленые публикации!?, при преходе по статье всплывет сообщение в котором ошибка "404" :( уже как целый день эта проблема...

    Ответить
    • АлаичЪ

      Вспомните, что вы меняли, перед тем, как обнаружилась данная проблема?

      Ответить
  43. Павел (1 комм.)

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

    Благодарю автора за проделанный труд!

    Ответить
    • АлаичЪ

      Движок всегда лучше обновлять. Сам только что обновил до 4.7.1.

      Ответить
  44. Mik Foxi (1 комм.)

    Можно еще использовать antibot cloud, это универсальная защита для любых движков и сайтов на php. Даже бесплатная версия на 99% защищает от любого спама, а заодно от взлома, брута, парсинга контента. И людей меньше раздражает (люди его увидят пару сек при заходе на сайт) чем сложные капчи и разгадывания всяких ребусов.

    Ответить
    • АлаичЪ

      Но тут проблема именно в том, что "люди его увидят пару сек при заходе на сайт" — это будет касаться каждого посетителя, в то время, как комментировать хочет один из 5000 посетителей, условно... Так что сомневаюсь, что это лучше.

      Ответить