addeventlistener для 'keypress' = альтернатива капчи? - PullRequest
3 голосов
/ 10 ноября 2010

Прав ли я, полагая, что спам-боты не могут имитировать событие «нажатие клавиши», и поэтому я не могу получить спам, если мне требуется нажатие клавиши для каждого поля в моей контактной форме, прежде чем я смогу его отправить? *

Является ли это хорошей альтернативой капче и т. Д., Если мне все равно, включен ли JavaScript у моих зрителей?

Волшебники, поправьте меня.

Ответы [ 2 ]

1 голос
/ 10 ноября 2010

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

Однако я не думаю, что у них возникнет проблема, если просто выполнить element.onkeypress() напрямую. Если бот может определить, что ему нужно нажать клавишу для продвижения, то на самом деле все сводится к тому, что нужно вызвать конкретный метод обработчика событий - и бот может сделать последнее. Он может также создать свой собственный поддельный объект Event, содержащий код ключа, а затем передать его и / или установить для него window.event.

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

Таким образом, я не думаю, что это плодотворный путь, потому что вы не можете сказать в обработчике события, является ли событие "реальным" или нет. Родной для браузера код отличается, так как боты не могут фактически вызвать событие click, но в Javascript я не вижу простого способа предотвратить простой вызов вашего метода.

0 голосов
/ 10 ноября 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...