Главная » 2013 » Июль » 23 » DCaptcha — абсолютная защита от спама в WordPress
19:04
DCaptcha — абсолютная защита от спама в WordPress

DCaptcha — абсолютная защита от спама в WordPress


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

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

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

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

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

Удачным примером, на мой взгляд, является защита, предлагающая выполнить простейшие арифметические действия с четко изображенными цифрами и записать получившийся результат. Но еще более простой и удобной для пользователя является капча плагина DCaptcha, где нужно всего лишь поставить галочку в поле «Я не робот». Наверняка вы уже встречали такие варианты.

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

Установка

У меня в данный момент установлена бета версия DCaptcha 0.2b, которая, тем не менее, работает на сто процентов. За четыре года не было ни одного пробоя! Я даже забыл, что такое спам! Красота, но думаю, что как только данный плагин получит широкое распространение (и я, как не печально, способствую этому написанием данной статьи), то спамеры займутся им всерьез.

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

Установка этого расширения чуток отличается от стандартной. Нужно будет выполнить следующие действия:

  1. распакуйте архив с капчей dimoning.ru-captcha.rar, используя ftp-менеджер подключитесь к вашему хосту и загрузите папку dimoning.ru-captcha в папку с плагинами wp-content/plugins/
  2. войдите в админку и выберете вкладку «Плагины»- «Inactive»
  3. найдите строку с DCaptcha и активируйте его
  4. теперь нужно установить права доступа 777 (тут описано, как это сделать в Файлзиле) на папку /wp-content/plugins/dimoning.ru-captcha/num
  5. затем нужно в адресной строке браузера ввести следующий Урл http://vash_site.ru/wp-content/plugins/dimoning.ru-captcha/install.php и нажать «Enter». В результате будет сгенерирован уникальный код, позволяющий защитить капчу от взлома

После установки обязательно проверьте, работает ли капча. Для этого просто зайдите на свой блог как обычный посетитель и попробуйте оставить комментарий. Если вам захочется изменить в настойках DCaptcha надпись «Это не спам», то для этого нужно будет открыть на редактирование файл /wp-content/plugins/dimoning.ru-captcha/dimoning.ru-captcha.php в текстовом редакторе.

Найдите с помощью встроенного поиска используемого вами текстового редактора строку:

Это не спам.<br>

и внесите нужные вам изменения. Я, например, сделал надпись красного цвета. Для этого нужно будет всего лишь добавить в файл таблицы каскадных стилей CSS вашей темы оформленияwp-content/themes/название_вашей_темы_оформления/style.css следующее свойство:

#dcaptcha {
color: red;
}

Наверное, многие из вас, дочитав статью до этого места, уже успели установить и настроить это расширение.

Однако, при установленном и активированном плагине спам-комментарии в базу данных писАться не будут, но, правда, это справедливо только в том случае, если у вас отключена, так называемая, «Корзина», которая появилась в WordPress начиная с версии 2.9. При активной «Корзине» весь спам, отсекаемый этой капчей, будет благополучно падать в корзину и накапливаться там до тех пор, пока она автоматически не очистится.

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

Кстати, именно начиная с версии WordPress 2.9 плагин DCaptcha перестал отсекать спам, что для меня явилось очень большой и неприятной неожиданностью. В какой-то момент я неосмотрительно обновился до версии 2.92 и обнаружил, что стали появляться в большом количестве гадости, от которых я уже успел отвыкнуть.

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

Борьба со спамом в Вордпресс с помощью файла htaccess


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

«htaccess» предназначен для, так называемого, децентрализованного управления веб сервером Apache. Дело в том, что в 99 процентах случаев ваш проект будет размещен на хостинге под управлением сервера Apache. Возможности этого сервера всеми хорошо изучены и к тому же он бесплатен. Так вот, для того, чтобы вебмастер (вы), не имеющий доступа к рычагам управления Apache, тем не менее имел возможность управлять некоторыми аспектами работы сервера и был придуман этот файл.

Все директивы (команды), прописываемые в "htaccess, будут применены только к содержимому той директории (папки), в которой находится данный файл. Следовательно, если вы создадите в корневой папке своего хоста «.htaccess», то сможете давать команды серверу Apache, которые будут применены ко всему вашему сайту. Этот файл можно будет создать так же и в любых других директориях движка и, например, запаролить через него доступ к этим каталогам.

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

Если файла такого в коневой папке WordPress вы не увидите, то возможно, что его там и нет, но сначала вам нужно будет в этом убедиться. Для работы с сайтом по FTP я использую (да и вам тоже советую) замечательную программу FileZilla (см. ссылку выше). После подключения к своему хосту по FTP откройте корневую папку (обычно она называется либо PUBLIC_HTML, либо HTDOCS ) и проверьте наличие в ней файла «htaccess».

Если он там будет, то просто откройте его на редактирование, а если вы такого файла в корневой папке не найдете, то попробуйте в программе FileZilla выбрать из верхнего меню «Сервер» — «Принудительно отображать скрытые файлы». Если и после этого искомого объекта в корне вы не найдете, то создайте у себя на компьютере пустой текстовый файл, назовите его как-нибудь и скопируйте на сервер хостинга. После чего переименуйте его в «htaccess».

Существует два способа блокировки спам-сообщений в htaccess. Я использовал такой код:

