Я хочу запретить спамерам использовать мой сайт. Но меня CAPTCHA очень раздражает. Я говорю не только о типе «введите текст», но и обо всем, что требует от пользователя тратить свое время, чтобы доказать, что он человек.
Что я могу здесь сделать?
Я хочу запретить спамерам использовать мой сайт. Но меня CAPTCHA очень раздражает. Я говорю не только о типе «введите текст», но и обо всем, что требует от пользователя тратить свое время, чтобы доказать, что он человек.
Что я могу здесь сделать?
Требование Javascript для публикации данных блокирует изрядное количество спам-ботов, не мешая большинству пользователей.
Вы также можете использовать изящный трюк:
<input type="text" id="not_human" name="name" />
<input type="text" name="actual_name" />
<style>
#not_human { display: none }
</style>
Большинство ботов заполняют первое поле, поэтому вы можете их заблокировать.
display: none
.
- person GFoley83; 28.06.2013
input[name=email]: display:none;
для поля с сочным названием, такого как <input name="email" id="email" type="text">
, не помешала боту продолжать отправлять электронные письма, а после простого использования position:absolute; left:-9000px;
добилась цели. Наверное (по той же причине) тоже не из лучших, но сработало. Просто поделился своим найденным.
- person Roko C. Buljan; 19.04.2014
Я комбинирую несколько методов, которые пока кажутся довольно удачными:
Предоставьте полю ввода имя email
и скройте его с помощью CSS display: none
. Когда форма будет отправлена, проверьте, пусто ли это поле. Боты, как правило, заполняют это поддельным адресом электронной почты.
Предоставьте еще одно скрытое поле ввода, которое содержит время загрузки страницы. Убедитесь, что время между загрузкой и отправкой страницы больше минимального времени, необходимого для заполнения формы. Я использую от 5 до 10 секунд.
Затем проверьте, соответствует ли количество параметров GET ожидаемому. Если действие вашей формы - POST, а базовый URL-адрес вашей страницы отправки - index.php?p=guestbook&sub=submit
, вы ожидаете 2 параметра GET. Боты пытаются добавить параметры GET, чтобы эта проверка не прошла.
И, наконец, проверьте, установлен ли HTTP_USER_AGENT, который иногда не устанавливается ботами, и что HTTP_REFERER является URL-адресом страницы вашей формы. Боты иногда просто отправляют POST на страницу отправки, заставляя HTTP_REFERER быть чем-то другим.
Я получил большую часть информации из http://www.braemoor.co.uk/software/antispam.shtml и http://www.nogbspam.com/.
name="email"
- отличная цель для спам-ботов, но display:none;
не сработал. Вместо этого сработало: position: absolute; left:-9000;
! Просто делюсь.
- person Roko C. Buljan; 19.04.2014
email
не будет работать с функцией автозаполнения Chrome. Может быть, назовите это name
.
- person timofey.com; 26.10.2019
Интегрируйте Akismet API, чтобы автоматически фильтровать сообщения ваших пользователей.
Если вы ищете решение .NET, в Ajax Control Toolkit есть элемент управления с именем NoBot.
NoBot - это элемент управления, который пытается обеспечить CAPTCHA-подобную защиту от ботов / спама, не требуя вмешательства пользователя. NoBot полностью невидим. NoBot, вероятно, наиболее актуален для сайтов с низким трафиком, где спам в блогах / комментариях является проблемой и не требуется 100% эффективности.
NoBot использует несколько различных методов защиты от ботов:
Дополнительное обсуждение и демонстрация в этом блоге Жака-Луи Chereau на NoBot.
<ajaxToolkit:NoBot
ID="NoBot2"
runat="server"
OnGenerateChallengeAndResponse="CustomChallengeResponse"
ResponseMinimumDelaySeconds="2"
CutoffWindowSeconds="60"
CutoffMaximumInstances="5" />
Я был бы осторожен, используя уловки CSS или Javascript, чтобы убедиться, что пользователь действительно настоящий человек, так как вы можете создавать проблемы с доступностью, кроссбраузерностью и т. Д. Не говоря уже о том, что спам-боты могут быть довольно сложными, поэтому используйте симпатичный маленький дисплей CSS. уловки могут даже не сработать.
Я бы посмотрел на Акисмет.
Кроме того, вы можете проявить творческий подход к проверке пользовательских данных. Например, предположим, что у вас есть регистрационная форма, для которой требуются адрес электронной почты и адрес пользователя. Вы можете быть достаточно хардкорными в том, как вы проверяете адрес электронной почты, даже зайдя так далеко, что убедитесь, что домен действительно настроен для приема почты и что в этом домене есть почтовый ящик, который соответствует тому, что было предоставлено. Вы также можете использовать Google Maps API, чтобы попытаться определить местоположение адреса и убедиться, что он действителен.
Чтобы пойти еще дальше, вы можете реализовать «жесткие» и «мягкие» ошибки проверки. Если адрес электронной почты не соответствует строке проверки регулярного выражения, то это серьезная ошибка. Невозможность проверить записи DNS домена, чтобы убедиться, что он принимает почту или что почтовый ящик существует, является «мягкой» ошибкой. Когда вы столкнетесь с мягким сбоем, вы можете запросить проверку CAPTCHA. Мы надеемся, что это уменьшит количество раз, которое вам придется нажимать на проверку CAPTCHA, потому что, если вы получаете достаточно активности на сайте, допустимые люди должны вводить достоверные данные хотя бы в некоторых случаях!
Я понимаю, что это довольно старый пост, однако я наткнулся на интересное решение под названием «капча с медовым горшком», которое легко реализовать и не требует javascript:
Создайте скрытое текстовое поле!
Чтобы пользователь с программой чтения с экрана не попал в вашу ловушку, просто пометьте текстовое поле «Если вы человек, оставьте поле пустым» или что-то подобное.
Тада! Ненавязчивая блокировка спама! Вот статья:
http://www.campaignmonitor.com/blog/post/3817/stopping-spambots-with-two-simple-captcha-alternatives
Поскольку 100% избежать этого крайне сложно, я рекомендую прочитать эту статью IBM опубликованный 2 года назад под заголовком «Real Web 2.0: борьба со спамом», в котором поведение посетителей и рабочий процесс управления анализируются хорошо и кратко.
Веб-спам бывает разных форм, в том числе:
- Статьи о спаме и вандализмы в вики
- Спам в комментариях в веб-журналах
- Публикация спама на форумах, в системе отслеживания проблем и других дискуссионных сайтах
- Спам реферера (когда спам-сайты делают вид, что направляют пользователей на целевой сайт, на котором перечислены рефереры)
- Ложные записи пользователей в социальных сетях
Работать с веб-спамом очень сложно, но веб-разработчик пренебрегает предотвращением спама на свой страх и риск. В этой статье и во второй части, которая придет позже, я представляю методы, технологии и службы для борьбы со многими видами веб-спама.
Также есть ссылка на очень интересную "... технику хеш-кеширования для минимизации спама в Вики-сайтах и т. п., в дополнение к электронной почте. "
Как насчет удобочитаемого вопроса, в котором пользователю предлагается ввести первую букву значения, которое он ввел в поле имени, и последнюю букву поля фамилии или что-то в этом роде?
Или покажите некоторые скрытые поля, заполненные JavaScript, такими значениями, как referer и так далее. Убедитесь, что эти поля совпадают с теми, которые вы сохранили в сеансе ранее. Если значения пусты, у пользователя нет javascript. Тогда не было бы спама. Но бот хотя бы заполнит некоторые из них.
Обязательно стоит выбрать что-то одно - Honeypot или BOTCHA.