我讨厌传统的验证码,于是过去几周我花时间开发了一个“打地鼠”风格的 HTML5 小游戏来取代它们。想法很简单:不再点击模糊的交通灯,而是敲击一个移动的目标。如果你赢了,就说明你是人类。我昨天上线了它,以为大家会喜欢这种无摩擦的体验。

结果,我只得到一次安装,而且很快就被卸载了,还收到了一位无障碍专家的严肃提醒。

他们指出,依赖动态 Canvas 交互和精确的鼠标移动会完全排除关节炎等运动障碍用户,或使用辅助设备的人。为了让网页对我更不烦,我不小心让它对他们完全不可用。这是我一次巨大的疏忽。

我不想只是在旁边随便加个无聊的“音频挑战”按钮来破坏游戏的趣味美感,于是必须重新思考核心循环。我最终在游戏下方构建了一个看不见的遥测层。现在,它被动地监测鼠标轨迹熵和键盘 Tab 节奏。如果你的鼠标移动像自然人类那样有轻微曲线,或者以正常的人类速度通过 Tab 键切换页面,系统会在你甚至还没开始玩之前立即自动验证你。游戏仍然作为可疑流量的后备,但主要的安全验证现在完全是被动的。

在上线当天这是一颗难以下咽的药,但它迫使我打造了一个更酷、更具包容性的系统。提醒所有构建 UI 密集型网页游戏的开发者:在没有鼠标的情况下测试你的作品。这会彻底改变你对交互设计的思考方式。