Подтвердить что ты не робот

Как предотвратить спам без CAPTCHA или централизованно управляемой системы (например, akismet)

Кто-нибудь смог успешно предотвратить спам на своем сайте, не возлагая бремя на вашего посетителя (например, CAPTCHA) и не используя централизованную систему отчетности о спаме (например, Akismet)

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

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

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

Отказ

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

4b9b3361

Ответ 1

В основном я использую один трюк на своем сайте для предотвращения спама, и он отлично работает (по крайней мере, пока программисты-спамботы не прочитают этот пост;)).

Код выглядит следующим образом:

В script, который создает сайт, содержащий форму, я реализовал:

$_SESSION['lastSiteId'] = 'something Unique';
$_SESSION['lastSiteRequest'] = time();

script, содержащий логику для записи комментариев в базу данных, содержит следующее:

if($_SESSION['lastSiteId'] == 'something Unique' 
   && $_SESSION['lastSiteRequest'] + 5 < time()){

    insertComment();
}else{
    echo "Please read the article before posting a comment";
}

Помните, что это псевдокод, чтобы дать вам эту идею. Вы должны все это реализовать в конце...;)

Все, что он делает, это проверка того, прошло ли более 5 секунд между изменением формы и отправкой запроса POST.

Будьте предупреждены, что инженеры-спамботы не спят. Ставки заключаются в том, что спам-боты могут подождать несколько секунд, прежде чем отправлять нежелательный ввод, если программист хочет этого. Вопрос: сколько сообщений спама можно отправить, если Спамеру придется ждать 5 секунд между запросами? Смотрите, может быть, это окончательное решение для предотвращения спама.

Объединяя тесты времени с javascript-тестами (если это возможно и нужно) плюс готовые/незаполненные скрытые полевые трюки, вы должны спастись от спама через несколько лет.

Ответ 2

Honey Pot captcha (статья Фила Хаака). Используется ли обычный способ делать то, что вы ищете. Это не безупречно, но что на самом деле?

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

Ответ 3

Если бы было окончательное решение, вообще не было бы необходимости в CAPTCHA. Однако, если размер вашего сайта недостаточно велик, чтобы заставить кого-то вручную искать способ взломать его, безопасность через неясность может быть лучшим способом. Например, ссылка, которую вы указали выше, или так же просто, как добавление ввода, называемого "City_2", и его скрытие. Если поле ввода заполнено, скорее всего, у вас есть спамер, поскольку они автоматически заполняют каждое поле - просто сбрасывайте данные и двигайтесь вместе... Только мои 2 цента.

Ответ 4

Избавьтесь от 99% спама, см. это - http://wordpress-plugins.feifei.us/hashcash/

Очевидно, что он предотвращает автоматический спам, использует его вместе с Akismet или чем-то еще и получает 100% -ную защиту.

Обновление: как работает HashCash? Спам ничего не стоит (его бесплатные ботнеты), поэтому он работает. Поэтому идея состоит в том, что если этот процесс может быть сделан (ЦП) дорогим, то массовое рассылку/обмен сообщениями не будет работать. Более подробно здесь - http://en.wikipedia.org/wiki/Hashcash

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

Ответ 5

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

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

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

Ответ 6

Это - очень хорошее рабочее решение, я использую его в своих проектах.

Стоит попробовать...

Ответ 7

Я использую Akismet, который действительно очень похож на фильтр спама по электронной почте, но довольно мощный, поскольку он непрерывно строит байесовский профиль с комбинированными спамами на каждом сайте с использованием услуги (около 18 миллионов комментариев в день). Их веб-сервис чрезвычайно прост и очень быстрый - просто отправил комментарий по проводу, и они отправят ответ "спам" или "не спам". Существуют существующие библиотеки Akismet для почти каждой платформы.

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

Ответ 8

Общий комментарий о любой системе защиты от спама: ничего не выйдет на 100%. Если ваш сайт достаточно большой или достаточно полезен, чтобы спамер решил обратить особое внимание на его нарушение, они, вероятно, найдут способ. Но, как правило, они говорят о домашней безопасности: Конечно, квалифицированный профессиональный вор может победить любую систему сигнализации, которую средний владелец дома может себе позволить. Но вы будете избегать неуклюжих любителей, и если вы сделаете это достаточно трудным для профессионала, вы увеличите риск для него, что к тому времени, когда он сломает его, вы вернетесь домой или соседка увидит его и вызовет полиция. Когда я работал в армии, мы регулярно говорили о балансе между безопасностью и не позволяли законным пользователям выполнять свою работу. Цель в армии - не какая-то гипотетическая "абсолютная безопасность", а скорее нечто достаточно хорошее, чтобы снизить риск до "приемлемых уровней" в соответствии с минимальными неудобствами для уполномоченных людей. Очевидно, что то, что является "приемлемым", зависит от того, что вы защищаете: я, конечно, надеюсь, что люди, которые защищали ядерные боеголовки, настаивали на более высоком уровне безопасности, чем мы применяли для радиолокационных систем. Люди в районах, где подозревались нападения, как и базы на Ближнем Востоке, имели более высокую безопасность, чем в базах из Средней Америки. Etc.

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

Ответ 9

В вашей форме (комментарии или контактная форма) вы должны добавить скрытый ввод

<input type="text" id="hidden_input" name="hidden_input" style="display:none;"/>

и напишите немного php, чтобы проверить, заполнен ли этот ввод, поэтому с выбором "if else" вы можете управлять

if($_POST['hidden_input'] != ""){
    echo('<p>You are a spambot!!!</p>');    
}

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

Ответ 10

Задайте пользователям простую, случайную математическую задачу. Если они решат это, они увидят кнопку отправки. Иначе они этого не делают. Это работает и на статических сайтах.

Это проблемная группа ввода

<div class="input-group">
  <input type="text" value="" id="testInput" class="form-control">
  <span class="input-group-btn">
  <button class="btn btn-default" type="button" id="mathTest">Go!</button>
</span>
</div>

Вот скрипт, который генерирует и проверяет проблему.

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js" type="text/javascript"></script>
<script type="text/javascript" src="https://ajax.microsoft.com/ajax/jquery.validate/1.7/jquery.validate.js"></script>

< script > jQuery(function($) {
    $("#wj-form").validate();
    var rnuma = Math.floor(Math.random() * 11);
    var rnumb = Math.floor(Math.random() * 11);
    var sum = rnuma + rnumb;
    $("#rnuma").text(rnuma);
    $("#rnumb").text(rnumb);
    $("#mathTest").click(function() {
        if (sum == $("#testInput").val()) {
            $("#wj-form").append('<div class="form-group"><input type="submit" value="Send Message" class="btn btn-primary"></div>');
        } else {
            alert('Sorry, please try again.');
        }
    });
}); < /script>

Приведенный выше скрипт делает именно это. Убедитесь, что вы не поместили кнопку отправки в форму. Это должно быть добавлено только тогда, когда проблема решена. Я реализовал это здесь. Убедитесь, что вы используете правильный id формы, указанный в скрипте.

Есть одно предостережение, хотя. Трюк не сработает, если у пользователя не запущен JavaScript в его браузере.