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

Блокирование спама комментариев без использования captcha

Каковы некоторые не-captcha методы для блокировки спама в моих комментариях?

4b9b3361

Ответ 1

По моему опыту, в настоящее время наиболее эффективными методами являются поля ввода honeypot, которые становятся невидимыми для пользователей через CSS (лучше всего использовать несколько разных методов, таких как видимость: скрытая, установка размера 0 пикселей, и абсолютное позиционирование далеко за пределами окна браузера); если они все равно заполнены, вы можете считать это спамботом.

В этом блоге описывается довольно сложный метод, который я опробовал сам (со 100% успехами до сих пор), но я подозреваю, что вы может получить тот же результат, пропуская все содержимое с именами хэшированного поля и просто добавлю несколько простых полей honeypot.

Ответ 2

1) Добавление связанной с сеансом информации в форму Пример:

<input type="hidden" name="sh" value="<?php echo dechex(crc32(session_id())); ?>" />

то при обратной передаче проверьте, действителен ли сеанс.

2) Только для Javascript. Используйте Javascript-инъекцию при представлении. Пример:

<input type="hidden" id="txtKey" name="key" value="" />
<input type="submit" value="Go" onclick="document.getElementById('txtKey').value = '<?php echo dechex(crc32(session_id())) ?>';" />

3) Ограничение по времени на IP, пользователя или сеанс. это довольно просто.

4) Ранжирование имен полей:

<?php
   $fieldkey = dechex(crc32(mt_rand().dechex(crc32(time()))));
   $_SESSION['fieldkey'] = $fieldkey;
?>
<input type="text" name="name<?php echo $fieldkey; ?>" value="" />
<input type="text" name="address<?php echo $fieldkey; ?>" value="" />   

Затем вы можете проверить его на стороне сервера.

Ответ 4

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

Поместите это в свою форму:

<input type="hidden" name="hash" value="<?php echo md5($secret_key.time()).','.time(); ?>" />

Поместите это в свой php-код

$human_typing_time = 5;/** page load (1s) + submit (1s) + typing time (3s) */
$vars = explode(',', $_POST['hash']);
if(md5($secret_key.$vars[1]) != $vars[0] || time() < $var[1] + $human_typing_time){
    //bot?
    exit();
} 

В зависимости от веса формы вы можете увеличить или уменьшить $man_typing_time.

Ответ 6

Существует также Теория Хана Пота. Мне очень нравится использовать медовые горшки с другими формами спама для достижения наилучших результатов.

http://www.projecthoneypot.org/

Ответ 7

Другой распространенный подход - дать пользователю простой вопрос ( "огонь горячий или холодный?" "Что такое 2 плюс 7?" и т.д.). Это немного похоже на, но он более доступен для пользователей с нарушениями зрения с использованием программ чтения с экрана. Я думаю, что должен быть плагин WordPress, который делает это, потому что я вижу это очень часто в блогах WordPress.

Ответ 8

Sblam! - это фильтр с открытым исходным кодом, похожий на Akismet.

Он использует наивную байесовскую фильтрацию, проверяет IP-адрес отправителя и ссылки в нескольких распределенных черных списках, проверяет правильность HTTP-запросов и использует присутствие JS как подсказку (но не требование).

Ответ 9

Регулярные CAPTCHA теперь разрешают спам-бот.

Рассмотрим вместо этого "текст CAPTCHAs: логический или общеизвестный вопрос, например" Что 1 + 1? "или" Какой цвет - белый конь? Вопрос может быть даже статическим (тот же вопрос для каждой попытки).

Text Logic CAPTCHA

