За последние 24 часа нас посетили 18453 программиста и 1641 робот. Сейчас ищут 1706 программистов ...

Антиспам. Что если банить тех, кто отослал форму по сабмиту?

Тема в разделе "Решения, алгоритмы", создана пользователем vkurlyan, 12 ноя 2011.

  1. vkurlyan

    vkurlyan Активный пользователь

    С нами с:
    11 ноя 2011
    Сообщения:
    7
    Симпатии:
    0
    Антиспам в комментариях. Что если банить тех, кто отослал форму по сабмиту? То есть роботов. А для людей выводить не кнопку а ссылку "отправить", и к ней привязать скрипт, который будет отсылать какую-то хеш-сумму.
    Придётся запретить отправку комментария по энтеру.

    Только я не знаю алгоритма отправки спам-комментов. Всё сработает?
     
  2. krow7

    krow7 Активный пользователь

    С нами с:
    12 авг 2009
    Сообщения:
    398
    Симпатии:
    0
    Адрес:
    из Азии
    а если капчу? ;d
     
  3. vkurlyan

    vkurlyan Активный пользователь

    С нами с:
    11 ноя 2011
    Сообщения:
    7
    Симпатии:
    0
    Действительно. Зачем избавляться от капчи. Её все так любят вводить)
     
  4. Vladson

    Vladson Старожил

    С нами с:
    4 фев 2006
    Сообщения:
    4.040
    Симпатии:
    26
    Адрес:
    Estonia, Tallinn
    vkurlyan
    Идея сама по себе отличная, но иногда будет "промахиваться" если сделать её стандартными путями через JS (есть люди которые отключают JS)

    Я думаю стоит попробовать, только не банить всех подряд, а просто подозрительнее на них смотреть (т.е отмечать как либо эти посты, чтоб потом "модератор" смотрел внимательно и уже решал)
     
  5. vkurlyan

    vkurlyan Активный пользователь

    С нами с:
    11 ноя 2011
    Сообщения:
    7
    Симпатии:
    0
    По идее, люди, у которых не включён javascript вообще не смогут отсылать комменты. Для них нужно будет сделать надпись "Для того, чтоб оставить комментарий включить js в настройках своего браузера".

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

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    Не надо банить. Надо выводить показывать то же самое, что как будто комментарий добавлен. Тогда чувак который будет писать бота, сломает себе мозг.
     
  7. turrel

    turrel Активный пользователь

    С нами с:
    12 июн 2011
    Сообщения:
    65
    Симпатии:
    0
    Друзья, все решается намного проще.
    В 95% случаях достаточно сделать дополнительное поле textarea, которое потом через css сделать невидимым.
    Боты такое поле заполнят, люди - нет. Что делать дальше, думаю, догадываетесь.

    Я использую еще несколько приемов, чтобы отсеять ботов, но для подавляющего большинства случаев это подойдет. И никакой капчи.
     
  8. vkurlyan

    vkurlyan Активный пользователь

    С нами с:
    11 ноя 2011
    Сообщения:
    7
    Симпатии:
    0
    Спасибо. Замечательное решение
     
  9. Vladson

    Vladson Старожил

    С нами с:
    4 фев 2006
    Сообщения:
    4.040
    Симпатии:
    26
    Адрес:
    Estonia, Tallinn
    Сюрприз, твоё решение было придумано ещё в 2004-м во времена рнрВВ 2.0.6 (был мод который банит тех кто заполняет поле "сайт" которое при регистрации пряталось через CSS) и боты давно уже научились его обходить
     
  10. vkurlyan

    vkurlyan Активный пользователь

    С нами с:
    11 ноя 2011
    Сообщения:
    7
    Симпатии:
    0
    ок, вопрос. Каким способом они научились обходить эту фичу? Всегда можно обойти и сам обход
     
  11. Михаил

    Михаил Активный пользователь

    С нами с:
    12 июл 2009
    Сообщения:
    545
    Симпатии:
    0
    Адрес:
    Bielarus
    посмотреть самому на страницу и увидеть, что нету поля, если нету, то и бот его не заполняет.
     
  12. turrel

    turrel Активный пользователь

    С нами с:
    12 июн 2011
    Сообщения:
    65
    Симпатии:
    0
    Обойти эту фичу для phpBB просто, если бот написан с учетом того мода. Бот просто знал заранее, что если есть поле с таким-то названием, значит, его заполнять не нужно.
    Для частного случая обойти такую защиту сильно сложнее, ведь бот заочно не знает, какое поле заполнять не нужно. Особенно если скрытое поле имеет имя типа "commentary" или "user_text".
    Чтобы пробить такой антиспам нужно писать бота под конкретный сайт. Вряд ли кто-то будет этим заниматься, если вы конечно не претендуете на лавры рамблера и мэйл ру.

    У меня есть множество мыслей, как можно улучшить защиту. Например, выводить несколько полей (3 заполняемых, 3 незаполняемых) с именем например "var[]", запоминать порядок их выведения и брать данные с учетом этого порядка. Тогда никакой бот не сможет по имени определить, какие поля заполнять не надо.
    Еще у многих (не говорю за всех, но у многих) ботов screen resolution = 1*1 и/или отключен Javascript. Что делать, думаю, понятно.

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