说明:全文以技术实践为主,产品自然收尾,规避掘金广告审核红线;优先引导 DCloud 插件市场链接,Demo 链接后置;新增 uni-app X 适配、16 平台全覆盖、配套后端、商业化授权、线上体验 Demo 板块,补齐你现有产品全部新增卖点。
一、开发背景
做 uni-app、uni-app X 跨端项目时,风控安全是绝大多数项目刚需,但通用成熟方案极度稀缺,开发中高频遇到这些痛点:
- 营销活动、优惠券、抽奖被批量小号、模拟器薅羊毛,预算大量损耗;
- 用户发布图文、评论存在违规内容,小程序 / App 频繁收到平台处罚警告;
- 广告弹窗无频次管控,频繁弹出导致用户流失;
- 诱导分享文案被平台限流,缺少统一合规分享校验;
- 多端项目(微信 / 抖音 / 支付宝小程序 + H5 + 安卓 /iOS/ 鸿蒙 App)需要分别采购多套风控方案,维护成本极高;
- 传统设备指纹采集 IMEI、MAC、手机号等敏感字段,隐私审核极易下架;
- 市面 UTS 风控插件大多仅支持 App 端,不兼容 uni-app X,无配套后端,只能前端单机拦截。
基于以上工程痛点,我自研了一套UniRisk 全端合规风控 UTS SDK,完整覆盖 16 个主流平台,原生适配 uni-app X,兼顾隐私合规、本地高性能拦截、配套完整 PHP 管理后台,下文完整拆解整体架构、实现思路、踩坑总结。
二、整体技术架构设计
插件完全遵循uni_modules标准,分层解耦,一套 API 适配全部平台,无需业务层区分端环境:
2.1 核心分层
- 接口层 interface.uts统一类型定义、7 大核心 API、全局错误码、业务常量,所有平台实现统一入参出参,业务调用无需区分平台。
- 平台适配层 utssdk/{平台}/index.uts16 端独立原生实现,抹平各平台 API 差异:H5、微信 / 支付宝 / 抖音 / 百度 / QQ / 快手 / 小红书小程序、Android/iOS/Harmony App、快应用、uni-app X 专属适配。
- **UI 组件层 components/**5 个开箱即用 easycom 组件,无需手动 import,隐私弹窗、图形验证码、风险提示、合规分享、广告管控容器全覆盖。
- 授权安全层 license.uts独立授权校验模块,HMAC 防篡改、代码自检、离线宽限机制,商用授权防破解。
- **配套后端服务(PHP+MySQL)**完整 6 套业务接口 + 建表 SQL,提供风控规则下发、黑白名单、风险日志、授权激活、内容安全中转全能力,市面同类插件极少配套后端。
2.2 项目完整目录结构
bash
uni_modules/unirisk-sdk/
├── components/ # 5个easycom UI组件
├── docs/ # 完整接入文档、隐私说明、FAQ
├── static/icons/ # 内置SVG图标
├── utssdk/
│ ├── interface.uts # 统一接口定义
│ ├── license.uts # License授权校验
│ ├── web/index.uts
│ ├── mp-weixin/mp-alipay/mp-toutiao/... # 各小程序适配
│ ├── app-android/app-ios/app-harmony/ # 三端App原生UTS
│ └── uniapp-x/ # uni-app X专属原生适配
├── changelog.md
├── license.md
├── package.json
└── readme.md
三、核心功能实现方案
3.1 合规脱敏设备指纹
摒弃 IMEI、MAC、手机号、定位等敏感隐私字段,仅采集各平台公开无害设备特征,通过 SHA-256 生成 64 位不可逆哈希指纹,完美规避平台隐私合规审查。
表格
| 平台 | 采集公开特征 |
|---|---|
| Web/H5 | Canvas 指纹 + WebGL 渲染标识 + navigator.userAgent |
| 全品类小程序 | 各端官方 getSystemInfo 公开设备、系统版本信息 |
| Android | 品牌、机型、ANDROID_ID(非唯一敏感标识) |
| iOS | 设备型号、系统版本、屏幕尺寸 |
| uni-app X | 原生 UTS 底层设备特征,适配鸿蒙新引擎 |
核心优势:全平台统一指纹格式,同一设备跨小程序 / App/H5 可识别,精准拦截批量注册小号。
3.2 本地四级防刷限流
全部逻辑本地执行,无需请求后端,多层拦截,自定义业务阈值:
- 隐私协议未同意 → 直接拦截所有风控操作
- 设备命中本地黑名单 → 拦截
- 操作冷却时间校验(短时间重复点击拦截)
- 时间窗口操作次数阈值(限制单日 / 单小时领取、提交次数)
支持不同业务配置独立规则:领券、评论、登录、抽奖分别设置限流参数。
3.3 双层内容安全检测,降低违规风险
-
本地预检:内置通用敏感词库,前端快速过滤基础违规文本;
-
平台官方接口 / 后端中转:
- 微信小程序直调
msgSecCheck/imgSecCheck官方审核; - 抖音 / 支付宝 / H5/App 统一转发配套 PHP 后端做内容安全中转,统一返回结果。
- 微信小程序直调
3.4 网络风险识别
异步获取公网 IP、运营商、代理 / VPN 检测,首次调用返回降级缓存结果,后续本地缓存复用,不阻塞业务流程。
3.5 授权防破解机制
- AppID 参与密钥派生,不同项目独立授权密钥;
- License 数据 HMAC 签名校验,防止本地篡改;
- 运行时代码完整性自检,抵御 Hook、逆向;
- 在线校验成功后缓存 24 小时,提供 72 小时离线宽限期,断网不阻断业务。
3.6 全局降级容错策略
所有网络请求、原生接口异常统一返回degraded: true降级标记,不会直接阻断 App / 小程序业务,由业务层自主判断是否放行:
ts
// 网络异常降级返回示例
{
ip: '',
location: '',
isProxy: false,
carrier: '',
degraded: true // 标记降级,业务可自定义放行逻辑
}
四、7 个统一跨端核心 API
无需区分小程序 / App/H5/uni-app X,调用方式完全一致:
表格
| API | 功能 | 返回核心字段 |
|---|---|---|
getDeviceFinger() | 获取脱敏设备指纹 | finger 设备标识、platform 平台、timestamp、degraded 降级标记 |
checkLocalRisk(action, config) | 本地防刷限流校验 | pass 是否放行、reason 拦截原因、code 错误码、remainingCount 剩余可操作次数 |
getNetworkInfo() | IP / 代理 / 运营商风险检测 | ip、location、isProxy、carrier、degraded |
contentCheck(params) | 文本 / 图片内容安全审核 | pass、风险类型、违规详情、错误码 |
adControl(action) | 广告弹窗频次管控 | canShow 是否允许弹出、reason、code |
reportRiskLog(log) | 风险行为日志上报后端 | Boolean 上报结果 |
initShareConfig(config) | 合规分享校验,拦截诱导裂变文案 | Boolean 初始化结果 |
极简接入示例代码
ts
// 页面引入,3行完成基础初始化+设备指纹+风险校验
import { initLicense, getDeviceFinger, checkLocalRisk } from '@/uni_modules/unirisk-sdk/utssdk'
// 初始化授权(传入项目AppID与后端地址)
initLicense({ appid: '你的项目AppID', backendUrl: '你的后端域名' })
// 获取设备指纹
const deviceFinger = getDeviceFinger()
// 校验提交操作防刷
const riskRes = checkLocalRisk('submit', { coolTime: 30, maxTimes: 5 })
if (!riskRes.pass) {
uni.showToast({ title: riskRes.reason, icon: 'none' })
}
五、5 个开箱即用 Easycom UI 组件
直接在模板使用,无需导入,适配所有端样式:
<risk-privacy>:隐私协议弹窗,未同意禁用全部风控接口,满足平台隐私合规要求<risk-verify>:本地 Canvas 图形验证码,4 位字母数字混合,无后端依赖<risk-tip>:风险拦截提示弹窗,支持自定义文案、倒计时自动关闭<risk-share>:合规分享按钮,仅手动点击触发,拦截自动诱导分享<ad-controller>:广告管控容器,控制弹窗频次、叠加层数、展示冷却
六、配套 PHP 后端完整能力
市面绝大多数同类 UTS 插件仅提供前端代码,本项目配套开箱即用 PHP+MySQL 后台,无需从零开发风控服务:
- 客户端 License 授权校验、激活码自助激活
- 动态风控规则下发(冷却时间、次数阈值后台可视化配置)
- 全局黑白名单管理、批量导入导出
- 全量风险行为日志存储、筛选、导出
- 多端内容安全接口统一中转
- 设备指纹风险数据统计看板
七、开发过程踩坑总结
- UTS 类型大小写规范UTS 强制类型首字母大写
String/Number/Boolean,小写类型 Web / 小程序不报错,但 App、uni-app X 编译直接失败。 - uni-app X 原生适配差异uni-app X 引擎对 UTS 原生桥接、线程、文件访问规则更严格,传统 App 端代码无法直接复用,单独适配一层
uniapp-x目录。 - 同步 / 异步接口区分设备指纹、本地限流为纯同步本地逻辑;IP 网络查询为异步,采用缓存降级方案避免阻塞页面。
- 各平台 SHA256 实现抹平
- Web / 小程序:js-sha256 库
- Android:原生 MessageDigest
- iOS:CommonCrypto通过入参注入 sha256 函数,统一上层调用逻辑。
- 插件打包规范DCloud 插件市场 ZIP 包根目录必须直接是 package.json,禁止嵌套文件夹,同时剔除
unpackage/、node_modules/、.git等冗余目录。 - 小程序域名限制后端接口需配置小程序业务域名,插件内置域名配置说明文档。
八、适配业务场景
- AI 付费对话 App、会员订阅应用:防批量注册薅免费额度
- 本地旅居、民宿、本地生活小程序:活动抽奖、优惠券防刷
- 社区交友、资讯平台:评论内容合规、恶意账号拦截
- 营销裂变活动:分享合规、多账号重复领取拦截
- 全端统一项目(同时上线小程序 + H5+App+uni-app X),一套 SDK 替代多套风控
九、线上体验与获取渠道
1. 在线 Demo 体验
可在线测试设备指纹采集、验证码、风险拦截、内容预检全部功能。
2. DCloud 插件市场
插件市场搜索关键词:UniRisk 全端合规风控UTS SDK
授权方案说明
- 商用单项目授权:399 元,单 AppID 商用使用,完整前端 UTS 插件 + 配套 PHP 后端程序,终身更新 + 基础技术支持;
- 完整源码授权:1299 元,UTS 前端源码 + PHP 后端完整源码,支持私有化二次改造;
- 企业多项目订阅:699 元 / 年,不限项目数量,专属技术答疑、优先适配新平台。
提示:插件仅提供前端风控 SDK 与配套后端程序,不承诺 100% 拦截所有黑灰产,建议结合自身业务多层防护;内容安全能力依赖第三方审核接口。
十、总结
UniRisk 解决 uni-app/uni-app X 开发者长期痛点:多端风控重复开发、隐私合规踩坑、缺少一体化前后端配套方案。整体采用 UTS 原生实现,兼顾性能与跨端兼容性,一套 SDK 覆盖 16 大平台,内置完整 UI 组件与管理后端,大幅降低风控功能开发周期。如果你正在做跨端项目,存在防刷、内容合规、设备识别需求,可以在线 Demo 体验功能,插件市场直接获取完整工程。