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

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

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

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

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

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

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

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

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

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

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

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

相关推荐
Zzxy几秒前
HikariCP连接池
java·数据库
罗超驿5 分钟前
Java数据结构_栈_算法题
java·数据结构·
谁在黄金彼岸6 分钟前
Spring Boot + WebFlux 全面使用指南
spring boot
希望永不加班10 分钟前
SpringBoot 主启动类解释:@SpringBootApplication 到底做了什么
java·spring boot·后端·spring
一只叫煤球的猫13 分钟前
为什么不用 RAG 做记忆系统 ——压缩上下文与 memory.md 的架构选择
人工智能·后端·ai编程
智能工业品检测-奇妙智能20 分钟前
国产化系统的性价比对比
人工智能·spring boot·后端·openclaw·奇妙智能
编码忘我30 分钟前
java强引用、软引用、弱引用、虚引用
后端
蝎子莱莱爱打怪38 分钟前
别再裸用 Claude Code 了!32 个亲测Skills + 8 个 MCP,开发效率直接拉满!
java·后端·claude
犯困的饭团41 分钟前
4_【自动化引擎Ansible Runner】将 Runner 嵌入灵魂 - Python API 编程
后端
AI茶水间管理员44 分钟前
爆火的OpenClaw到底强在哪?一文了解核心架构(附一条消息的全链路流程)
人工智能·后端