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