检测网页上的合成点击

时间:2014-12-12 11:16:42

标签: javascript events click

通过Javascript可以检测合成点击(非人类生成的点击,而是使用JS或其他一些自动化工具生成的点击)?

6 个答案:

答案 0 :(得分:1)

可能我们可以这样做:

document.onmousedown = function(e) {
     if (typeof(e.pageX) !== 'undefined' && e.pageX != 0)
      {
        alert ('human');
      }else{
          alert ('else');
      }
    }

或类似的方法:

 document.onmousedown = function(e) {
             if(e.screenX && e.screenX != 0 && e.screenY && e.screenY != 0){
                 alert("real button click");
               }else{
               alert("something else");
               }
         }

见这里:Detect if button click real user or triggered by a script

注意:如果您需要jquery解决方案,请访问: Check if event is triggered by a human

答案 1 :(得分:1)

您可以像使用其他版本一样使用vanilla Javascript,也可以考虑使用jquery,以便轻松检测非人为点击。

1.使用jquery定义全局点击事件处理程序。您可以捕获页面元素的所有点击。

 $(document).click(function(event) {
  });

2.检查event.originalEvent是否存在(如果存在)点击是由人进行的。 More info

点击鼠标

 $(document).click(function(event) {
    if (event.originalEvent === undefined) {
        alert('not human')
    } else {
        alert(' human');
    }
 });

对于按键

$(document).keypress(function(event) {

    if (event.originalEvent === undefined) {
        alert('not human')
    } else {
        alert(' human');
    }
});

以下是示例代码。

<!DOCTYPE html>
<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script>
$(document).ready(function(){
 $(document).click(function(event) {
    if (event.originalEvent === undefined) {
        alert('not human')
    } else {
        alert(' human');
    }
});
$(document).keypress(function(event) {

    if (event.originalEvent === undefined) {
        alert('not human')
    } else {
        alert(' human');
    }
});
   $(document).click();
   $(document).keypress();
});
</script>
</head>
<body>
<p>Click me !</p>
</body>
</html>

答案 2 :(得分:0)

您可能想要关注mousemove事件和点击事件。如果您正在捕捉点击事件,但没有鼠标移动事件,我认为可以说机器人正在点击您的网站。

答案 3 :(得分:0)

这是一个古老的问题,但是可接受的答案使用jQuery,并且我敢肯定,这里的许多访问者正在寻找香草JS解决方案。如果不需要支持IE,则可以使用Event.isTrusted

document.querySelector('a').onclick = function(event) {
    if('isTrusted' in event) {
        if(event.isTrusted === true) {
            console.log('clicked on by a human');
        } else if(event.isTrusted === false) {
            console.log('click was triggered by a script');
        }
    }
};

https://developer.mozilla.org/en-US/docs/Web/API/Event/isTrusted

在IE中,除createEvent创建的事件外,所有事件均受信任:

https://technet.microsoft.com/en-us/windows/ff974948(v=vs.60)

答案 4 :(得分:0)

我知道这个问题很旧,但是正确的方法是使用event.isTrusted,如果用户用鼠标单击将为true,否则为false。

答案 5 :(得分:-1)

仅通过检查页面事件没有可靠的方法。

你当然可以判断一个事件是由代码还是一个&#34;鼠标点击&#34;触发的,但是无法确定一个真正的人是否点击了鼠标,我相信这就是你&# 39;重新问。

您可能会观察鼠标移动并分析它们以查看它们是否含有足够的人体肌肉运动(非线性运动),但如果它完全有效,我不会期望它持续很长时间直到广告欺诈人员流行并添加一些随机化。

这就是谷歌和其他人采用CAPTCHA和其他图灵式测试的原因。