• Skip to main content

Lilumi - Wordpress PHP Full Stack Developer

Hide Search
You are here: Home / wordpress фішки / Хитрий і ефективний метод боротьби зі спамерами. І без КАПЧ.

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

lilumi · 27 Березня 2009 · 69 коментарів

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

  • плагіни капч (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

wordpress фішки antispam, die spam, wordpress фішки

Reader Interactions

Comments

  1. jarofed says

    27 Березня 2009 at 17:29

    Чудовий метод. Єдиний негатив, який я зараз в ньому бачу (через що й не встановлюю на своїх блогах) – це те, що при оновленні ворпресу кожного разу доведеться змінювати рядки у wp-comments-post.php. І взагалі, всі методи, які передбачають втручання у файли самого вордпресу (а не тільки його плагінів та тем) додають трішки більше геморою вебмайстру, оскільки про них слід пам”ятати при кожному оновленні.

    А будь-які різновиди капч також ненавиджу від щирої душі!

    Відповіcти
    • lilumi says

      27 Березня 2009 at 17:55

      так, це недолік звичайно. Але останнім часом я не спішу обновлювати блоги, а по друге зараз Lecactus випускає патчі, що обновлюють в вордпресі лише те, що дійсно обновилось, не чіпаючи всі файли.
      І на мою думку — геморой з втручанням в файли вордпресу, в сто раз меньший ніж геморой с модеруванням коментарів

      Відповіcти
  2. virua says

    27 Березня 2009 at 17:34

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

    Лукавиш :) В мене залишив коментар на блозі, хоча там є капча. Чому промовчав про плагін wp-spamfree? Він також фільтрує спам без залучення коментатора та й ще до цього легко активується – не треба в коді ритися. Та що я тобі кажу, ти ж мені його і показав.

    Відповіcти
    • lilumi says

      27 Березня 2009 at 17:52

      Я хотів розказати про ручний метод, яким я давно користуюсь і тішусь з того.
      А чого ж ти тоді ним (wp-spamfree) не користуєшься? Чого до сих пір капчу тримаєш.

      Лукавиш :) В мене залишив коментар на блозі, хоча там є капча.

      Ну, вважай це компліментом своєму блогу. А не було б капчі, було б більше моїх коментарів

      Відповіcти
      • virua says

        27 Березня 2009 at 17:58

        Тоді я побіг забирати капчу.

        Відповіcти
      • virua says

        27 Березня 2009 at 18:00

        До речі, я ним користуюсь. На два блоґи, які були встановлені після твоєї поради, я поставив wp-spamfree. А, от, до блоґу щочь руки не дійшли.

        Відповіcти
        • lilumi says

          27 Березня 2009 at 18:04

          ну от :) Постав wp-spamfree і на свій блог, а заодно напиши пост про його ефективність і досвід роботи з ним.

        • virua says

          27 Березня 2009 at 20:03

          Та який тут досвід. Завантажив, активував, насолоджуйся ;) І писати нема про що. Та й про методику боротьби зі спамом я вже писав (“Способи захисту сайту від …”) ще в лютому минулого року. Був там і аналог твого захисту.

  3. podarok says

    27 Березня 2009 at 17:36

    — тут був провокаційний коментар від Андрія

    Ну і так далі…. ®podarok 8))))

    Відповіcти
    • lilumi says

      27 Березня 2009 at 17:45

      Я знаю про цю твою халепу з такими коментарями, але їх створюють спамботи, від яких цей метод спрацює, а ти тут тестив ручний спам ;)

      Відповіcти
  4. virua says

    27 Березня 2009 at 17:47

    2podarok: що це було? Ти пройшов своїм/чужим ботом захист, чи коментарі додавав руками?

    Відповіcти
  5. podarok says

    27 Березня 2009 at 17:50

    Стер? Сциш? 8)
    Насправді твоя форма обходиться аналогічно до будь-якої… Просто страхуєшся від реально ламерських спам розсилок, яких стає тупо менше і менше щодня…

    Відповіcти
    • lilumi says

      27 Березня 2009 at 17:54

      не сперечатимусь, в той день, коли її начнуть обходити я застосуюю якийсь новий метод, але капчі то не буде

      Відповіcти
      • podarok says

        27 Березня 2009 at 17:57

        вже обходять… конкретно в мене було вже з 200 коментарів в черзі премодерації…
        Вбились банами доменів лінків, які були в текстах..

        Відповіcти
        • lilumi says

          27 Березня 2009 at 17:59

          то ти хочеш сказати що я щасливчик? ну хай буде цей блог, а ще є http://serial-house.ru де відвідуванність більше 1000 уніків в день, там теж тьху-тьху, живем без спаму

  6. podarok says

    27 Березня 2009 at 17:52

    Щодо того, як я додав другий коментар…
    Банальний POST запит генерується вручну, а другий – вжде автоматично, бо ID форми – відомий…
    Захисту – неіснує… Тільки унікальний ID форми, що кожного разщу інший (Капча)
    І нікуда ат нєво недецца

    Відповіcти
    • lilumi says

      27 Березня 2009 at 17:58

      егеж. тому я й кажу, що потрібно дати формі коментування своє ім’я, навряд чи спамерам буде вигідно робити базу блогів з таким захистом і з їхніми полями коментування.
      А якщо до цього підключити OpenID плагін, то взагалі спамерам можна помахати ручкою.

      Відповіcти
  7. podarok says

    27 Березня 2009 at 18:04

    OpenID 8)))
    Навіть не так… Ось так 8))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))

    Форму, навіть приховану, можна також сканувати і реально спамити… Автоматом… Якщо зацікавить – напишу скрипт, який таке буде робити за долі секунд… Хоча толку то… Скрипти вже в неті давно валяються…

    Відповіcти
    • lilumi says

      27 Березня 2009 at 18:14

      а що спамити ти будеш? в коді дві форми і якщо постити одночасно в обидві то викличеться wp_die ;) а як ти визначиш яка з форм для користувача, а котра для спаму? якщо використаєш !comment то я додам ще одну фальшиву форму і що тоді? Аналізуватимеш css підключений через @import? :) Так то!

      Відповіcти
      • Lordie says

        27 Березня 2009 at 18:50

        Щось не смалиш – а що, відправити по черзі в обидві – нині вже напрочуд геніально? парсером робиться елементарно

        Відповіcти
        • lilumi says

          27 Березня 2009 at 18:58

          ну як показує практика, ніхто поки що такого не зробив. Якщо зроблять то підключу плагін wp-spam-free

        • lilumi says

          27 Березня 2009 at 19:03

          слухай, а чого це в тебе на блозі стільки спам коментарів? http://www.lordproteus.org.ua/#p=174 тільки не кажи що ти їх не бачив

        • Lordie says

          27 Березня 2009 at 19:16

          Оновитись забуваю :) За новим алгоритмом спаму поки не зустрічав (це не заклик до пробиву – все одно врешті-решт відіб’ю ;))

  8. podarok says

    27 Березня 2009 at 18:08

    А взагалі цікаву ідею мені підкинув для нової теми в розділ antitop та спам
    Як обійти захист унікальної форми коментарів для вордпреса.

    Відповіcти
    • lilumi says

      27 Березня 2009 at 18:25

      Контрольний вистріл проти автоматичного спаму : http://habrahabr.ru/blogs/wordpress/44350/#comment_1119392
      як ти там писав: 8))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))

      Відповіcти
    • lilumi says

      28 Березня 2009 at 10:49

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

      Відповіcти
      • podarok says

        28 Березня 2009 at 11:46

        Якщо не полінюсь – спробую 8)))
        Якраз цей коментар – перехоплення метода POST

        Відповіcти
  9. mekal says

    28 Березня 2009 at 04:21

    “кумедні рішення — постав галочку «я не робот» чи «нажми на прямокутник», навіть пробувати не хочу, бо знаю як це обходиться”

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

    Відповіcти
    • lilumi says

      28 Березня 2009 at 11:01

      потому что подставляя в url переменную dcaptcha_sess=1 мы обходим эту капчу на тех блогах где она есть, а на остальных этот параметр игнорируется.

      Відповіcти
      • mekal says

        28 Березня 2009 at 13:38

        Ух ты) Не знал, жаль что боты так легко обходят, а нам вводить приходиться :)

        Відповіcти
        • mekal says

          28 Березня 2009 at 13:43

          Кстати, к слову, я поставил систему ИнтенсДебат http://intensedebate.com вместо стандартного комментирования. Она подгружается с джавы, а значит автоботы автоматически пролетают. Спама уже давно не видел, только ручной иногда проскальзывает, но от него лекарства всё-равно нет. Из минусов знаю, что не смогут комментировать те, у кого джава отключена, но разве такие есть?
          А плюсов там много, древовидные комментарии, людям достаточно один раз зарегистрироваться и без проблем можно комментировать на многих блогах с этой системой, видеокомментарии, опросы прямо в комментариях.

          Что скажешь про эту систему?

        • lilumi says

          28 Березня 2009 at 13:51

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

  10. podarok says

    28 Березня 2009 at 12:11

    Сорі за спам… Просто тестував скрипт…
    Реально все робиться за пару хвилин, з яких цих пару хзвилин – це знаходження відповідного модуля для файрфокса для визначення необхідних полів HTTP request для додавання коментаря…
    А далі – банальний скрипт на тому ж пхп або перлі або або або
    Який автоматично все робить…
    МАбуть буде стаття…

    Відповіcти
  11. lilumi says

    28 Березня 2009 at 12:28

    А мені сподобалось. Давай іще позмагаємось. Спробуй на цей раз ;)
    А статтю на цю тему від тебе буде цікаов почитати. Очікуємо.

    Відповіcти
    • TestBot says

      28 Березня 2009 at 12:35

      human based comment

      Відповіcти
      • lilumi says

        28 Березня 2009 at 12:41

        Справа в тім, що через годину назва поля вже зміниться ;)

        Відповіcти
        • podarok says

          28 Березня 2009 at 12:47

          Хай змінюється… Ти ж не змінюєш верстку свого коду щогодини, ти лише змінюєш змінну, для вичислення якої лише потрібно повторно завантажити тим же скриптом сторінку і змінити назву змінної 8)))
          Згоден – воно ускладнює процес, але рівно стільки, скільки ти будеш затрачати на захист, спамер тратить на взлом.
          В результаті ти, як і більшість, хто задовбався з цим боротись – або поставиш капчу, або будеш “human-based capcha”, яка руцями буде змінювати код власного двигунця…
          Найбільший прикол в тому, що ти бачиш сторону коду PHP або HTML, а спамер же дивиться виключно на HTTP протокол і іноді звіряється з видачею HTML

        • lilumi says

          28 Березня 2009 at 12:56

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

  12. podarok says

    28 Березня 2009 at 12:48

    І ти стер корисний коментар 8) або в премодерацію впало

    Відповіcти
    • lilumi says

      28 Березня 2009 at 12:51

      цей:

      Для захисту від спаму — неіснує варіантів на 100%

      Його можна лише зменшити. І головне це розуміти.

      Даний метод, що описано в статті — забезпечує відносний захист від автоматичних тупоголових програм і користувачів.

      Але від розумного спаму — не діє.

      В ромумному спамі — Аkismet працює на спамера, алгоритм bayesian — на спамера, ІР блокування — проти власника блогу.

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

      Відповіcти
      • podarok says

        28 Березня 2009 at 12:53

        дякую…

        Відповіcти
  13. podarok says

    28 Березня 2009 at 12:53

    І наостанок щодо зміни щогодини…
    Ризикуєш втратити коментар в момент, коли користувач завантажив код, написав коментар і відіслав, а од форми – змінено 8(((…
    Тому обов’язкова організація черги таких коментарів!!!

    Відповіcти
    • lilumi says

      28 Березня 2009 at 12:59

      я зробив по методу описаному тут: http://habrahabr.ru/blogs/wordpress/44350/#comment_1119392 а там враховуються стики годин, ну а дві години ніхто не буде писати один коментар

      Відповіcти
      • Lordie says

        28 Березня 2009 at 16:16

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

        Відповіcти
        • lilumi says

          28 Березня 2009 at 16:28

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

        • Lordie says

          28 Березня 2009 at 16:40

          Тобі це подобається? Навряд. Головний принцип кодингу – нуль-втрата інформації. В жодному випадку технічне забезпечення не має права втратити потенційно корисний контент. Прошу враховувати. (ps: залучив пару консультантів LD… гадаю, до вечора щось “намутимо” :) )

        • lilumi says

          28 Березня 2009 at 16:47

          ну я зараз заберу цю фішку з пересолюванням md5-хешу id форми і верну все як було раніше, бо більше “спам-атак” від Андрія не передбачається =)

        • Lordie says

          28 Березня 2009 at 19:39

          З алгоритмом приблизно розібрались… “сіль” в тому, щоб хеші відповідали не часу а конкретним людям, повідомленням та коментарям… принаймні, від 90+% ботів має точно допомогти… наступний крок – позбавитись хоч 40% ручних спам-коментарів

  14. Lordie says

    28 Березня 2009 at 16:09

    Стільки ідей… заюзаємо.. головне – вдало скомбінувати.. :) чекайте мого ходу = ) [я також на захисті, а не зламі]

    Відповіcти
  15. podarok says

    30 Березня 2009 at 09:02

    javascript версія алгоритму взлому може просто вишибти цілі мережі блогів 8(((
    Скажімо повісивши на сторінках тих же фішкі-нєт код на пару кілобайт можна за день розіслати сотні тисяч повідомлень спаму анонімно 8(

    Відповіcти
  16. ELECTRIC says

    30 Березня 2009 at 12:42

    оТ З ТИМ ОРАНЖЕВИМ ТО БУЛА ХОЗМА, РАЗ ПРОБУВАВ ЗАЛИШИТИ КОМЕНТ – ТАК І НЕ ВДАЛОСЯ. нАВІЩО ТАКУ ЄРУНДУ СОБІ В БЛОГ СТАВИТИ – НЕВІДОМО:)))

    Відповіcти
  17. ELECTRIC says

    30 Березня 2009 at 12:42

    соррі за капслок:)))

    Відповіcти
  18. Евгений says

    31 Березня 2009 at 17:23

    <<<но она для тех, кто не прихотлив.
    В каком смысле неприхотлив?Приходится делать много ручной работы?

    Відповіcти
    • lilumi says

      31 Березня 2009 at 17:26

      для тех, кто не прихотлив к внешнему виду, ведь дизайн intense debate нельзя изменить и подогнать под общий дизайн сайта

      Відповіcти
  19. Dandr says

    1 Квітня 2009 at 23:29

    Ты бы ремарочку где-нить сделал, что теперь при использовании этого метода категорически нельзя делать автообновление вордпресса.
    ЗЫ Звиняй, хлопче: в переводчик закидывать ломает))

    Відповіcти
  20. Serjart says

    4 Квітня 2009 at 21:38

    Як на мене то краще вже плагін-капча для вордпресу. Встановив і працює. Хоча бувають певні дива, якось мені спамили постійно в один пост. Коментарів було штук 120, хоча капча була вімкнена. :D

    Відповіcти
    • lilumi says

      4 Квітня 2009 at 22:43

      я не коментую блоги з капчами і знаю багато людей, що теж притримуються такої позиції.

      Відповіcти
      • Dandr says

        8 Квітня 2009 at 20:37

        Прошу прощения, что вклиниваюсь, но таки не соглашусь с тобой. Тут зависит от того, насколько интересен мне этот человек. И потом, если установлен WP-reCAPTCHA, про который только что писал, то проще один раз зарегистрироваться и больше не видеть эту капчу вообще.
        ИМХО, конечно же.

        Відповіcти
        • lilumi says

          8 Квітня 2009 at 21:51

          ни разу не возникало желание регистрироваться на блоге.
          У меня на сайте Доктора Хауса два месяца стояла форма комментирования с помощю OpenID от лиру, она автоматом подцепляла лирушных аккаунт, позволяла вводить ник ЖЖ и поддерживала всех остальных OpenID-идентификаторов, так вот — за два месяца не появилось ни одного нового комментария, хотя у меня остались 4 страницы (pages) на которых этой формы не было, а была стандартная вордпресовская, так на тех страницах до сих пор ведутся ожесточенные споры на околохаусные темы и комментарии появлялись ежедневно.

        • Dandr says

          8 Квітня 2009 at 21:57

          Лирушные каменты – это вообще жёсткая вещь. Видел их у Альтесака – он отрубил их через два дня после установки.
          Вообще, буду иметь в виду такой нюанс.

  21. Lukom says

    21 Червня 2009 at 20:33

    Ідеального методу звісно не існує, але можна написати свою реалізацію антиспаму, а не користуватись готовими системами. Всім лінь писати бота під ще 1 вид форм, тому цей спосіб найкращий.

    Можу порекомендувати статтю на хабрі по цій темі:
    http://habrahabr.ru/blogs/webdev/50328

    Відповіcти
  22. seobalu says

    15 Жовтня 2011 at 11:34

    Cochniy post)) Spasibo

    Відповіcти
  23. Liska says

    18 Січня 2012 at 08:52

    Відмінно ! Все б так писали: )

    Відповіcти

Залишити відповідь до Serjart Скасувати відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *

Lilumi - Wordpress PHP Full Stack Developer