Как проверить, вводит ли робот информацию

StackOverflow https://stackoverflow.com/questions/1239283

  •  11-09-2019
  •  | 
  •  

Вопрос

У меня есть веб-форма, которую пользователи заполняют, а информация отправляется на сервер и сохраняется в базе данных.Я боюсь, что роботы могут просто заполнить форму, и в итоге у меня останется база данных, полная бесполезных записей.Как я могу запретить роботам заполнять мои формы?Я думаю, может быть, что-то вроде обнаружения роботов Stackoverflow, когда, если он думает, что вы робот, он просит вас подтвердить, что вы им не являетесь.Есть ли серверный API в Perl, Java или PHP?

Это было полезно?

Решение

Есть несколько решений.

  1. Используйте CAPTCHA.ТАК использует реКАПЧА насколько я знаю.

  2. Добавьте в форму дополнительное поле и скройте его с помощью CSS (display:none).Обычный пользователь не увидит это поле и поэтому не будет его заполнять.При отправке вы проверяете, пусто ли это поле.Если нет, то вы имеете дело с роботом, который тщательно заполнил все поля формы.Эту технику обычно называют «приманкой».

  3. Добавьте функцию таймера JavaScript.При загрузке страницы значение начинается с нуля, а затем увеличивается с течением времени.Обычный пользователь какое-то время прочитает и заполнит вашу форму и только потом отправит ее.Робот просто заполнит и отправит форму сразу после ее получения.Вы проверяете, сильно ли значение изменилось с нуля при подаче.Если да, то это, скорее всего, настоящий пользователь.Если вы видите всего пару секунд (или даже вообще не видите значения из-за того, что роботы не выполняют JavaScript), то, скорее всего, это робот.Однако это будет работать только в том случае, если вы решите, что вашим пользователям потребуется включить JavaScript для выполнения операций «записи».

Наверняка есть и другие техники.Но они довольно просты и эффективны.

Другие советы

Вы можете использовать реКАПЧА (то же самое, что и stackoverflow) - у них есть библиотеки для ряда языков программирования.

Я всегда предпочитал капчу Honeypot (статья Фила Хака), поскольку он менее агрессивен для пользователя.

Капчи создают проблемы с доступностью и в конечном итоге будут преодолены программным распознаванием.

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

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

КАПЧА — это здорово.Еще одна вещь, которую вы можете сделать, чтобы предотвратить 99% трафика роботов, но при этом не раздражать пользователей, — это проверять поля.

На моем сайте я проверяю текст в таких полях, как почтовый индекс и номер телефона.Это устранило всю нецелевую дезинформацию о роботах.

Вы можете создать двухэтапную систему, в которой пользователь заполняет форму, а затем должен ответить на электронное письмо, чтобы «активировать» запись в течение установленного периода времени — скажем, 24 часов.

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top