Selenium的mouseMove()与真实鼠标移动有什么区别?

4
假设我有元素A和元素B。我启动了Selenium或PhantomJS,它们也能够通过坐标集移动鼠标。
我定位元素A(一个链接)和元素B(一个提交按钮)的形状。我绘制一条贝塞尔曲线或者转换一个预先记录的人类鼠标移动,从元素A到元素B。
我的直觉是,mouseMove()只是将光标“传送”到那个坐标集。这与实际使用鼠标有何不同?
如果我在我的网站上跟踪用户的鼠标移动,假设他们使用复杂的移动曲线,我是否能够判断他们是否在使用自动化工具?

Selenium只是使用JavaScript模拟鼠标输入。 - Thibstars
好问题。你是在尝试防止机器人访问你的网站吗?也许跟踪发送给服务器的请求时间也是一个选择。一般来说,机器人应该比人类用户更快地“点击”(或输入)一个网页。 - JDelorean
1
相关,但从不同的角度来看:通过Selenium实现类似人类鼠标移动 - alecxe
1个回答

2
根据我的经验,如果您从JS跟踪鼠标,并且机器人仅使用Selenium来移动鼠标指针而没有“复杂的运动曲线”,答案是肯定的
但是,
如果该“机器人”专门设计用于创建“复杂的运动曲线”,例如“重放记录的运动数据集”,我认为您不能做到。(类似问题也给出了否定的答案)。
因此,
您只能设计一个“启发式解决方案”,而不是完美的解决方案。如果这正是您想要的,我可以尝试给您一些想法。否则,如果您可以选择其他路径,我建议您使用某种形式的Selenium检测验证码

我对Selenium检测非常好奇。恐怕在我的情况下,验证码不是一个选项。 - dsp_099
我对任何能够抓住非常复杂的机器人程序的想法都很感兴趣。我正在防范僵尸网关的攻击。 - dsp_099
首先,我需要更多的信息:您确定这个僵尸网络只使用Selenium吗?您的网站是做什么的?或者更准确地说,您的网站上的僵尸网络是用来做什么的?我们也可以尝试匹配这些机器的“行为”或对它们进行指纹识别。 - Mirko Conti
1
我通过一个朋友的朋友拉了一些关系,使用第三方工具运行了一个小测试,以查看我能够检测到多少个机器人。在12000次点击中,仅有18.8%被业界领先公司认定为是机器人。我想增加这个数字。我使用自己的PhantomJS访问了该网站,并没有被阻止或需要我解决验证码。我希望流量可以无障碍地流动。分解情况如下:http://i.imgur.com/IyY4s8F.png 因此可以说该网络(虽然我不能确认或否认)仅使用Chrome。其他0.2%或其他就是我因为我使用Opera :) - dsp_099
好的。有趣的研究,但情况不太妙。请考虑一下你所要求的(机器人检测)是网络安全世界中的主要问题之一。无论如何,以前有一种方法可以检测Firefox(但我记得不能检测Chrome),但那不是你的情况。 我没有直接用于检测Selenium / PhantomJS的算法,但我的主要想法是使用一些已经存在的服务的试用版,例如http://www.distilnetworks.com/block-bot-detection/(看起来非常有前途),查看它们使用的代码(客户端),然后反转它! - Mirko Conti
据我所了解,他们不会对客户端进行指纹识别,而是使用JS来检测webdriver的使用(可能使用机器学习和大量数据)。 - Mirko Conti

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接