<Limit GET POST PUT>
order allow,deny
allow from all
deny from 109.74.85.150
deny from 124.162.118.179
deny from 124.238.242.103
deny from 124.238.242.36
deny from 143.248.3.35
</LIMIT>

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

Минусы такого способа защиты, наверное, очевидны. Во-первых, вам придется совершить очень большое количество операций копирования IP адресов спамеров из админки в приведенный выше код файла «htaccess». Во-вторых, спамеры тоже не лыком шиты и активно используют прокси сервера, что существенно увеличивает список адресов, которые вам нужно будет добавить черный список.

Я ухитрился вручную насобирать более 400 IP адресов спамеров. Что мне это в результате дало? Поток спама уменьшился с сотен до десятков. Уже существенно, но очень уж трудозатратно и утомительно. Не намного лучше, чем вручную перелапачивать тоны хлама.

Второй способ блокирования спамеров заключается в добавление в «htaccess» содержимого этого файла с директивами, позволяющими фильтровать спам по ряду признаков. Сам я этот способ не пробовал, ибо сумел таки заставить работать мой любимый плагин DCaptcha под Вордпресс 2.92, о чем сейчас вам и расскажу.

DCaptcha работает на современных версиях WordPress


Для того, чтобы заставить DCaptcha корректно работать на современных версиях WP, как оказалось много не надо. Просто подключитесь по FTP с серверу хостинга, где у вас размещены файлы вашего блога, и откройте на редактирование файл Dimoning.ru-captcha:

/wp-content/plugins/dimoning.ru-captcha/dimoning.ru-captcha.php

Найдите в нем строку:

wp_set_comment_status ($id, 'delete');

и замените в ней «delete» на «trash», чтобы в результате получилось так:

wp_set_comment_status ($id, 'trash');

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

Начнем, пожалуй, со второй части вопроса. Порезанные сообщения, при тех настройках, что мы задали чуть выше, попадут либо в разряд «Спам» (в случае замены «delete» на «spam»), либо в разряд «Корзина» (в случае замены «delete» на «trash»).

Т.е. получается, что спам все равно записываться в базу данных WordPress, но просто с пометкой. Легче ли нам станет от этого или нет? С одной стороны, конечно же, легче. Ведь мы теперь смело сможем, зайдя в админку, очистить все содержимое корзины или спама, не боясь удалить сообщения от реальных читателей. Однако, весь этот хлам будет создавать дополнительную и ненужную нагрузку на сервер хостинга.

Даже если вы отключите корзину в Вордпрессе (о том, как это сделать можно прочитать в конце статьи), то все равно сообщения спаммеров все равно будут в нее падать (хотя, ее как бы и нет). Это легко будет проверить, включив выключенную раннее корзину (вы увидите в ней кучу всего, что порезано плагином DCaptcha).

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

Давайте, кстати, разберемся, почему не работает оригинальный код DCaptcha, который был в нем по умолчанию:

wp_set_comment_status ($id, 'delete');

Если мы обратимся к кодексу WordPress, то увидим, что для этой функции WP_SET_COMMENT_STATUS в новых версиях (начиная с версии 2.92) уже нет такого значения «delete». На данный момент можно использовать только значения: 'hold', 'approve', 'spam', or 'trash'.

Т.е. удалить порезанные плагином сообщения с помощью функции WP_SET_COMMENT_STATUS мы уже не сможем, как это можно было сделать с помощью выбора значения 'delete' в старых версиях WP.

В версиях движка, начиная с 2.92, мы можем с помощью функции WP_SET_COMMENT_STATUS только переместить мусорные сообщения в корзину (выбрав значение 'trash'), либо пометить их как спам (выбрав значение 'spam').

Для удаления порезанных спам-комментариев нам явно нужно будет использовать другую функцию, которая описана на этой странице кодекса. Это функция называется WP_DELETE_COMMENT. Поэтому в файле:

/wp-content/plugins/dimoning.ru-captcha/dimoning.ru-captcha.php

замените строку:

wp_set_comment_status ($id, 'delete');

на строку

wp_delete_comment ($id);

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

Как отключить корзину в WordPress

Мне это показалось неприемлемым, ибо главной задачей использования спаморезки являлось не только избавление от мусора, но и снижение нагрузки WordPress на сервер хостинга, которая создавалась потоком этого мусора. Поэтому я решил вообще отключить корзину, ибо ее функции мною все равно были не востребованы. Из админки отключить ее не получится, для этого потребуется внести изменения в конфигурационный файл под названием WP-CONFIG.PHP.

Найти его вы сможете в корне удаленного хоста, подключившись к северу вашего хостинга по FTP. Откройте файл WP-CONFIG.PHP на редактирование и добавьте в него строчку кода:

define('EMPTY_TRASH_DAYS', 0);

Если вы по каким-либо причинам не захотите отключать корзину в Вордпресс на совсем, а только захотите уменьшить время хранения в ней записей, то вставьте в WP-CONFIG.PHP следующую строчку кода:

define('EMPTY_TRASH_DAYS', 3);

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


источник http://ktonanovenkogo.ru/wordpress/plagini_wordpress/plagin-dcaptcha-zashhita-kommentariev-ot-spama-dobavlenie-ikonki-gravatar.htm

Категория: Для сайтов | Просмотров: 1353 | Добавил: Лаврентий5932 | Рейтинг: 0.0/0
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]