小程序内容安全检测:如何避免被封禁?
之前我们聊过小程序截图的功能,尤其是图片上传和裁剪的部分。这个功能一直运行得不错,但突然有一天,我收到了一个系统消息:小程序存在内容安全风险,缺乏对不法违规内容的过滤机制,需要整改。如果不及时处理,小程序的一些功能可能会被禁用,比如无法被搜索、不能通过二维码打开、不能分享内容等。这对小程序的流量和用户体验影响非常大,所以必须尽快解决。
微信小程序的内容审核规范
在收到警告后,我仔细研究了微信小平台的运营规范,尤其是关于内容安全的部分。根据规范,小程序必须设置过滤机制,确保上传的文本和图片不包含违法、违规等不当信息。具体来说,微信要求者调用内容安全检测接口,对用户输入的文本和上传的图片进行审核,过滤色情、时政违规、暴恐等敏感内容。
微信小程序的内容安全检测接口
微信提供了两个主要的内容安全检测接口:文本检测接口和图片检测接口。这些接口基于智能程序进行判断,能够有效识别违规内容。图片检测还有一个专门的接口,用于判断单张图片是否违法违规。这些接口可以通过服务调用、云调用或第三方调用的方式实现。本文将重点介绍云调用的方式。
如何使用云函数进行内容安全检测
要在小程序中使用云服务,首先需要开启微信云服务。创建小程序时,选择开启云服务即可。需要注意的是,微信云服务是收费的,但有1个月的试用期,可以。
创建云函数
在已开启云服务的小程序项目中,右键点击云目录,选择创建云函数。比如,我们可以创建一个名为imageCheck
的云函数,用于处理图片检测。创建后,云目录下会生成一个名为imageCheck
的文件夹,里面包含三个文件:config.json
(云函数基本配置)、index.js
(云函数入口执行文件)和package.json
(云函数项目设置及包依赖)。
在config.json
文件中,我们需要配置接口权限,否则无法调用。云函数本质上是一个Node.js服务,所以本地环境中需要先安装Node.js。云函数默认依赖一个微信提供的包wx-server-sdk
,用于创建云对象。
编写图片检测代码
在index.js
文件中,我们可以编写图片检测的代码。首先初始化云对象,然后在入口函数中通过参数接收图片信息。图片需要以Buffer
格式传递,前端图片数据应为ArrayBuffer
格式。通过微信小程序提供的文件读取接口,我们可以将图片临时文件转换为ArrayBuffer
格式,然后调用云函数进行检测。
小程序图片上传与压缩
在小程序中,图片上传功能可以通过wx.chooseMedia
接口实现。用户可以从手机相册中选择图片上传,获取到图片的临时目录地址。如果图片尺寸较大或格式不符合要求,我们需要对图片进行压缩。
通过wx.getImageInfo
接口,我们可以获取图片的宽高信息,然后使用canvas
对图片进行压缩。压缩后的图片通过wx.canvasToTempFilePath
接口生成新的临时文件,接着就可以调用云函数进行安全检测了。
文本检测的实现
文本检测的流程与图片检测类似。在云函数中,我们需要传入文本内容,通过微信上下文对象获取用户输入的文本,然后调用文本检测接口进行审核。与图片检测相比,文本检测的数据处理和参数传递稍有不同,但整体流程基本一致。
人工审核的必要性
虽然微信提供了智能审核接口,但并不能完全解决问题。微信官方建议者最好进行人工审核,以弥补智能审核的不足。然而,人工审核需要上传用户的图片和文本,通过后台进行干预,这对很多小程序来说成本较高。如果小程序因为内容安全被封禁,申诉时微信客服可能会要求提供人工审核记录,这对于个人者来说,可能意味着小程序无法继续运营。
总结
通过微信小程序的内容安全检测接口,我们可以有效过滤违规内容,避免小程序被封禁。云调用是一种便捷的实现方式,尤其适合没有服务器资源的小程序者。然而,智能审核并不能完全替代人工审核,者需要根据实际情况选择合适的审核机制,确保小程序的内容安全。