有没有办法阻止机器人的点击输入?

Mik*_*ink 5 javascript bots typescript pixi.js

我有一个带有 pixi.js 的 javascript 画布游戏,需要玩家按下特定的按钮组合才能完成关卡。他们基本上必须按下与某种颜色相匹配的按钮。

事实证明,玩家正在用 Python 编写机器人来完成这项任务,并且他们每次都获得最高分。该游戏已经上线,用户喜欢玩它,所以我无法真正改变任何游戏玩法。

所以我考虑了一些可能的解决方案,但我有一些担忧

  1. 每个级别之间的验证码
  2. 检查输入速度
  3. 检查输入的一致性

验证码会损害用户体验,并且有大量视频介绍如何绕过它。在机器人的创建者了解发生了什么之后,2 和 3 将失败。所以我真的被困在我能做的事情上。

JoS*_*Ste 2

在允许单击按钮之前,我会考虑一个随机的宽限期。这可能会难倒一些机器人,但这是可以规避的。

除此之外,我还会分析点击/交互的时间。每次请求下一个级别时,与配置文件进行比较,如果它们始终相同,则引入随机按钮 ID、按钮形状(圆形、椭圆形、方形等)、按钮放置(交换按钮)以避免简单的脚本编写。字体和实际文本也可能会有所不同。

我还会将输入元素更改为,<input type="image">因为它会给您准确的坐标(如果可能的话 - 我对 pixi.js 不熟悉),这将有助于分析。

您还可以实现某种鼠标位置跟踪器,但触摸屏上的人不会为此生成数据。如果用户输入是触摸的,您可以补充额外的检查,但机器人很容易就能绕过它。

编辑
我不知道是否有一些库可以检测其他 JavaScript 导入,从而检测潜在的机器人。可能是一个值得考虑的途径。

执行以下操作:检查用户是否安装了 Chrome 扩展程序以验证您是否在浏览器中运行而不是在 python 环境中运行可能是另一种途径。这意味着您将用户限制在某些浏览器上,并且许多其他代码可能会被绕过。这里应该牢记成本/收益。
如果所有内容都通过具有某种无头界面的实际浏览器运行,那么它根本没有用处。

编辑2
快速谷歌搜索python automate browser game会显示如何使用 python 自动化浏览器游戏的教程。粗略地看一下,让你的按钮移动并改变字体将是有效的,甚至“随机”调整游戏区域的大小(即使你有全屏功能)可能是一种可行的防御。同样,按照教程并尝试使用它来自动化它,并了解如何阻止它将是一个很好的练习。

您也可以考虑向一些学生寻求帮助。对于许多提供基于项目的课程的计算机研究课程来说,这可能是一个很好的项目想法。如果您想确保获得结果和“报告”,它也可能是学生工作类型的交易。