Хитрий і ефективний метод боротьби зі спамерами. І без КАПЧ.

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

  • плагіни капч (captcha) — фу.
  • Акісмет — не справляється
  • Parasite Eliminator — «хорошо, но не очень». Він стоїть в мене на одному блозі + Akismet і все рівно спам проскакує (інколи на модерації затримується, а інколи й пропускає).
  • інші антиспам-плагіни — fail
  • кумедні рішення — постав галочку «я не робот» чи «нажми на прямокутник», навіть пробувати не хочу, бо знаю як це обходиться
  • відповіді на запитання — ага, один раз наткнувся на питання: «What color is orange?» я спробував і «оранжевий» і «апельсиновий» і «помаранчевий» і «orange» — ніфіга, не пускала шайнтан-машина

Я от обхожу стороною такі блоги, статтю ще можу почитати, але свій коментар лишати не збираюся.

А тепер прийшла пора розказати, чому в мене немає спамерів і для відвідувачів створенні всі умови для зручного коментування.
В мене форма коментування з «подвійним дном» — насправді в мене дві форми — в одну пишуть роботи-спамери, а друга для моїх шанованих відвідувачів.

Для цього в файлі comments.php вашої теми вордпресу знайдіть наступний рядок:

<textarea name="comment" id="comment" cols="61" rows="13" class="textarea"></textarea>

цей рядок ми замінимо на такі два рядки:

<div class="smo"><textarea name="comment" id="comment" cols="61" rows="13" class="textarea"></textarea></div>
<textarea name="real-comment" id="real-comment" cols="61" rows="13" class="textarea"></textarea>

де ви бачите, що попередню форму для коментування (textarea) ми засунемо в окремий блок, який згодом приховаємо, і створюєм ще один блок коментування для людей, в якому ім’я блоку відрізняється від стандартного імені, що присвоює вордпрес. Тут в прикладі є “real-comment“, але ви можете його змінити на щось своє, наприклад на “text-comment“. Так само як і можете змінити class=”smo” на щось інше, наприклад class=”comtext”
Тепер відкривайте style.css для вашої теми і пропишіть там цей рядок:

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

Що це значить? Це значить, що стандартну форму коментування ми приховали, таким чином, що зсунули її на -1000 пікселів на екрані, але спамбот не може цього знати, бо він не може аналізувати вміст файлу стилів і тому буде пробувати написати коментар в цю форму.
Тепер зробимо, аби люди могли спокійно залишати коментар. Для цього відкрийте файл wp-comments-post.php, що знаходиться в корені вашого вордпрес-блогу та віднайдіть такі рядки:


$comment_author       = trim(strip_tags($_POST['author']));
$comment_author_email = trim($_POST['email']);
$comment_author_url   = trim($_POST['url']);
$comment_content      = trim($_POST['comment']);

які слід замінити на:


$spam_test_field = trim($_POST['comment']);
if(!empty($spam_test_field)) wp_die('Іще один спамер попався!');
$comment_author       = trim(strip_tags($_POST['author']));
$comment_author_email = trim($_POST['email']);
$comment_author_url   = trim($_POST['url']);
$comment_content      = trim($_POST['real-comment']);

Це і все! Це звісно не вбереже вас від ручного спаму, але якщо брати до уваги що 99% спаму це спамботи, то цей спосіб можна спокійно називати панацеєю від спаму.

UPD: Андрій Поданенко вирішив поставити під сумнів цей метод і ми позмагались у винахідливості. Про що його стаття у відповідь: «І знову спам. Погляд відсутності 0% та 100%. Antitop v0.3.»

UPD2 (26.11.2010) Тепер вже не потрібно це все робити вручну, бо є вже готовий плагін Antispam Bee