2011-10-27 162 views
1

我有一个小程序,我正在网上运行,我想确保人们不能使用Java Robot类来操作小程序。我知道雅虎在他们的几个游戏平台上都这样做,我想知道是否有人知道他们是如何完成的。区分机器人鼠标点击和人类鼠标点击

+1

*“我想确保人们不能使用Java Robot类”*因此,如果他们使用类似于另一种语言的API的类的机器人,那么可以吗? –

+0

更喜欢他们没有,但是我这样说,因为我想把问题集中在java的Robot类的检测方法上。 –

回答

3

看着鼠标移动,并确保你没有看到从一个地方跳到另一个地方,而是在一段时间内移动。 Sun/Oracle的J2SE教程展示了如何关注鼠标移动事件:http://download.oracle.com/javase/tutorial/uiswing/events/mousemotionlistener.html

请记住,这可能无法检测到机器人和某人之间的区别,如触摸屏或平板电脑输入设备。

还有一点需要注意的是用户是否点击相同的像素,或只是在相同的附近。人类相当不精确,机器人通常不会被编程。

我还会放入一个手势记录器,用于编写这些信息并记录用户的实际动作。如果你怀疑有人作弊,那么你可以看看他们的实际鼠标动作是什么样的,并将其与一个已知的人进行比较。这会让你更好地了解你需要寻找的东西,而不是我们任何人都可以想到的东西。

+1

+1用于整理数据并使用它来开发算法/启发式的集合。我最近阅读了一篇讨论这个概念的文章(http://worrydream.com/LadderOfAbstraction/)。 – Bringer128

+0

这是一篇很棒的文章,我只是为以后的阅读做了书签。简单的例子非常丰富。 – SplinterReality

1

随时跟踪鼠标位置的分布情况。人类移动鼠标的方式不同于每次单击时就知道确切位置的机器人。当然,更智能的机器人可以抵御这种防御。