【Skill 创作】小程序发短信前自建拼图验证码

1、Skill 简介

Skill 叫 miniprogram-puzzle-captcha,专门解决「短信验证码被刷、只靠本地滑块没用」的问题:后端生成拼图和正确答案进 Redis,小程序弹窗拼图,通过后带着 uuid + 位移再发短信,顺带做了简单限流。适合要做小程序短信、又不想立刻上商业验证码的团队。


2、使用场景

登录短信、任何「点一下就能狂发短信」的接口,以前要么裸发,要么前端划一下就算人——脚本照样能打接口。我做它是因为业务里真有发短信成本和安全压力,希望至少 答案在服务端、一次校验消耗掉,而不是骗自己。做完以后,产品不用改流程,开发照着 Skill 接组件和接口就行,少扯几次皮。


3、创作过程

先在另一个项目里看过「拼图 + 发短信」的套路,想清楚三件事:uuid 谁生成、坐标怎么存 Redis、短信接口怎么校验和删缓存。然后在 his-his 里加了生成图和校验逻辑,kxyl-hospital-mini 里做了 puzzle-captcha 组件,点击「获取验证」再弹窗,避免验证码占一整屏。最后在仓库里写了 Skill,把路径、接口、禁止纯前端当防刷写死,方便以后换页面复用。没记完整提示词,核心就是:先定契约(字段名、流程),再写代码,最后沉淀成文档


4、使用步骤

  • 在 SOLO 里需要接短信防刷时,直接点名或引用 miniprogram-puzzle-captcha Skill。

  • 对照 Skill 把小程序页面挂上组件、弹窗触发、成功后调 sendSmsCode 带上 uuidcaptcha

  • 后端对齐 /miniapp/slider/captcha 和带校验的 sendSmsCode,Redis 能连上即可。

  • 限流阈值按业务在 Skill 说明里改常量,别抄死线上数值。


5、效果展示


6、Skill 链接

https://gitee.com/cici_2024/slider-captcha


7、总结与思考

最大的收获是:防刷一定要后端消耗掉一次 token,前端再好看也只是门槛。

后面可能会把拼图生成单独抽服务、或对接云厂商验证码,Skill 里会区分「自建」和「商用」两条路径。

欢迎真按短信场景跑一遍,如果发现文案不顺手或限流太严,直接说你的并发和业务口径,我再改一版 Skill 描述。

你u​:ox: :+1:

1 个赞

厉害,是经过实战考验的

2 个赞

太厉害了迟总

2 个赞

上一个项目被人脚本攻击过,忘了做防刷

1 个赞

汤总才是真神

1 个赞