Остановить спам без капчи - PullRequest
       26

Остановить спам без капчи

22 голосов
/ 19 сентября 2010

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

Что я могу здесь сделать?

Ответы [ 9 ]

23 голосов
/ 19 сентября 2010

Требование Javascript для публикации достаточного количества спам-ботов, не мешая большинству пользователей.

Вы также можете использовать изящный прием:

<input type="text" id="not_human" name="name" />
<input type="text" name="actual_name" />
<style>
   #not_human { display: none }
</style>

Большинство ботов заполнят первое поле, поэтому вы можете их заблокировать.

15 голосов
/ 19 сентября 2010

Интеграция Akismet API для автоматической фильтрации сообщений ваших пользователей.

13 голосов
/ 29 мая 2013

Я объединяю несколько методов, которые пока кажутся довольно успешными:

  1. Предоставьте поле ввода с именем email и скройте его с помощью CSS display: none.Когда форма отправлена, проверьте, не заполнено ли это поле.Боты, как правило, заполняют это поддельным адресом электронной почты.

  2. Предоставьте другое скрытое поле ввода, которое содержит время загрузки страницы.Убедитесь, что время между загрузкой и отправкой страницы больше минимального времени, необходимого для заполнения формы.Я использую от 5 до 10 секунд.

  3. Затем проверьте, соответствует ли количество параметров GET ожидаемому.Если ваше действие с формами - POST, а базовый URL вашей страницы отправки - index.php?p=guestbook&sub=submit, тогда вы ожидаете 2 параметра GET.Боты пытаются добавить параметры GET, чтобы эта проверка не удалась.

  4. И, наконец, проверьте, установлен ли HTTP_USER_AGENT, какие боты иногда не устанавливаются, и что HTTP_REFERER является URLстраница вашей формы.Боты иногда просто отправляют POST на страницу отправки, в результате чего HTTP_REFERER становится чем-то другим.

Я получил большую часть информации от http://www.braemoor.co.uk/software/antispam.shtml и http://www.nogbspam.com/.

4 голосов
/ 19 сентября 2010

Если вы ищете решение .NET, Ajax Control Toolkit имеет элемент управления с именем NoBot .

NoBot - это элемент управления, который пытается обеспечить CAPTCHA-подобную защиту от ботов / спама без какого-либо вмешательства пользователя. Преимущество NoBot в том, что он полностью невидим. NoBot, вероятно, наиболее актуален для сайтов с низким трафиком, где спам в блогах / комментариях является проблемой и 100% эффективности не требуется.

NoBot использует несколько различных методов защиты от ботов:

  • Принудительное выполнение браузером клиента вычислимого вычисления JavaScript и проверка результата как части обратной передачи. (Пример: расчет может быть простым числовым или может также включать DOM для дополнительной гарантии того, что браузер задействован)
  • Обеспечение настраиваемой задержки между тем, когда форма запрашивается, и когда она может быть отправлена ​​обратно. (Пример: человек вряд ли завершит форму менее чем за две секунды)
  • Применение настраиваемого ограничения на количество допустимых запросов на IP-адрес в единицу времени. (Пример: человек вряд ли подаст одну и ту же форму более пяти раз за одну минуту)

Больше обсуждений и демонстраций в этом блоге Жака-Луи Шеро на NoBot .

<ajaxToolkit:NoBot
  ID="NoBot2"
  runat="server"
  OnGenerateChallengeAndResponse="CustomChallengeResponse"
  ResponseMinimumDelaySeconds="2"
  CutoffWindowSeconds="60"
  CutoffMaximumInstances="5" />
4 голосов
/ 19 сентября 2010

Я бы с осторожностью использовал трюки CSS или Javascript, чтобы убедиться, что пользователь - настоящий реальный человек, поскольку вы могли бы представлять проблемы с доступностью, проблемы с несколькими браузерами и т. Д. Не говоря уже о спам-ботах, которые могут быть довольно сложными, поэтому используйте симпатичныеМаленькие хитрости CSS могут даже не сработать.

Я бы посмотрел на Akismet.

Кроме того, вы можете проявить творческий подход к проверке пользовательских данных.Например, допустим, у вас есть форма регистрации, требующая адрес электронной почты и адрес пользователя.Вы можете быть довольно хардкорными в том, как вы проверяете адрес электронной почты, даже если вы убедитесь, что домен действительно настроен для получения почты, и что в этом домене есть почтовый ящик, который соответствует предоставленному.Вы также можете использовать API Карт Google, чтобы попытаться найти адрес и убедиться, что он действителен.

Чтобы продвинуться еще дальше, вы можете реализовать «жесткие» и «мягкие» ошибки проверки.Если почтовый адрес не соответствует строке проверки регулярного выражения, то это серьезный сбой.Невозможность проверить записи DNS домена, чтобы убедиться, что он принимает почту или что почтовый ящик существует, является «мягким» отказом.Когда вы сталкиваетесь с программным отказом, вы можете запросить проверку CAPTCHA.Мы надеемся, что это уменьшит количество попыток подтверждения CAPTCHA, потому что, если вы получаете достаточно активности на сайте, действительные люди должны вводить действительные данные хотя бы некоторое время!

1 голос
/ 20 февраля 2013

Я понимаю, что это довольно старый пост, однако я наткнулся на интересное решение, называемое «капч-код», которое легко реализовать и не требует JavaScript:

Предоставить скрытое текстовое поле!

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

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

Тад! Ненавязчивая блокировка спама! Вот статья:

http://www.campaignmonitor.com/blog/post/3817/stopping-spambots-with-two-simple-captcha-alternatives

0 голосов
/ 25 июля 2013

Как насчет понятного человеку вопроса, который говорит пользователю вводить первую букву значения, которое он вставил в поле имени, и последнюю букву поля фамилии или что-то вроде этого?

Или показать некоторые скрытые поля, которые заполнены JavaScript со значениями, такими как referer и так далее. Проверьте равенство этих полей с теми, которые вы сохранили в сессии ранее. Если значения пусты, у пользователя нет JavaScript. Тогда это не будет спамом. Но бот по крайней мере заполнит некоторые из них.

0 голосов
/ 18 февраля 2013

Конечно, вы должны выбрать одну вещь Honeypot или BOTCHA.

0 голосов
/ 18 марта 2011

Поскольку на 100% избежать этого крайне сложно, я рекомендую прочитать эту статью IBM , опубликованную 2 года назад под названием «Real Web 2.0: борьба с веб-спамом», где анализируются поведение посетителей и рабочие процессы управления.хорошо и кратко

Веб-спам существует во многих формах, включая:

  • Статьи со спамом и статьи о вандализме в вики
  • Спам в комментариях в блогах
  • Публикации спама на форумах, трекерах и других дискуссионных сайтах
  • Спам реферера(когда спам-сайты делают вид, что направляют пользователей на целевой сайт со списком рефералов)
  • Ложные записи пользователей в социальных сетях

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

Также связан очень интересный " ... метод hashcash для минимизации спама на вики и т. Д., В дополнение к электронной почте."

...