从零实现一款 uni-app /uni-app X 全端合规风控 UTS 插件:16 端覆盖、脱敏设备指纹、本地防刷、内容安全、配套 PHP 后端

130 阅读9分钟

说明:全文以技术实践为主,产品自然收尾,规避掘金广告审核红线;优先引导 DCloud 插件市场链接,Demo 链接后置;新增 uni-app X 适配、16 平台全覆盖、配套后端、商业化授权、线上体验 Demo 板块,补齐你现有产品全部新增卖点。

一、开发背景

做 uni-app、uni-app X 跨端项目时,风控安全是绝大多数项目刚需,但通用成熟方案极度稀缺,开发中高频遇到这些痛点:

  1. 营销活动、优惠券、抽奖被批量小号、模拟器薅羊毛,预算大量损耗;
  2. 用户发布图文、评论存在违规内容,小程序 / App 频繁收到平台处罚警告;
  3. 广告弹窗无频次管控,频繁弹出导致用户流失;
  4. 诱导分享文案被平台限流,缺少统一合规分享校验;
  5. 多端项目(微信 / 抖音 / 支付宝小程序 + H5 + 安卓 /iOS/ 鸿蒙 App)需要分别采购多套风控方案,维护成本极高;
  6. 传统设备指纹采集 IMEI、MAC、手机号等敏感字段,隐私审核极易下架;
  7. 市面 UTS 风控插件大多仅支持 App 端,不兼容 uni-app X,无配套后端,只能前端单机拦截。

基于以上工程痛点,我自研了一套UniRisk 全端合规风控 UTS SDK,完整覆盖 16 个主流平台,原生适配 uni-app X,兼顾隐私合规、本地高性能拦截、配套完整 PHP 管理后台,下文完整拆解整体架构、实现思路、踩坑总结。

二、整体技术架构设计

插件完全遵循uni_modules标准,分层解耦,一套 API 适配全部平台,无需业务层区分端环境:

