如何阻止基于Pixi.js的canvas游戏遭遇机器人模拟点击作弊?
可行解决方案
以下方案均不改动现有玩法逻辑,对普通用户无感知:
- 多维度行为特征校验
不要单独依赖输入速度、操作一致性这类单一规则,而是组合采集用户操作的全链路特征:比如从关卡颜色提示出现到完成点击的全过程中,指针的移动轨迹偏移量、速度波动值、点击前的微小停顿时长、移动端的点击按压时长、误触非按钮区域的概率。人类操作的这些特征是无规律的自然波动,机器人很难1:1还原所有维度的特征,你可以动态调整各特征的权重阈值,无需改动玩法,也不会被机器人开发者轻易摸透所有规则。
你可以直接在现有pixi.js的指针事件监听逻辑里加埋点,无需改动核心玩法代码,采集的数据前端先做初步判定,异常数据直接拦截,正常数据随通关请求一起提交到后端做二次校验。 - 干扰机器人图像识别逻辑
现有机器人大概率是通过读取canvas像素来识别指定颜色的,你可以在不影响玩家视觉体验的前提下,对canvas渲染做低干扰的混淆:比如给目标颜色区域加人眼完全无法识别的极细微透明度波动,或者随机插入几个像素级的噪点,定期更换噪点的生成规则,就能直接干扰基于固定像素值做识别的机器人。
同时可以检测navigator.webdriver属性、无头浏览器标识等异常运行环境特征,对存在异常的请求直接提高校验阈值,不会影响正常浏览器访问的用户。 - 动态接口签名校验
不要直接明文提交通关结果,你可以把每关的随机参数、用户的全链路操作数据、前端动态生成的一次性密钥(每关/每10分钟更新一次,后端同步更新)合并生成哈希签名,后端只有校验签名合法才会判定通关有效。机器人就算模拟了点击操作,摸不清签名的生成规则也无法提交有效请求,而且你可以不定期更新签名的生成逻辑,大幅提高机器人的破解成本。 - 异常账号分层校验
仅对连续多次满分、操作特征明显异常的账号触发轻量验证,不需要给所有用户加验证码,完全不影响普通用户的体验。验证也可以做的和游戏风格一致,比如弹出一个和现有玩法逻辑一样的、只有1个颜色按钮的验证关卡,人类用户1秒就能完成,机器人如果绕过了前面的规则,也很难应对不定期更新的验证规则。
内容的提问来源于stack exchange,提问作者anonymous-dev
相关产品推荐
相关产品推荐

