怎么实现一个滑动验证码功能?又如何防止被机器识别破解

滑动验证码应该大家都不陌生,在登录的时候都基本上遇到过,那怎么实现这样一个功能呢?

核心其实就两个,一个是后端造图 ,另一个是行为校验

在后端随机选择一张背景图,再随机选择一个位置(X,Y),利用OpenCV或者Java的BufferedImage算法扣出一块拼图。

然后,在后端把背景图和拼图块转成Base64给前端,同时把正确的X坐标存到Redis中。

前端主要监听鼠标或者触摸事件,当用户拖动滑块时,前端不仅要记录最终滑动的距离,还要记录整个滑动轨迹。

当鼠标松开时,再把数据发给后端。

为了防止被机器识别破解,需要在后端进行双重校验

第一重是判断前端传来的X偏移量和Redis中存储的X是否匹配;

第二重则是对轨迹进行分析,如果轨迹太过完美,可以直接判定为机器人。

因为一般来说,机器人的轨迹是匀速的,直线的 或者是一条完美的数学曲线。

但是,人的轨迹就很难做到这么完美,可能会有抖动,先快后慢或者还可能有回退。

相关推荐
Ivanqhz几秒前
Slope One 算法详解:与矩阵分解、共现矩阵的异同
java·服务器·网络·人工智能·深度学习
Charlie_Byte15 分钟前
Spring AI 2 手把手:把 filesystem MCP Server 跑通(SSE / stdio + 真调工具)
后端
程序猿DD23 分钟前
OctaFuse Gateway 2.11.0:流式请求优化、用户折扣策略与错误契约升级
前端·后端
Bs_MoneyMagnet27 分钟前
基于springboot+vue的非遗物质文化遗产系统的设计与实现 源码+文档
java·vue.js·spring boot·后端·spring·毕业设计·计算机毕业设计
万物智能28 分钟前
波形发生AD9833模块配置—【万物智能之开源鸿蒙OpenHarmony系统实战开发系列教程】
java
计算机毕设定制辅导-无忧学长41 分钟前
《基于SpringBoot的未成年人健康知识科普平台的设计与实现》
java·开发语言·vue.js·spring boot·未成年人健康知识科普平台
Wang's Blog42 分钟前
Java 项目实战: 外卖平台-数据库环境搭建与十一张表结构解析
java·服务器·redis
打工仔折腾 AI1 小时前
Prometheus 告警推钉钉:从单群 Webhook 到跨网络 Alertmanager 实战
人工智能·后端·python·性能优化
console.log('npc')1 小时前
06 — Model 层:数据模型与操作
前端·后端·node.js·express
白远山1 小时前
上海24小时自助健身房系统软件开发实战指南
java·架构·uni-app·需求分析