96SEO 2026-02-23 12:46 4
摒弃传统字符型验证码#xff0c;采用行为验证码采用嵌入式集成方式#xff0c;接入方便#xff0c;安全#…一、背景

传统字符型验证码展示-填写字符-比对答案的流程目前已可被机器暴力破解应用程序容易被自动化脚本和机器人攻击。
摒弃传统字符型验证码采用行为验证码采用嵌入式集成方式接入方便安全高效。
验证码展示-采集用户行为-分析用户行为流程用户只需要产生指定的行为轨迹不需要键盘手动输入极大优化了传统验证码用户体验不佳的问题同时快速、准确的返回人机判定结果。
网站登录保护用户账号免受非法登录尝试在线表单提交避免垃圾邮件和恶意数据填充论坛或社区防止机器人自动发帖和灌水支付验证保障交易安全防止欺诈行为
AJ-Captcha行为验证码包含滑动拼图、文字点选两种方式UI支持弹出和嵌入两种方式。
后端提供Java实现前端提供了php、angular、html、vue、uni-app、flutter、android、ios等代码示例。
代码开源地址https://gitee.com/anji-plus/captcha
文档地址https://ajcaptcha.beliefteam.cn/captcha-doc/
clickWord验证用户拖动/点击一次验证码拼图即视为一次“验证”不论拼图/点击是否正确二次校验验证数据随表单提交到后台后后台需要调用captchaService.verification做二次校验。
目的是核实验证数据的有效性。
验证数据随表单提交到后台后后台需要调用captchaService.verification做二次校验。
第4步返回校验通过/失败到产品应用后端再返回到前端。
如下图所示。
dependencygroupIdcom.anji-plus/groupIdartifactIdspring-boot-starter-captcha/artifactIdversion1.3.0/version
验证码类型default,blockPuzzle,clickWordtype:
缓存类型local,redis,othercache-type:
local缓存的阈值,达到这个值清除缓存cache-number:
local定时清除过期缓存(单位秒)设置为0代表不执行timing-clear:
滑块验证码的滑块干扰项interference-options:
文字验证码的文字数量【暂不可用】click-word-count:
历史数据清理是否开启history-data-clear-enable:
接口请求次数一分钟限制是否开启req-frequency-limit-enable:
验证失败5次get接口锁定req-get-lock-limit:
验证失败后锁定时间间隔,sreq-get-lock-seconds:
get接口一分钟内请求数限制req-get-minute-limit:
check接口一分钟内请求数限制req-check-minute-limit:
verify接口一分钟内请求数限制req-verify-minute-limit:
dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-data-redis/artifactId
/dependency实现CaptchaCacheService
com.qiangesoft.captcha.cache;import
com.anji.captcha.service.CaptchaCacheService;
org.springframework.beans.factory.annotation.Autowired;
org.springframework.data.redis.core.StringRedisTemplate;import
java.util.concurrent.TimeUnit;/***
stringRedisTemplate;Overridepublic
{stringRedisTemplate.opsForValue().set(key,
TimeUnit.SECONDS);}Overridepublic
stringRedisTemplate.hasKey(key);}Overridepublic
{stringRedisTemplate.delete(key);}Overridepublic
stringRedisTemplate.opsForValue().get(key);}Overridepublic
stringRedisTemplate.opsForValue().increment(key,
在resources目录新建META-INF.services文件夹新建文件名为com.anji.captcha.service.CaptchaCacheService内容为com.qiangesoft.captcha.cache.CaptchaCacheServiceRedisImpl
com.qiangesoft.captcha.controller;import
com.anji.captcha.model.common.ResponseModel;
com.anji.captcha.model.vo.CaptchaVO;
com.anji.captcha.service.CaptchaService;
com.qiangesoft.captcha.pojo.LoginDTO;
com.qiangesoft.captcha.pojo.ResultVO;
org.springframework.beans.factory.annotation.Autowired;
org.springframework.stereotype.Controller;
org.springframework.web.bind.annotation.*;/***
captchaService;GetMapping(/)public
login;}ResponseBodyPostMapping(/login)public
CaptchaVO();captchaVO.setCaptchaVerification(loginDTO.getCaptcha());ResponseModel
captchaService.verification(captchaVO);if
RuntimeException(图片验证码校验失败);}//
placeholder账号/el-input/el-form-itemel-form-item
placeholder密码/el-input/el-form-itemel-form-itemel-button
clickcheckParam登录/el-button/el-form-item/el-formVerifyrefverifycaptcha-typeblockPuzzle:img-size{width:400px,height:200px}successlogin/!--
:img-size{width:400px,height:200px}--!--
./../components/verifition/Verify
{document.removeEventListener(keyup,
{document.addEventListener(keyup,
{this.checkParam()}},checkParam
{Message.error(请先输入账号密码)}this.$refs.verify.show()},login
params.captchaVerification}).then(res
{Message.success(登录成功)this.$router.push(/index)}
{Message.error(res.message)}})}}
dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-thymeleaf/artifactId
com.qiangesoft.captcha.config;import
org.springframework.context.annotation.Configuration;
org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
org.springframework.web.servlet.config.annotation.WebMvcConfigurer;/***
addResourceHandlers(ResourceHandlerRegistry
{registry.addResourceHandler(/static/**).addResourceLocations(classpath:/static/);}
xmlns:thhttp://www.thymeleaf.org
nameviewportcontentwidthdevice-width,initial-scale1,minimum-scale1,maximum-scale1,user-scalableno/titleverify插件demo/titlelink
th:href{/static/css/verify.css}scriptif
srchttps://cdnjs.cloudflare.com/ajax/libs/es6-promise/4.1.1/es6-promise.min.js
srchttps://cdn.bootcdn.net/ajax/libs/jquery/1.9.1/jquery.js/script
th:src{/static/js/crypto-js.js}/script
th:src{/static/js/ase.js}/script
th:src{/static/js/verify.js}/scriptscript//
滑块$(#mpanel).slideVerify({baseUrl:
$(#password).val();$.ajax({url:
params.captchaVerification}),success:
文字点击$(#mpanel1).pointsVerify({baseUrl:
http://localhost:8028,containerId:
$(#password).val();$.ajax({url:
params.captchaVerification}),success:
功能描述请求方式获取验证码/captcha/getpost核对验证码/captcha/checkpost
71dd26999e314f9abb0c635336976635,
71dd26999e314f9abb0c635336976635
71dd26999e314f9abb0c635336976635,result:
码云https://gitee.com/qiangesoft/boot-business/tree/master/boot-business-captcha
作为专业的SEO优化服务提供商,我们致力于通过科学、系统的搜索引擎优化策略,帮助企业在百度、Google等搜索引擎中获得更高的排名和流量。我们的服务涵盖网站结构优化、内容优化、技术SEO和链接建设等多个维度。
| 服务项目 | 基础套餐 | 标准套餐 | 高级定制 |
|---|---|---|---|
| 关键词优化数量 | 10-20个核心词 | 30-50个核心词+长尾词 | 80-150个全方位覆盖 |
| 内容优化 | 基础页面优化 | 全站内容优化+每月5篇原创 | 个性化内容策略+每月15篇原创 |
| 技术SEO | 基本技术检查 | 全面技术优化+移动适配 | 深度技术重构+性能优化 |
| 外链建设 | 每月5-10条 | 每月20-30条高质量外链 | 每月50+条多渠道外链 |
| 数据报告 | 月度基础报告 | 双周详细报告+分析 | 每周深度报告+策略调整 |
| 效果保障 | 3-6个月见效 | 2-4个月见效 | 1-3个月快速见效 |
我们的SEO优化服务遵循科学严谨的流程,确保每一步都基于数据分析和行业最佳实践:
全面检测网站技术问题、内容质量、竞争对手情况,制定个性化优化方案。
基于用户搜索意图和商业目标,制定全面的关键词矩阵和布局策略。
解决网站技术问题,优化网站结构,提升页面速度和移动端体验。
创作高质量原创内容,优化现有页面,建立内容更新机制。
获取高质量外部链接,建立品牌在线影响力,提升网站权威度。
持续监控排名、流量和转化数据,根据效果调整优化策略。
基于我们服务的客户数据统计,平均优化效果如下:
我们坚信,真正的SEO优化不仅仅是追求排名,而是通过提供优质内容、优化用户体验、建立网站权威,最终实现可持续的业务增长。我们的目标是与客户建立长期合作关系,共同成长。
Demand feedback