(Taken from http://matthewhutchinson.net/2010/4/21/actsastextcaptcha )

Я думаю, что Джефф Этвуд даже использует такую ​​проверку в своем блоге. (Исправьте меня, если я ошибаюсь)

Некоторые ресурсы:

Ответ 10

Запретить ссылки. Без ссылок спам бесполезен.

[EDIT] Как средние пути, разрешайте ссылки только на "хорошие" сайты (обычно ваши собственные). Их всего лишь несколько, поэтому вы можете либо добавить их по просьбе своих пользователей, либо оставить комментарий, пока не проверите ссылку. Когда это хорошо, добавьте его.

Через некоторое время вы можете отключить это и автоматически отклонить комментарии со ссылками и дождаться, когда пользователи будут жаловаться.

Ответ 11

Вы могли бы попытаться использовать третью сторону, например Akismet. Ключи API бесплатны для личного использования. Кроме того, The Zend Framework имеет пакет для этого.

Ответ 12

Большинство ботов просто заполняют всю форму и отправляют ее вам. Простым трюком, который работает, является создание нормального поля, которое вы обычно скрываете с помощью javascript. На стороне сервера просто проверьте, заполнено ли это поле. Если это так, значит, это спам.

Ответ 13

Поскольку многие люди уже предлагали: используйте поле ввода медового горшка. Но есть еще две вещи, которые вам нужно сделать. Сначала рандомизируйте имя/идентификатор, поле ввода которого является медовым горшком. Храните состояние полезных полей в сеансе (а также токен формы, используемый против атак CSRF). Например, у вас есть следующие поля: имя, адрес электронной почты, сообщение. В вашей форме у вас будет "токен", который является вашим токеном, "jzefkl46", который является именем этой формы, "ofdizhae" для электронной почты "45sd4s2" для сообщения и "fgdfg5qsd4" для медового банка. В сеансе пользователя вы можете иметь что-то вроде

array("forms" => array("your-token-value" => array("jzefkl46" => "name",
                                                   "ofdizhae" => "email",
                                                   "45sd4s2" => "message",
                                                   "fgdfg5qsd4" => honey"));

Вам просто нужно повторно связать его, когда получите данные своей формы.

Во-вторых, поскольку у робота есть много шансов избежать поля вашего медового горшка (25% шансов), умножьте количество горшков. С 10 или 20 из них вы добавляете трудности ботам, не имея слишком больших накладных расходов в своем html.

Ответ 14

Я сократил около 99% спама на моем сайте с помощью простого математического вопроса, подобного следующему:

Что такое 2 + 4 [TextBox]

Пользователь сможет отправить вопрос/комментарий, если они ответят "6".

Работы для меня и подобных решений работают для Джеффа Этвуда из Coding Horror!

Ответ 15

В моем блоге у меня есть своего рода компромиссный код: я использую только капчу, если сообщение содержит ссылку. Я также использую поле ввода honeypot. До сих пор это было почти на 100% эффективным. Время от времени появляется спамер, который отправляет что-то в каждую форму, которая не содержит ссылок (обычно что-то вроде "хороший сайт!" ). Я могу только предположить, что эти люди думают, что я пошлю их по электронной почте, чтобы узнать, кто они (используя адрес электронной почты, который только я вижу).

Ответ 16

вместе с использованием полей медового банка, мы можем автоматически запретить IP-адрес (который не работает для динамических IP-адресов) и особенно любые ссылки, отправленные ботами.

Ответ 17

Akismet - хорошая альтернатива, они проверяют ваши сообщения на спам и работают очень эффективно. Вам просто нужно загрузить их librabry. http://akismet.com/development/

Ответ 18

проверить некоторые плагины wp-антиспама для примеров и идей

есть много приятных антиспамов без использования captcha.

некоторые из них я бы рекомендовал: hashcash, nospamnx, антиспам типа typepad. все это с использованием разных методов, блокирующих спам, и я использую их все. hashcash + nospamnx блокирует почти все спамботы. и антиспам блокировки клавиатуры блокируют большинство человеческих типизированных спама.

они также хороши: спамкам, wp-spamfree, anti-captcha, плохое поведение, httpbl и т.д.

также с простым .htaccess, который блокирует любой бот прямой POST, который не приходит с вашего собственного сайта (проверьте референт)

или просто передайте свою систему комментариев на disqus и спать.