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

Защита от спама/сокращение - Контактная форма?

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

<form>
    NAME
    <input type='text' name='name' />
    EMAIL
    <input type='text' name='email' />
    MESSAGE
    <textarea name='message' />
    <input type='submit' />
</form>

Эта форма просто напишет мне сообщение клиентов.

Но я также хочу уменьшить (не, я не говорю об исключении, но, по крайней мере, уменьшении), SPAM.

Я изучил использование CAPTCHA, но, в конечном счете, я не хочу препятствовать клиенту заполнять дополнительную информацию.

Любые идеи хорошего простого метода предотвращения/сокращения спама, которые я мог бы использовать для моей контактной формы.

4b9b3361

Ответ 1

Очень простой трюк, который я использовал с удивительно хорошим успехом, заключается в следующем: Предоставьте текстовое поле, которое скрыто от пользователей с помощью style="display: none", но с заманчивым именем, например email. Большинство ботов будут заполнять что-то в этой области, но люди не могут видеть это так, как обычно. На сервере просто убедитесь, что поле пустое, иначе обработайте его как спам.

Ответ 2

Единственный (клиентский) способ, отличный от подтверждения пользователя типа CAPTCHA, - это написать все это динамически. Многие (но не все) роботы, вероятно, игнорируют динамический контент. Например,

document.write("<"+"form>"
  +" NAME "
  +" <"+"input type='text' name='name' /> "
  +"EMAIL "
  +"<"+"input type='text' name='email' /> "
  +"MESSAGE "
  +"<"+"textarea name='message' /> "
  +"<"+"input type='submit' /> "
+"<\/form> ");

Ответ 3

Используйте почтовую учетную запись Google или Yahoo. У них хорошие фильтры для защиты от спама.

Ответ 4

Если вы хотите сделать полностью входное решение, у меня был успех недавно, оставив атрибут действия формы пустым и заполнив его с помощью функции $(document).ready. Большинство спам-ботов используют браузер с отключенным javascript или ищут скрытые поля, чтобы избежать обнаружения.

Пример:

Ваш html будет:

<form method="POST" action="" id="contact-form">

и в любом месте этой страницы вы можете использовать это, чтобы заполнить его.

<script>
        $(document).ready(function(){
                 $("#contact-form").attr("action", "/yourMailScript.cgi");
        });
</script>

Бот-браузер без javascript не получит действие формы, и он получит 404 при представлении. Любой, у кого нормальный браузер (если у них нет JS, отключенного по параноидальным причинам), получит нормальное поведение.

Ответ 5

grep для методов URI, символов с urlencoded или двух символов разметки HTML, похоже, работает.

Ответ 6

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

Еще один способ: вы также можете использовать проверку электронной почты после отправки контактной формы. И сохраните данные в своей базе данных. Если клиент проверяет URL по электронной почте, контактная информация будет отправлена ​​вам по почте из базы данных.

А также используйте задержку, чтобы предотвратить непрерывную атаку робота. Как sleep() в PHP-коде. Это добавит немного задержки в ваш код. Таким образом, вы можете уменьшить случайные атаки, но это не метод предотвращения.

Ответ 7

Я нашел хорошую идею на этой странице:

http://www.evengrounds.com/developers/alternatives-to-captcha

Вы можете сделать кнопку SUBMIT на странице подтверждения , на которой вы объясните пользователю, что он должен нажать кнопку CONFIRM, чтобы отправить сообщение. Спамботы обычно подают только первую форму и пропускают второй шаг.

Ответ 8

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

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

Ответ 9

Используйте антиспамовый API, такой как Akismet или Cleantalk. Вы можете использовать традиционные проверки для менее сложных ботов, прежде чем использовать API. Анти-спам-API - единственный способ поймать спам, представленный человеком.

Ответ 10

Вы можете просто зарегистрировать IP ($ _SERVER ['REMOTE_ADDR']) и запретить повторную валидацию с помощью этого IP-адреса в течение 1 минуты или, более точно, начать сеанс, указать идентификатор без вашего посетителя и запретить повторную проверку для 1 минута (или больше, но бот не любит ждать).

Ответ 11

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

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