笔者是渣渣phper
最近在做小程序,小程序内含有评论,评测时收到了来自官方的友好拒绝,
没办法,解决方案有两条,自动过滤和人工审核,考虑到用户友好性和减轻运营工作压力,走上了敏感词过滤的不归路。
于是,我们又走到了人生的岔路口,选择小程序自带的内容审核还是第三方收费的关键词过滤,或者是根据敏感词库自建。
首先本着为公司节约资源,第三方收费的脱敏系统被排除在外,我们瞄上了小程序官方的api,就走上了小程序的踩坑路。
首先第一个问题,原有项目自带有post请求类,直接请求,
$data=array('content'=>$checkContent);
第一个错误出现
{"errcode":47001,"errmsg":"data format error hint: [0361b767]"}
我开始怀疑了,原有项目自带有post请求,但post方法在项目中没有用到,会不会post方法有问题?于是,我就一条一条的断点,最后自己封装了个curl post方法,还是不行,再看看文档
string 是什么意思,看不懂,最后从这里发现了新大陆,
然后,代码改成这样
$data=json_encode(array('content'=>$checkContent));
我打印了请求,但是发现不管输入啥,全部返回ok,o你妹的k啊,小程序接口有bug吧?挂了吧?这都半夜了,小程序是在维护吧?
项目急着上线啊,小程序不能用啊,只能自建了,于是转向到搜索敏感词库,找到了以下几个库,
https://github.com/jkiss/sensitive-words
https://github.com/wulijun/php-ext-trie-filter
https://www.ctolib.com/mip/yankewei-laravel-sensitive.html
https://github.com/FireLustre/php-dfa-sensitive/blob/master/README.md
最后综合了第一个和第四个,快速实现了一个敏感词过滤,代码上线了,小程序提测了,这时候已经是晚上1点了
睡觉去。小程序这么大的平台怎么可能会有问题?我一遍一遍的问自己。迷迷糊糊睡着了。
第二天起来,地铁上,我开始搜索:“小程序内容审核api无效”,发现和我一样的问题还不少,官方的回答都是
自测了一下,我都符合呀,我没问题呀,看到了一个Python的代码,提示的是编码问题,我就开始想,是不是我的也有问题,于是我换了个关键词:
“php调用msgSecCheck”,发现了新大陆;
https://developers.weixin.qq.com/community/develop/doc/0000020aae8510057b47117575b000
找到了答案,
代码改成这样,
$data=json_encode(array('content'=>$checkContent),JSON_UNESCAPED_UNICODE);
通过,替换自建敏感词为小程序,虽然网上说小程序的过滤也不是十分准确,但是,毕竟自己家的孩子。
总结:
对小程序的文档不熟悉,也没仔细看,第一个坑就踩着了
第二个坑,其实我是知道的,只是没有想到这里而已。
补充:
自建敏感词系统其实要解决很多问题,除掉词库,还有处理夹杂拼音的脱敏、其他符号夹杂的脱敏、倒序的脱敏、屌丝与屌这类的脱敏。