Переход к предыдущей публикации Продолжаем бороться с хотлинками в Wordpress | 2 часть mbmon - контроль температуры “железа” под FreeBSD Переход к следущей публикации

Защищаем wp-comments-post.php с помощью Simple Captcha. Akismet отдыхает

Пятница, 3 апреля, 2009 03:39:23 EEST

Исправления от 21 апреля, 2009 01:08:33

Немного предистории

Защищаем wp-comments-post.php с помощью Simple Captcha. Akismet отдыхает Еще до того как этот блог был обновлен до версии Wordpress 2.7, для защиты от спама в форму комментариев я использовал очень хороший плагин - Trencaspammers от Coffelius’а. Но, к сожалению, автор его по всей видимости забросил и больше не поддерживает и с WP 2.7.x Trencaspammers несовместим. Плагин был не очень популярным, возможно потому что его установка требовала вмешательства в основные файлы движка, а именно, в wp-comments.php и в wp-comments-post.php. Это было не очень удобно, так как после каждого апгрейда WP до новой версии, нужно было не забыть вновь отредактировать эти файлы под плагин, иначе никто не смог бы оставить коммментарии в блоге.

С Trencaspammers я распрощался, когда обновился до версии WP 2.7 потому что в новую систему, которая поддерживала теперь вывод древовидных и постраничных обсуждений, корректно “вклеить” код Trencaspammers у меня не получилось.

С переходом на WP 2.7 со спамом в комментах я заставил сражаться всем известный Akismet. Он действительно достаточно хорошо справлялся со своей задачей, но не до конца, как бы хотелось.

Каждый день я наблюдал как в спам падало по 150-180 говнокомментов. По началу я просматривал их все перед тем как нажать на кнопочку “Удалить весь спам“, но потом мне это порядком надоело. И в конце концов весь спам я начал удалять неглядя.

А однажды мне в обратную связь пришло письмо от одного посетителя, который сообщил, что его комменты к одной из статей не появляются в ленте. Я проверил нападавший “Спам” и нашел там то что нужно было… Потом такие ситуации стали возникать с завидной периодичностью. И хоть процент ложных срабатываний Акисмета у меня был достаточно низок - около 3% - это все равно было не нормально. Последняя капля терпения иссякла вчера, когда в этой публикации от четырех человек поздравительные реплики были расценены Akismet’ом как спамерские.

Я открыл Google и приступил к поиску альтернативы Trencaspammers. Поиски очень скоро увенчались успехом.

Представляю Вашему вниманию плагин Simple Captcha. Автор плагина Zоrex. Что делает этот маленький, 20-ти килобайтный PHP скрипт. Он добавляет перед полем <textarea> формы комментариев еще одно поле, вроде тех, куда следует ввести имя, e-mail. В это поле комментирующий должен ввести шестизначное число с картинки, которая генерится случайным образом, а ее значение имеет свой срок жизни и привязано к сессии браузера. Боты теперь не пройдут.

Прошло больше суток, как Akismet уничтожен. Ни одного спам-комментария! Хотя, судя по логам сервера, количество бестолковых попыток запостить очередную пачку говноссылок не уменьшается. В плане защиты от спама, Simple Captcha куда эффективнее, чем Akismet.

Немалое на мой взгляд преимущество плагина еще и в том, что картинку с защитным кодом видят только гости. Зарегистрированным пользователям “плагин” доверяет и вводить код не требует.

Simple Captcha имеет полезную и востребованную функцию обновления картинки без перезагрузки страницы. Просто нажмите на кнопку Обновить и перед Вами появится новое изображение.

Simple Captcha, в отличии от Trencaspammers, предельно прост в установке. От пользователя требуется всего лишь загрузить папку  simpleCAPTCHA (из архива) в папку wp-content/plugins/ и активировать плагин в панели управления блога. Никаких модификаций файлов Wordpress делать не прийдется, а следовательно не заморачиваться с этим вопросом при обновлении движка.

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

Для работы плагина требуется библиотека php GD, а также в браузере пользователя не должны быть отключены JavaScript. JavaScript используется для обновления картинки, для вывода Alert сообщения, в случае, если код введен неверно, либо если не введен вообще и т.п. Пользователь с отключенным JavaScript увидит соответствующее предупреждение. Также Вы увидите предупреждение, если Ваш хостинг не поддерживает php GD.

P.S.: А если еще в файл .htaccess добавить вот эти правила mod_rewrite:

# Protect wp-comments-post.php from dumb bots
<IfModule mod_rewrite.c>
   RewriteBase /
   RewriteEngine On
   RewriteCond %{REQUEST_METHOD} POST
   RewriteCond %{REQUEST_URI} .wp-comments-post.php*
   RewriteCond %{HTTP_REFERER} !.*live.daemony.org.* [OR]
   RewriteCond %{HTTP_USER_AGENT} ^$
   RewriteRule (.*) ^http://%{REMOTE_ADDR}/$ [R=301,L]
</IfModule>

то этим Вы запретите отправку данных скрипту wp-comments-post.php всем тем, кто пытается это сделать не со страницы Вашего блога. Так обычно работают спам-боты. Естественно, live.daemony.org следует заменить на свой адрес.

Похожие публикации

Комментариев 7

angry_dog 8 сентября, 2009 04:42:43 EEST .:. ID #17116 .:.

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

Daemony 28 мая, 2009 22:06:54 EEST .:. ID #11281 .:.

Ad1ce: Поставил эту капчу, у меня и с ней прорываются.

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

P.S.: Поставь еще (если не поставил) RC Link Redirector плагин, для превращения внешних ссылок во внутренние. Тогда точно пропадет охота постить комменты ради ссылки.

Ad1ce 28 мая, 2009 21:54:02 EEST .:. ID #11279 .:.

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

Volkov 10 апреля, 2009 12:46:37 EEST .:. ID #7551 .:.

ХА! :twisted: Боты-Гады отвалили. Плаг рулит! :cool: Поставил у сибя.
Спасибо.

Daemony 3 апреля, 2009 12:11:38 EEST .:. ID #7190 .:.

Многие боты научились ставить эти галочки и косят под хомосапиенса. :)
Раньше у меня тоже спама не было. Или был, но один-два коммента за день, но прошло время и…

Владимир Лапшин 3 апреля, 2009 12:07:49 EEST .:. ID #7189 .:.

А меня капчи напрягают. Ну разве что кроме той, где надо просто галочку поставить “я не робот” или человечка выбрать. :)
Но может еще придется и самому к этому придти. Пока-то спама не очень много, так несколько комментариев за день.

dkn 2 апреля, 2009 22:58:07 EEST .:. ID #7159 .:.

спасибо!!!!!
я тоже давно хочу избавится от акисмета
теперь наверное так и сделаю! O_O

Возник вопрос по этой теме, или есть что добавить? Говорите!

  1. Зарегистрированным пользователям вводить защитный код (captcha) не приходится.
  2. Загрузить свою аватарку Вы сможете, зарегистрировавшись на сервисе www.gravatar.com
Публикуя комментарий Вы подтверждаете, что ознакомились c Правилами и принимаете их!
HOMOSAPIENS ONLY! :)