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

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

В последнее время автоматический спам в WordPress многократно вырос и совсем не доставляет. Дабы не плодить кучу новых плагинов и прочих акисметов, решил я найти более адекватный способ борьбы с этим мусором. Поиски привели меня к старой статье 2009 года под названием «Нет автоматическому спаму», опубликованной на блоге WordPressPlugins.ru.

Действительно рабочий вариант. Действует весьма просто: так как боты практически все заточены под одинаковые формы комментирования на движке WordPress, то их ничего не стоит обмануть и подсунуть «левое» поле для коммента. И если бот его заполнит, то автоматом будет послан на йух. Чтобы это поле не заполнил случайно живой комментатор, от него оно будет скрыто при помощи дополнительного правила в файле стилей CSS.

Вот что необходимо сделать.

Во-первых, открыть файл wp-comments-post.php движка и заменить кусок кода, начиная с 50 строки (для версии движка 3.4.1)

$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;

Вот на это:

$spam_test_field = trim($_POST['comment']);
if(!empty($spam_test_field)) wp_die('Fuck you spammer shit!');
$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 = trim($_POST['real-comment']);

Фразу ‘Fuck you spammer shit!’ можете заменить на что-нибудь более благозвучное или наоборот матерное.

Во-вторых, открыть файл comments.php вашего шаблона, найти этот кусок кода:

<p><textarea name="comment" id="comment" cols="100%" rows="10" tabindex="5"></textarea></p>

и заменить его на это:

<div class="spammershit">
<p><textarea id="comment" name="comment" cols="50" rows="10" tabindex="4"></textarea></p>
</div>
<p><textarea name="real-comment" id="comment" cols="100%" rows="10" tabindex="5"></textarea></p>

Ну и, наконец, добавить в файле стилей CSS следующее правило:

.spammershit {position: absolute; left: -1000px;}

Я установил недавно эту фишку практически на всех своих блогах. В результате за несколько прошедших дней ни одного автоматического спам-коммента. Рекомендую! За идею спасибо Александру Самсонову (wordpressplugins.ru), Кому интересно, у автора опубликован более свежий способ защиты от автосмпама для новых версий движка: «Защита от спама в WordPress без плагинов»

UPD от 16.01.2017: В последних версиях движка изменился файл wp-comments-post.php, и там просто негде теперь вставить свой кусок кода. Как я и говорил ранее, у автора метода есть вариант для новых версий движка. Необходимый код он добавляет уже не в сам движок, а в файл functions.php шаблона. Это, конечно, правильный метод, чтобы не морочиться с каждым обновлением движка. Но у меня это дело не сработало. Возможно, из-за того, что последний его совет по правкам был написан уже год назад (январь 2016), а движок с тех пор обновлялся еще несколько раз, и правки в файле functions.php шаблона уже не срабатывают.

Чтобы не париться, я просто взял старый файл wp-comments-post.php с добавлением необходимого кода и добавил его в движок, удалив новый. Функциональность ничуть не изменилась, зато метод защиты снова работает. Если у вас нет такого старого файла, то можете забрать его здесь. Необходимый код там уже добавлен.

Чтобы вся эта штука не слетала при каждом обновлении движка (который теперь происходит автоматически), рекомендую в файле wp-config.php прописать строку, отключающую автоматическое обновление:

define( 'WP_AUTO_UPDATE_CORE', false );

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

20.12.2012

Автор: Игорь Квентор
www.websovet.com

Если статья оказалась для вас полезной, пожалуйста, поставьте свою оценку и поделитесь в соцсетях:

1 Star2 Stars3 Stars4 Stars5 Stars (2 votes, average: 5,00 out of 5)
Загрузка...

Похожие записи:

Подпишитесь на рассылку блога Вебсовет, чтобы первыми получать самые интересные материалы:

8 комментариев

  1. Дмитрий
    http://nashsovetik.ru/marinad-dlya-kuricy-recepty/
    10.11.2015

    Лично меня пока спамеры не достают.

  2. Игорь Квентор
    http://www.websovet.com/
    11.11.2015

    Не пронюхали еще :)

  3. Людмила
    http://zhivem-legko.ru
    16.11.2015

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

  4. Игорь Квентор
    http://www.websovet.com/
    16.11.2015

    Людмила, спасибо за отзыв! Удачи вам в борьбе со спамом! :)

  5. bytrina
    http://bytrina11.ru
    24.11.2015

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

  6. Игорь Квентор
    http://www.websovet.com/
    25.11.2015

    Что поделать, покой нам только снится :)

  7. марина

    17.03.2017

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

    Вопрос:если отключить автообновление в сonfig, wp вообще не сможет обновляться автоматичеcки или будет все как раньше: сначала спрашивать хочу ли обновить автоматом.Или уже будет только предлагать скачать новую версию?

  8. Игорь Квентор

    18.03.2017

    Пожалуйста, Марина!
    Если пропишете указанную строку в сonfig, то движок будет просто предлагать скачать новую версию.

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