Javascript 模拟真实用户点击绕过网络蜜罐

Javascript 模拟真实用户点击绕过网络蜜罐,javascript,web-scraping,browser,detection,Javascript,Web Scraping,Browser,Detection,我想刮一个网页,但我不能被检测为机器人。我使用js获取数据、填充输入或单击按钮 我已经读到,我必须考虑一些“diplayed:none”属性,因为它们似乎是蜜罐。在我的网站中,有一个div显示: // When mouse is not used <div style="position: absolute; top: 0px; left: 0px; display: none; z-index: 10000;"><div class="

我想刮一个网页,但我不能被检测为机器人。我使用js获取数据、填充输入或单击按钮

我已经读到,我必须考虑一些“diplayed:none”属性,因为它们似乎是蜜罐。在我的网站中,有一个div显示:

     // When mouse is not used
<div style="position: absolute; top: 0px; left: 0px; display: none; z-index: 10000;"><div class="tip">
     // When mouse has moved but not on any clickable point
<div style="position: absolute; top: 264px; left: 272px; z-index: 10000; display: none;"><div class="tip">
     // When mouse on a clickabel point
<div style="position: absolute; top: 264px; left: 272px; z-index: 10000;"><div class="tip">
//不使用鼠标时
//当鼠标移动但不在任何可点击点上时
//当鼠标停留在clickabel点上时
这让我想到了web检查是以编程方式完成的还是来自真实用户的

因此

  • 这是我必须处理的事情还是无关紧要的
  • 如果是这样,我怎么能绕过它
非常感谢

显示:无;这不是你唯一的问题,你也可以用负片左键:-100px;或顶部:-100px;值和/或颜色:白色;在白色背景上,等等

但他们都是鲁莽地试图阻止机器人,而他们所要做的就是这样

幸运的是,JavaScript已经提供了一种机制,用于确定事件是否是用户通过“isTrusted”布尔属性发起的。用法如下

<button id="logon" onclick="if(event.isTrusted){SomeFunction();}">Logon</button>
登录
任何试图单击此按钮的JavaScript,如logon.click();如果测试失败,该功能将永远无法运行,而且您无法模拟人类手势


黑客利用那些使用你和我提到的愚蠢伎俩的糟糕程序员。

Dave提出的观点很好,但发布的版本是为了清晰起见

看看你能不能愚弄这个小小的修改

<!DOCTYPE html>
<head>
</head>

<body>

<script type="text/javascript">

function SomeFunction(event){

if(event.isTrusted){
   
  alert('This came from a human');


 } else {alert('This came from a bot');}
}

</script>

<button id="logon" onclick="SomeFunction(event);">Logon</button>

<button onclick="logon.click();">BOT clicking button</button>

<button onclick="SomeFunction(true);">BOT running function directly</button>

</body>
</html>

函数SomeFunction(事件){
如果(事件已信任){
警惕(“这来自人类”);
}else{alert('这来自一个bot');}
}
登录
机器人点击按钮
BOT直接运行功能

注意:对于最后一个按钮,我们在这里通过一个按钮来模拟一个机器人,这样我们就有了传递人类onclick事件的特权,但是对于一个机器人来说就不是这样了,因此我添加了布尔变量。

而这个可以通过简单地运行
SomeFunction()来绕过
直接…添加了一个新帖子来回答你提出的好问题。然后,如果我理解你的意思,如果我看到event.isTrusted.puppeter/Selenium events的任何函数,我就无法克服机器人检测,我不知道你希望谁停止使用它。也许是chrome扩展?你可以删除
显示:none
元素,但是我可以看出这个页面没有做你认为它正在做的事情。这个代码改变了那些按钮的外观。他们得到了一个白色的模糊,所以它似乎集中。然而,我真的认为网络可以做一些事情来检测用户是真实的还是机器人。