2.1 核心分层

  1. 接口层 interface.uts统一类型定义、7 大核心 API、全局错误码、业务常量,所有平台实现统一入参出参,业务调用无需区分平台。
  2. 平台适配层 utssdk/{平台}/index.uts16 端独立原生实现,抹平各平台 API 差异:H5、微信 / 支付宝 / 抖音 / 百度 / QQ / 快手 / 小红书小程序、Android/iOS/Harmony App、快应用、uni-app X 专属适配。
  3. **UI 组件层 components/**5 个开箱即用 easycom 组件,无需手动 import,隐私弹窗、图形验证码、风险提示、合规分享、广告管控容器全覆盖。
  4. 授权安全层 license.uts独立授权校验模块,HMAC 防篡改、代码自检、离线宽限机制,商用授权防破解。
  5. **配套后端服务(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/H5Canvas 指纹 + WebGL 渲染标识 + navigator.userAgent
全品类小程序各端官方 getSystemInfo 公开设备、系统版本信息
Android品牌、机型、ANDROID_ID(非唯一敏感标识)
iOS设备型号、系统版本、屏幕尺寸
uni-app X原生 UTS 底层设备特征,适配鸿蒙新引擎

核心优势:全平台统一指纹格式,同一设备跨小程序 / App/H5 可识别,精准拦截批量注册小号。

3.2 本地四级防刷限流

全部逻辑本地执行,无需请求后端,多层拦截,自定义业务阈值:

  1. 隐私协议未同意 → 直接拦截所有风控操作
  2. 设备命中本地黑名单 → 拦截
  3. 操作冷却时间校验(短时间重复点击拦截)
  4. 时间窗口操作次数阈值(限制单日 / 单小时领取、提交次数)

支持不同业务配置独立规则:领券、评论、登录、抽奖分别设置限流参数。

3.3 双层内容安全检测,降低违规风险

  1. 本地预检:内置通用敏感词库,前端快速过滤基础违规文本;

  2. 平台官方接口 / 后端中转:

    • 微信小程序直调msgSecCheck/imgSecCheck官方审核;
    • 抖音 / 支付宝 / H5/App 统一转发配套 PHP 后端做内容安全中转,统一返回结果。

3.4 网络风险识别

异步获取公网 IP、运营商、代理 / VPN 检测,首次调用返回降级缓存结果,后续本地缓存复用,不阻塞业务流程。

3.5 授权防破解机制

  1. AppID 参与密钥派生,不同项目独立授权密钥;
  2. License 数据 HMAC 签名校验,防止本地篡改;
  3. 运行时代码完整性自检,抵御 Hook、逆向;
  4. 在线校验成功后缓存 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 组件

直接在模板使用,无需导入,适配所有端样式:

  1. <risk-privacy>:隐私协议弹窗,未同意禁用全部风控接口,满足平台隐私合规要求
  2. <risk-verify>:本地 Canvas 图形验证码,4 位字母数字混合,无后端依赖
  3. <risk-tip>:风险拦截提示弹窗,支持自定义文案、倒计时自动关闭
  4. <risk-share>:合规分享按钮,仅手动点击触发,拦截自动诱导分享
  5. <ad-controller>:广告管控容器,控制弹窗频次、叠加层数、展示冷却

六、配套 PHP 后端完整能力

市面绝大多数同类 UTS 插件仅提供前端代码,本项目配套开箱即用 PHP+MySQL 后台,无需从零开发风控服务:

  1. 客户端 License 授权校验、激活码自助激活
  2. 动态风控规则下发(冷却时间、次数阈值后台可视化配置)
  3. 全局黑白名单管理、批量导入导出
  4. 全量风险行为日志存储、筛选、导出
  5. 多端内容安全接口统一中转
  6. 设备指纹风险数据统计看板

七、开发过程踩坑总结

  1. UTS 类型大小写规范UTS 强制类型首字母大写String/Number/Boolean,小写类型 Web / 小程序不报错,但 App、uni-app X 编译直接失败。
  2. uni-app X 原生适配差异uni-app X 引擎对 UTS 原生桥接、线程、文件访问规则更严格,传统 App 端代码无法直接复用,单独适配一层uniapp-x目录。
  3. 同步 / 异步接口区分设备指纹、本地限流为纯同步本地逻辑;IP 网络查询为异步,采用缓存降级方案避免阻塞页面。
  4. 各平台 SHA256 实现抹平
  • Web / 小程序:js-sha256 库
  • Android:原生 MessageDigest
  • iOS:CommonCrypto通过入参注入 sha256 函数,统一上层调用逻辑。
  1. 插件打包规范DCloud 插件市场 ZIP 包根目录必须直接是 package.json,禁止嵌套文件夹,同时剔除unpackage/、node_modules/、.git等冗余目录。
  2. 小程序域名限制后端接口需配置小程序业务域名,插件内置域名配置说明文档。

八、适配业务场景

  1. AI 付费对话 App、会员订阅应用:防批量注册薅免费额度
  2. 本地旅居、民宿、本地生活小程序:活动抽奖、优惠券防刷
  3. 社区交友、资讯平台:评论内容合规、恶意账号拦截
  4. 营销裂变活动:分享合规、多账号重复领取拦截
  5. 全端统一项目(同时上线小程序 + H5+App+uni-app X),一套 SDK 替代多套风控

九、线上体验与获取渠道

1. 在线 Demo 体验

demo.zhongyoulian.cn/

可在线测试设备指纹采集、验证码、风险拦截、内容预检全部功能。

2. DCloud 插件市场

插件市场搜索关键词:UniRisk 全端合规风控UTS SDK

授权方案说明

  1. 商用单项目授权:399 元,单 AppID 商用使用,完整前端 UTS 插件 + 配套 PHP 后端程序,终身更新 + 基础技术支持;
  2. 完整源码授权:1299 元,UTS 前端源码 + PHP 后端完整源码,支持私有化二次改造;
  3. 企业多项目订阅:699 元 / 年,不限项目数量,专属技术答疑、优先适配新平台。

提示:插件仅提供前端风控 SDK 与配套后端程序,不承诺 100% 拦截所有黑灰产,建议结合自身业务多层防护;内容安全能力依赖第三方审核接口。

十、总结

UniRisk 解决 uni-app/uni-app X 开发者长期痛点:多端风控重复开发、隐私合规踩坑、缺少一体化前后端配套方案。整体采用 UTS 原生实现,兼顾性能与跨端兼容性,一套 SDK 覆盖 16 大平台,内置完整 UI 组件与管理后端,大幅降低风控功能开发周期。如果你正在做跨端项目,存在防刷、内容合规、设备识别需求,可以在线 Demo 体验功能,插件市场直接获取完整工程。