Шукаємо плагіни для WordPress

364
  • DCaptcha — абсолютний захист від спаму у WordPress
  • Установка плагіна
  • Боротьба зі спамом в Вордпресс з допомогою htaccess файл
  • DCaptcha працює на сучасних версіях WordPress
  • Як вимкнути кошик WordPress
  • Сьогодні ми поговоримо про практично стовідсоткової захисту від спаму в коментарях WordPress, яка можлива за допомогою чудового і дуже простого плагіна DCaptcha. Він представляє з себе найпростішу капчу, яку тільки можна було б придумати.

    Відвідувачам вашого блогу не треба буде розгадувати будь-яких ребусів — досить буде всього лише поставити галочку в полі «Я не робот», при додаванні свого повідомлення. Спам в коментарях — це бич всіх WP блогів, незалежно від їх відвідуваності.

    Шукаємо плагіни для WordPress

    У мене в день бувало до 60-80 спамний повідомлень (всі вони без граватара). Для боротьби з ними я використовував плагін Akismet. Він безумовно корисний, але працює, однак, не бездоганно. Іноді Akismet все ж заносить в спам цілком легітимні повідомлення. Тому у мене гостро постало завдання знайти ідеальне рішення для цієї нетривіальної проблеми. Що примітно, це рішення працює в мене вже майже чотири роки і цю капчу досі не пробив ні Хрумер, ні який-небудь інший спамерский софт.

    DCaptcha — абсолютний захист від спаму у WordPress

    Але перевіряти кожен день по 60-80 рушників зі спамом в адмінці — задоволення не з самих великих. Тому багато хто, і я в тому числі, просто використовують кнопку видалити весь спам з блогу. Але разом зі спамом, таким чином, ви видаляєте і кілька реальних повідомлень, що є по суті проявом неповаги до коментатору, а цього допускати не можна.

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

    Тому я задумався над встановленням капчі, тобто спеціального плагіна WP, який дозволить залишати повідомлення тільки звичайним користувачам, але ріжучий спамерів, які в основному користуються програмним способом (хрумер і інший софт). Багато видів капч вже не є проблемою для таких програм. Однак, ще зустрічаються зручні капчі, які поки що не навчились обходити в силу їх складності, або в силу малого відсотка використання.

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

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

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

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

    Установка

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

    Тому нікому не розповідайте про це диво — будемо користуватися ним нишком. Поки що це, мабуть, ідеальна капча для WordPress.

    Установка цього розширення трохи відрізняється від стандартної. Потрібно буде виконати наступні дії:

  • розпакуйте архів з капчею dimoning.ru-captcha.rar, використовуючи ftp-менеджер підключіться до вашому хосту і завантажте папку dimoning.ru-captcha в папку з плагінами wp-content/plugins/
  • увійдіть в адмінку і виберіть вкладку «Плагіни»- «Inactive»
  • знайдіть рядок з DCaptcha і активуйте його
  • тепер потрібно встановити права доступу 777 (за посиланням описано, як це зробити в Файлзиле) на папку /wp-content/plugins/dimoning.ru-captcha/num
  • потім потрібно в адресному рядку браузера ввести наступний Урл http://vash_site.ru/wp-content/plugins/dimoning.ru-captcha/install.php і натиснути «Enter». В результаті буде створений унікальний код, який дозволяє захистити капчу від злому
  • Після установки обов’язково перевірте, чи працює капча. Для цього просто зайдіть на свій блог як звичайний відвідувач і спробуйте залишити коментар. Якщо вам захочеться змінити в настоянках DCaptcha напис «Це не спам», то для цього потрібно буде відкрити на редагування файл /wp-content/plugins/dimoning.ru-captcha/dimoning.ru-captcha.php в текстовому редакторі.

    Знайдіть за допомогою вбудованого пошуку використовуваного вами текстового редактора рядок:

    Це не спам.

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

    #dcaptcha {
    color: red;
    }

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

    Шукаємо плагіни для WordPressШукаємо плагіни для WordPress

    Однак, при встановленому та активованому плагіні спам-коментарі в базу даних писатися не будуть, але, правда, це справедливо тільки в тому випадку, якщо у вас відключена, так звана, «Кошик», яка з’явилася в 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. Я використовував такий код:

    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

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

    Шукаємо плагіни для WordPressШукаємо плагіни для WordPress

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

    Я ухитрився вручну назбирати понад 400 IP адрес спамерів. Що мені це в результаті дало? Потік спаму зменшився з сотень до десятків. Вже істотно, але дуже трудомістко і втомлює. Не набагато краще, ніж вручну перелапачивать тони мотлоху.

    Другий спосіб блокування спамерів полягає в додавання в «htaccess» IP адрес всяких редисок з директивами, що дозволяють фільтрувати спам по ряду ознак. Сам я цей спосіб не пробував, бо зумів таки змусити працювати мій улюблений плагін 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

    Як вимкнути кошик WordPress

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

    Знайти його ви зможете в корені віддаленого хоста, підключившись до північ вашого хостингу по FTP. Відкрийте файл WP-CONFIG.PHP на редагування і додайте в нього рядок коду:

    define(‘EMPTY_TRASH_DAYS’, 0);

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

    define(‘EMPTY_TRASH_DAYS’, 3);

    де замість трійки ви можете поставити потрібну вам кількість днів, протягом яких кошик буде зберігати записи до їх видалення. Але я все ж таки вирішив взагалі відмовити від кошика.

    Удачі вам! До зустрічей на сторінках блогу