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

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

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

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

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

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

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

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

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

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

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

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

相关推荐
IT_陈寒5 分钟前
Vue的数组更新把我坑惨了
前端·人工智能·后端
栗子~~8 分钟前
java - logstash-logback-encoder 集成 demo
java·开发语言·logback
高晶11 分钟前
Android 智能语音开发新手入门实战
后端·程序员
励志不掉头发的内向程序员13 分钟前
鼠标点一下,图形是怎么画出来的?拆解 CAD 的 Action 状态机
后端·架构
hmb↑20 分钟前
高并发与高可用技术经验
java·spring
高晶21 分钟前
Android 机器视觉新手入门:从扫码到人脸实战
后端·程序员
写码跑山的老艾21 分钟前
基于 FSB 快速搭建 AI 客服:专家扩展与 Spring Boot 接入
后端
云边有个稻草人26 分钟前
从语句编写到执行追踪:金仓 SQL 编辑器实战指南
后端
楚识科技29 分钟前
XML配置OCR接入实战:自定义OCR模板从字段定义到API调用全流程
xml·java·ocr
code_slave(码畜)31 分钟前
微服务架构落地:消息队列架构设计(上篇)——异步解耦、削峰填谷,看懂业务事件流转本质
spring boot·spring cloud·微服务·云原生·架构