我有一个applet,我正在线上运行,我想确保人们不能使用java Robot类来操作applet。我知道雅虎在他们的几个游戏平台上做了这个,我想知道是否有人知道他们是如何完成它的。
答案 0 :(得分:3)
观察鼠标移动,确保您没有看到从一个地方到另一个地方的“跳跃”,而是随着时间的推移而移动。 Sun / Oracle的J2SE教程展示了如何跟踪鼠标移动事件:http://download.oracle.com/javase/tutorial/uiswing/events/mousemotionlistener.html
请记住,这可能无法检测到机器人与某人之间的区别,例如触摸屏或平板电脑输入设备。
需要注意的另一件事是用户是在点击相同的像素,还是只是在同一个附近。人类是相当不精确的,机器人通常不会被编程为。
我还会设置一个手势记录器,用于编制这些信息,并跟踪用户的实际动作。如果您怀疑有人作弊,那么您可以查看他们的实际鼠标移动情况,并将其与已知人员进行比较。这样可以让你更好地了解你需要寻找的东西,而不是我们任何一个人能想到的。
答案 1 :(得分:1)
跟踪鼠标位置随时间的分布情况。人类移动鼠标的方式与机器人不同,机器人每次点击时都知道确切位置。当然,更智能的机器人可以抵御这种防御。