如何检测鼠标点击是合法还是自动?

PEX*_*INA 7 c++ vb.net

如何知道是否模拟了鼠标点击?当鼠标单击由程序或真实鼠标设备发送时

...我正在为游戏编程系统检测,以避免仅接受合法鼠标点击的机器人,自动点击等

And*_*asT 11

这取决于您正在编写的应用程序类型,但如果可以,我会观察光标移动,而不是点击.人体鼠标移动具有不均匀的速度,反应时间,不精确度(点击按钮的不同坐标等等).

此外,您可以通过随机要求难以编写脚本的交互来防御机器人.例如:如果脚本依赖于按钮始终处于相同位置,我会确保在尝试保持直观时,对话框每次都会弹出略微不同的位置.

否则:无法检测鼠标是真实的还是非常好的模拟鼠标.Windows HID/MacOS/Linux驱动程序层抽象出Mice,TrackPens,TrackBalls,绘图板,触摸屏......当然还有脚本鼠标之间的区别......


ica*_*bod 7

虽然博客文章本身就是一个不同的问题,但我会向你推荐Raymond Chen的优秀Old Old Thing.在这篇特定的博客文章中,他谈到了进入应用程序的消息参数的有效性,但也指出:

没有必要讨论消息的发送者是否正在玩弄伎俩和骗你的可能性,因为(1)你的程序应该与诡计一致并回应假的菜单消息,就好像它们是真正的菜单消息一样,因为(2)无论如何都没有办法说你被骗了.要检测说谎,你必须能够阅读向你发送信息的程序员的心态.

基本上,我们的论点是,您应该像鼠标点击一样响应鼠标点击,无论这些点击是如何生成的.


qua*_*cle 0

我不确定是否有一种方法可以完美准确地确定鼠标单击是否是自动的。我的意思是,您可以编写自己的 USB 驱动程序,该驱动程序位于本机鼠标驱动程序和操作系统之间,并且仅向您转发“真实”点击。然而,即使是这样,也可以通过插入被编程为将 USB 数据包发送到主机的 USB 设备(如智能手机)来解决。

您想要实现什么要求您区分真实的鼠标点击和虚假的鼠标点击?