Как избавиться от спама в WordPress раз и навсегда

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

Итак, первое что я сделал – это удалил все плагины с Capcha, блокированием по черным спискам и прочую неработающую фигню. Они нам больше никогда не понадобятся, а если и понадобятся – это только при регистрации.

В 99% случаев спамеры отправляют url своих ресурсов. От этого то и будем отталкиваться. В одной из предыдущих заметок я уже рассказывал, что убрал из формы отправки комментария параметр “Сайт”. Так вот, спамеры все равно отправляют этот параметр заполненным в своем POST запросе. Этим то мы и воспользуемся. Если есть параметр ‘url’ – шлем спамера “подальше”. Также я заметил, что спамеры в качестве текста комментария используют заголовок темы, потому если коммент будет совпадать с заголовком – шлем спамера “еще дальше”.

И теперь самое главное – добавим в форму комментария свое поле, которое обязательно для заполнения. К примеру я использовал простое текстовое поле с просьбой ввести от пользователя url своего блога.

Открываем файл wp-includes/comment-template.php и ищем в нем функцию comment_form. В ней находим блок

 $fields =  array(
                'author' => '<p class="comment-form-author">' . '<label for="author">' . __( 'Name' ) . ( $req ? ' <span class="required">*</span>' : '' ) . '</label> ' .
                            '<input id="author" name="author" type="text" value="' . esc_attr( $commenter['comment_author'] ) . '" size="30"' . $aria_req . ' /></p>',
                'email'  => '<p class="comment-form-email"><label for="email">' . __( 'Email' ) . ( $req ? ' <span class="required">*</span>' : '' ) . '</label> ' .
                            '<input id="email" name="email" type="text" value="' . esc_attr(  $commenter['comment_author_email'] ) . '" size="30"' . $aria_req . ' /></p>',

В этот массив добавляем наше поле АнтиСпам.  В конечном счете оно выглядит так:

       $fields =  array(
                'author' => '<p class="comment-form-author">' . '<label for="author">' . __( 'Name' ) . ( $req ? ' <span class="required">*</span>' : '' ) . '</label> ' .
                            '<input id="author" name="author" type="text" value="' . esc_attr( $commenter['comment_author'] ) . '" size="30"' . $aria_req . ' /></p>',
                'email'  => '<p class="comment-form-email"><label for="email">' . __( 'Email' ) . ( $req ? ' <span class="required">*</span>' : '' ) . '</label> ' .
                            '<input id="email" name="email" type="text" value="' . esc_attr(  $commenter['comment_author_email'] ) . '" size="30"' . $aria_req . ' /></p>',
                'spam'  => '<p class="comment-form-spam"><label for="spam">' . __( 'Antispam: please enter voip-lab.ru' ) . ( $req ? ' <span class="required">*</span>' : '' ) . '</label> ' .
                            '<input id="spam" name="spam" type="text" value="' . esc_attr(  $commenter['comment_author_spam'] ) . '" size="30"' . $aria_req . ' /></p>');

Далее нам будет необходимо обработать новое поле spam. Для этого открываем файл wp-comments-post.php в корне движка WordPress и находим блок

} else {
        if ( get_option('comment_registration') || 'private' == $status )
                wp_die( __('Sorry, you must be logged in to post a comment.') );
}

И сразу после него добавляем наш код, котором, если пользователь не авторизован,  будет происходить проверка что он не спамер

if ( !is_user_logged_in() ) {
    if($comment_spam!='voip-lab.ru') wp_die( __('If you are not spamer go back and set text field Antispam to voip-lab.ru.') );
    if($comment_author_url!='') wp_die( __('You are fucking spamer.') );
    if($comment_content == get_the_title($post)) wp_die( __('You are fucking spamer.') );
}

Далее необходимо отключить trackback, т.к. очень много спама валится через него. Долго искать решение не пришлось. В корне сайта просто удаляем или переименовываем файл wp-trackback.php.

На этом настройка своей АнтиСпам системы закончена. Приведу немного статистики – когда я использовал капчи и другие плагины, я удалял порядка 300-400 спам сообщений в день. В моем решении мне не пришло ни одного сообщения от спамеров. Скажем им “гуд бай” =)

Рекомендуем почитать
Защищаем Wordress от перебора паролей с помощью Fail2Ban

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

Как убрать сайт из комментариев WordPress

Небольшая заметка в мемы. Открываем файл wp-includes/comment-template.php и ищем функцию comment_form. В ней находим объявление массива $fields. И удаляем элемент url, Читать дальше...

Локализация темы WordPress

После активации плагина в боковом меню консоли в меню «Инструменты» появляется пункт «Локализация». Переходим туда. Если у русифицируемой темы нет Читать дальше...

Бесплатный доступ к платным сервисам во время эпидемии коронавируса

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

Поделиться

38 комментариев к “Как избавиться от спама в WordPress раз и навсегда

  1. Right here is the right webpage for everyone who hopes to understand this topic. You understand so much its almost tough to argue with you (not that I actually would want to…HaHa). You certainly put a new spin on a topic that has been written about for many years. Great stuff, just wonderful!| а

  2. My developer is trying to convince me to move to .net from PHP. I have always disliked the idea because of the costs. But he’s tryiong none the less. I’ve been using Movable-type on a number of websites for about a year and am nervous about switching to another platform. I have heard very good things about blogengine.net. Is there a way I can transfer all my wordpress posts into it? Any help would be really appreciated!| а

  3. Hi I am so delighted I found your blog page, I really found you by error, while I was searching on Digg for something else, Nonetheless I am here now and would just like to say many thanks for a tremendous post and a all round enjoyable blog (I also love the theme/design), I don’t have time to browse it all at the moment but I have book-marked it and also included your RSS feeds, so when I have time I will be back to read a lot more, Please do keep up the great work.| а

  4. I simply want to tell you that I am new to blogging and site-building and really enjoyed this blog site. Likely I’m want to bookmark your website . You actually come with exceptional well written articles. Thanks a bunch for revealing your web-site.

Оставить ответ

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