Как запретить роботам автоматически заполнять форму? - PullRequest
99 голосов
/ 05 марта 2010

Я пытаюсь найти достаточно хороший механизм защиты от спама, чтобы предотвратить автоматически сгенерированный ввод. Я читал, что методы, такие как капча, 1 + 1 =? все работает хорошо, но они также представляют собой дополнительный шаг, препятствующий бесплатному быстрому использованию приложения (я не ищу ничего подобного, пожалуйста).

Я пытался установить некоторые скрытые поля во всех моих формах, с display: none; Тем не менее, я уверен, что скрипт можно настроить так, чтобы он отслеживал идентификатор поля формы и просто не заполнял его.

Реализуете ли вы / знаете ли вы хороший анти-автоматический метод заполнения форм-роботов? Есть ли что-то, что может быть легко реализовано с помощью обработки на сервере HTML И / ИЛИ и быть (почти) пуленепробиваемым? (без JS, так как его можно просто отключить).

Я пытаюсь не полагаться на сеансы для этого (т.е. подсчитывать, сколько раз нажата кнопка для предотвращения перегрузок).

Ответы [ 27 ]

0 голосов
/ 05 марта 2010

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

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

0 голосов
/ 05 марта 2010

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

Попробуйте добавить поле, подобное этому:

  • Скопируйте "привет" в коробку в сторону
  • 1 + 1 =?
  • Скопируйте название сайта в поле

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

EDIT

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

0 голосов
/ 11 января 2015

Используйте 1) форму с токенами 2) Проверьте форму, чтобы сформировать задержку с IP-адресом 3) Блок IP (необязательно)

0 голосов
/ 11 января 2015

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

Кстати, я стараюсь не полагаться на сессии для этого (например, считая, как многократно нажимается кнопка для предотвращения перегрузок).

Не думаю, что это хорошо. На самом деле я хочу получать электронные письма от пользователей, которые выполняют определенные действия, потому что это те пользователи, которые мне интересны (например, пользователи, которые просмотрели страницу "CV" и использовали правильная контактная форма). Поэтому, если пользователь делает то, что я хочу, я начинаю отслеживать его сеанс и устанавливаю cookie (я всегда устанавливаю cookie сеанса, но когда я не запускаю сеанс, это просто поддельный cookie, созданный для того, чтобы считать, что у пользователя есть сеанс). Если пользователь делает что-то нежелательное, я не беспокоюсь о сохранении для него сеанса, поэтому никаких перегрузок и т. Д.

Также было бы неплохо, чтобы рекламные сервисы предлагали какие-то API-интерфейсы (возможно, они уже существуют), чтобы посмотреть, «смотрел ли пользователь объявление», вполне вероятно, что пользователи, просматривающие рекламу, являются реальными пользователями, но если они не очень хорошо, по крайней мере, вы получаете 1 просмотр в любом случае, так что ничего не потеряно. (и поверьте мне, контроль над рекламой более сложен, чем все, что вы можете сделать в одиночку)

0 голосов
/ 19 мая 2014

Это просто идея, id использовал это в моем приложении и хорошо работает

вы можете создать cookie при движении мыши с помощью javascript или jquery и при проверке на стороне сервера, если cookie существуют, потому что мышь есть только у людей, cookie могут быть созданы только ими cookie может быть отметкой времени или токеном, который может быть проверен

0 голосов
/ 05 марта 2010

На сайте JQuery есть учебник .Хотя это JQuery, идея не зависит от фреймворка.

Если JavaScript недоступен, вам, возможно, придется вернуться к подходу типа CAPTCHA.

0 голосов
/ 14 мая 2010

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

...