Selenium 的 mouseMove() 和实际的鼠标移动有啥区别?
Posted
技术标签:
【中文标题】Selenium 的 mouseMove() 和实际的鼠标移动有啥区别?【英文标题】:What is the difference between Selenium's mouseMove() and an actual mouse movement?Selenium 的 mouseMove() 和实际的鼠标移动有什么区别? 【发布时间】:2017-02-03 06:30:51 【问题描述】:假设我有一个元素 A 和一个元素 B。我启动了 Selenium 或 PhantomJS,它们还具有通过坐标集移动鼠标的能力。
我找到了元素 A(链接)和元素 B(提交按钮)的形状。我绘制贝塞尔曲线或将预先录制的人类鼠标移动转换为从元素 A 到元素 B。
我的直觉是mouseMove()
只是将光标“传送”到该坐标集。这与实际使用鼠标有何不同?
如果我在我的网站上跟踪用户的鼠标移动,如果他们使用复杂的移动曲线,我能否判断他们正在使用自动化工具?
【问题讨论】:
Selenium 仅使用 javascript 模拟鼠标输入。 好问题。您是否试图阻止机器人访问您的网站?也许跟踪发送到您的服务器的请求的时间也是一种选择。一般来说,机器人应该比人类用户更快地“点击”(或输入)网页。 相关,但从不同的角度来看:Human-like mouse movements via Selenium. 【参考方案1】:根据我的经验,如果您从 JS 跟踪鼠标并且机器人只是使用 selenium 来移动鼠标指针而没有“复杂的移动曲线”答案是肯定的。
但是,
如果“机器人”专门设计用于创建“复杂的运动曲线”或例如“重放记录的运动数据集”,我认为您不能。 (Similar question 也有否定答案)。
那么,
您可以设计一个“启发式解决方案”,但不是一个完美的解决方案。如果这是您想要的,我可以尝试给您一些想法。否则,如果您可以遵循其他路径,我会建议您进行某种硒检测或验证码。
【讨论】:
我对硒检测很好奇。恐怕验证码不是我的选择。 我对你可能有的关于如何捕捉非常复杂的botter的任何想法都很感兴趣。我在这里防御僵尸网络 首先,我需要一些进一步的信息:你确定僵尸网络只使用硒吗?你的网站是什么?或者更准确地说,您网站上的僵尸网络是什么?我们还可以尝试匹配这些机器的“行为”或对其进行指纹识别。 我通过一个朋友的朋友拉了一些字符串来运行一个小测试,看看我可以使用第三方工具检测到多少。在 12,000 次点击中,只有 18.8% 被行业领先公司认定为机器人。我想增加这个数字。我使用自己的 PhantomJS 访问了该站点,它没有阻止我或让我解决验证码。我希望交通畅通无阻。细分看起来像这样:i.imgur.com/IyY4s8F.png 所以可以肯定地说网络(我不能确认或否认)只使用了 Chrome。剩下的 0.2% 或其他什么是我,因为我使用 Opera :) 好的。有趣的研究但令人讨厌的情况,认为你所问的(机器人检测)是网络安全世界的主要问题之一。无论如何..前段时间有一种方法可以检测firefox(但不是我记得的Chrome),但这不是你的情况。我没有检测 selenium / PhantomJS 的直接算法,但我的主要想法是使用一些已经存在的服务的试用版,比如这个distilnetworks.com/block-bot-detection(看起来很有希望),看看他们使用的代码(客户端)和反向它!以上是关于Selenium 的 mouseMove() 和实际的鼠标移动有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章
Javascript和jquery事件--鼠标移动事件mousemove