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

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

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


person unreal    schedule 18.09.2010    source источник
comment
точная копия практических подходов CAPTCHA, не основанных на изображениях?, а также stackoverflow.com/q/111576/10080. Смотрите мои ответы (и другие) там.   -  person AviD    schedule 20.10.2010


Ответы (9)


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

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

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

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

person vassilis    schedule 18.09.2010
comment
Любая причина, по которой отображение устанавливается извне: ‹input type = text id = not_human name = name style = display: none /› ‹- это плохая идея? Или боты действительно обнаружат это, если он установлен в строке? - person codingjoe; 20.05.2013
comment
Встроенные стили @codingjoe - это всегда плохая идея, независимо от их использования. И да, для спам-бота было бы очень легко игнорировать поля со встроенным стилем display: none. - person GFoley83; 28.06.2013
comment
@ GFoley83 +1 точно, а не только встроенные стили. Просто для теста я поиграл с формой, из которой ежедневно получал около 50 спамовых писем. . Установка даже в style.css input[name=email]: display:none; для поля с сочным названием, такого как <input name="email" id="email" type="text"> , не помешала боту продолжать отправлять электронные письма, а после простого использования position:absolute; left:-9000px; добилась цели. Наверное (по той же причине) тоже не из лучших, но сработало. Просто поделился своим найденным. - person Roko C. Buljan; 19.04.2014
comment
Разве это не фильтрует также письма людей, которые используют автоматическое заполнение форм? - person Klaasvaak; 01.09.2014
comment
Вы можете отключить автозаполнение с помощью атрибута autocomplete = off - person David Canós; 20.01.2015
comment
он остановит обычных ботов, которые просто сканируют Интернет на предмет рассылки спама, но, если бот специально разработан для атаки на ваш сайт, это не поможет. - person Abhishek Choudhary; 21.12.2020

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

  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/.

person Henridv    schedule 29.05.2013
comment
ваш (1.) оказался плохим! Верно, что name="email" - отличная цель для спам-ботов, но display:none; не сработал. Вместо этого сработало: position: absolute; left:-9000;! Просто делюсь. - person Roko C. Buljan; 19.04.2014
comment
Поле email не будет работать с функцией автозаполнения Chrome. Может быть, назовите это name. - person timofey.com; 26.10.2019
comment
он остановит обычных ботов, которые просто сканируют Интернет на предмет рассылки спама, но, если бот специально разработан для атаки на ваш сайт, это не поможет. - person Abhishek Choudhary; 21.12.2020

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

person Mike Atlas    schedule 18.09.2010

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

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

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

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

Дополнительное обсуждение и демонстрация в этом блоге Жака-Луи Chereau на NoBot.

<ajaxToolkit:NoBot
  ID="NoBot2"
  runat="server"
  OnGenerateChallengeAndResponse="CustomChallengeResponse"
  ResponseMinimumDelaySeconds="2"
  CutoffWindowSeconds="60"
  CutoffMaximumInstances="5" />
person p.campbell    schedule 19.09.2010

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

Я бы посмотрел на Акисмет.

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

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

person Sam Day    schedule 18.09.2010
comment
Более того, некоторые спамеры в Индии и Китае используют дешевую рабочую силу, а не ботов. - person Donal Fellows; 19.09.2010

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

Создайте скрытое текстовое поле!

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

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

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

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

person Jeremy    schedule 20.02.2013
comment
Я думаю, что современные спам-боты могут определять скрытые текстовые поля. По моему опыту, добавление только дозы скрытых элементов не помогает. У меня сработало скрытие текстового поля с помощью jquery или Javascript, поскольку большинство ботов не могут отображать javascript. - person Rashod Chamikara Bandara; 19.03.2018

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

Веб-спам бывает разных форм, в том числе:

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

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

Также есть ссылка на очень интересную "... технику хеш-кеширования для минимизации спама в Вики-сайтах и ​​т. п., в дополнение к электронной почте. "

person quantme    schedule 18.03.2011

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

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

person yunzen    schedule 25.07.2013

Обязательно стоит выбрать что-то одно - Honeypot или BOTCHA.

person Mashhadi    schedule 18.02.2013
comment
Страница с причиной ссылки была удалена. - person Roko C. Buljan; 19.04.2014