微信小程序发布需要校验敏感信息(内容、图片)-Java后端实现

article/2025/5/6 22:42:40

精选30+云产品,助力企业轻松上云!>>> hot3.png

前端只需要将图片和内容传过来即可

pom依赖

HttpClient的依赖和json转换的依赖

<dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.54</version>
</dependency>
<dependency><groupId>org.apache.httpcomponents</groupId><artifactId>httpclient</artifactId><version>4.5.10</version>
</dependency>

封装Vo类

用于获取到access_token后进行转换,access_token是什么就不用我多说了吧

public class AccessTokenVO {private String access_token;private Integer expires_in;//记得给get set方法
}

封装工具类

import com.alibaba.fastjson.JSONObject;
import com.itheima.fete.pojo.AccessTokenVO;
import org.apache.http.HttpEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.ByteArrayEntity;
import org.apache.http.entity.ContentType;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
import org.springframework.web.multipart.MultipartFile;import java.io.*;
import java.util.*;/*** @author manlu*/
public class SenInfoCheckUtil {/*** 图片违规检测,对外提供,直接使用** @param accessToken* @param file* @return*/public static Boolean imgFilter(String accessToken, MultipartFile file) {String contentType = file.getContentType();return checkPic(file, accessToken, contentType);}/*** 文本违规检测,对外提供,直接使用** @param accessToken* @param content* @return*/public static Boolean cotentFilter(String accessToken, String content) {return checkContent(accessToken, content);}/*** 校验图片是否有敏感信息** @param multipartFile* @return*/private static Boolean checkPic(MultipartFile multipartFile, String accessToken, String contentType) {try {CloseableHttpClient httpclient = HttpClients.createDefault();CloseableHttpResponse response = null;HttpPost request = new HttpPost("https://api.weixin.qq.com/wxa/img_sec_check?access_token=" + accessToken);request.addHeader("Content-Type", "application/octet-stream");InputStream inputStream = multipartFile.getInputStream();byte[] byt = new byte[inputStream.available()];inputStream.read(byt);request.setEntity(new ByteArrayEntity(byt, ContentType.create(contentType)));response = httpclient.execute(request);HttpEntity httpEntity = response.getEntity();String result = EntityUtils.toString(httpEntity, "UTF-8");// 转成stringJSONObject jso = JSONObject.parseObject(result);return getResult(jso);} catch (Exception e) {e.printStackTrace();return true;}}/*** 校验内容是否有敏感信息* @param accessToken* @param content* @return*/private static Boolean checkContent(String accessToken, String content) {try {CloseableHttpClient httpclient = HttpClients.createDefault();CloseableHttpResponse response = null;HttpPost request = new HttpPost("https://api.weixin.qq.com/wxa/msg_sec_check?access_token=" + accessToken);request.addHeader("Content-Type", "application/json");Map<String, String> map = new HashMap<>();map.put("content", content);String body = JSONObject.toJSONString(map);request.setEntity(new StringEntity(body, ContentType.create("text/json", "UTF-8")));response = httpclient.execute(request);HttpEntity httpEntity = response.getEntity();String result = EntityUtils.toString(httpEntity, "UTF-8");// 转成stringJSONObject jso = JSONObject.parseObject(result);return getResult(jso);} catch (Exception e) {e.printStackTrace();return true;}}/*** 返回状态信息,可以修改为自己的逻辑* @param jso* @return*/private static Boolean getResult(JSONObject jso) {Object errcode = jso.get("errcode");int errCode = (int) errcode;if (errCode == 0) {return true;} else if (errCode == 87014) {return false;} else {return false;}}/*** 获取小程序的 access_token* @return*/public static String getAccessToken() {AccessTokenVO accessTokenVO = null;try {CloseableHttpClient httpclient = HttpClients.createDefault();CloseableHttpResponse response = null;//改成自己的appid和secretHttpGet request = new HttpGet("https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=wxbh0594d32gf315&secret=c9864f6e8aafg8313b6d5d608bd6a6b");request.addHeader("Content-Type", "application/json");response = httpclient.execute(request);HttpEntity httpEntity = response.getEntity();String result = EntityUtils.toString(httpEntity, "UTF-8");// 转成stringaccessTokenVO = JSONObject.parseObject(result, AccessTokenVO.class);//返回tokenreturn accessTokenVO.getAccess_token();} catch (IOException e) {e.printStackTrace();}return null;}
}

编写Controller层

import com.itheima.fete.utils.SenInfoCheckUtil;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;import java.io.IOException;/*** @author 漫路h* 校验内容是否敏感*/
@RestController
@RequestMapping("/check")
public class CheckController {/*** 校验内容* @param content* @return* @throws IOException*/@GetMapping("/content/{content}")public Boolean checkContent(@PathVariable String content) {String accessToken = SenInfoCheckUtil.getAccessToken();return SenInfoCheckUtil.cotentFilter(accessToken, content);}/*** 校验图片* @param multipartFile* @return*/@PostMapping("/image")public Boolean checkImage(@RequestPart(value = "file") MultipartFile multipartFile){String accessToken = SenInfoCheckUtil.getAccessToken();return SenInfoCheckUtil.imgFilter(accessToken, multipartFile);}
}

如果不明白就问,如果需要uniapp代码的kou我


http://chatgpt.dhexx.cn/article/8RuxZB2K.shtml

相关文章

SpringBoot调用微信小程序敏感词拦截接口

SpringBoot调用微信小程序敏感词拦截接口 获取接口调用凭据 | 微信开放文档 (qq.com) 在调用微信小程序安全识别接口时需要先拿到&#xff0c;小程序的token令牌&#xff0c;需要调用下面这个接口 https://api.weixin.qq.com/cgi-bin/token?grant_typeclient_credential&am…

微信小程序通过云函数调用安全api,实现敏感词校验

如题&#xff0c;话不多说&#xff0c;直接上代码 1.首先需要在小程序中引入云函数框架 1.1在project.config.json中添加设置&#xff0c;同时在小程序根目录新建cloudfunctions文件夹 "cloudfunctionRoot": "cloudfunctions/" 1.2在app.json中添加设置…

php屏蔽词库,PHP调用微信过滤敏感词汇API

之前写过一篇过滤敏感词汇的文章,但是最近临近国庆,小程序提高了安全能力得检测,审核变得更加严格,要求自定义昵称、头像、签名等必须要有过滤敏感词汇得机制,严格上之前那边文章也可以过滤,但是具体微信过滤得内容就不得而知了,所以,今天就分享一下PHP利用微信小程序的…

微信小程序敏感词过滤

当你的小程序有用户提交&#xff08;评论、文章、图片&#xff09;时&#xff0c;如果你的代码没有过滤敏感词汇&#xff0c;将会审核不通过&#xff0c;幸好官方提供了API&#xff0c;方便了很多&#xff0c;废话不多说&#xff0c;干&#xff01; 本文只有文字过滤 本文采用…

企业微信又更新了!聊天敏感词、下载直播回放视频、聊天文件支持10GB...

企业微信版本已更新至3.0.36&#xff0c;还没有更新的速速去升级啦&#xff01; 一、客户联系功能增强 企业可设置聊天敏感词&#xff0c;设置后将下载到成员的企业微信。当成员发送给客户的消息包含敏感词时&#xff0c;将予以提示或发送失败。 登录企业微信管理后台在客户联…

Java实现微信小程序文本内容敏感词检查

1.背景2.策略3.实现1. 调用auth.getAccessToken&#xff0c;获取接口调用凭证2. 调用security.msgSecCheck检测文本内容 4.遇到的问题5.工具类完整代码6.使用方式 1.背景 发布小程序的时候&#xff0c;没有通过审核&#xff0c;审核结果为 提示要完善内容审核机制。 2.策略 …

普通微信如何设置敏感词监控?以及企业微信敏感词监控拦截

微信作为一个广泛使用的社交平台&#xff0c;拥有庞大的用户群体&#xff0c;这使得微信营销在企业的市场推广中扮演着重要的角色。通过微信营销&#xff0c;企业可以获得一定程度的业绩增长。然而&#xff0c;随着企业规模的扩大&#xff0c;微信营销也面临着一些挑战和盲区。…

微信小程序安全系列——文本内容安全识别

前言 相信很多朋友跟我遇到过相同的问题&#xff0c;就是在开发一些笔记或者博客的时候&#xff0c;会遇到一些过滤敏感、时政、黄、赌、毒这类词汇、句子等这种棘手问题。 今天我们看一下微信小程序提供的文本安全内容识别&#xff0c;也可以减少一些我们的工作量。通过微信…

常用的文本去重代码:

常用的文本去重代码&#xff1a; 本代码用到了simhash库&#xff08;https://github.com/yanyiwu/simhash&#xff09; import re import os from pathlib import Path import json from simhash import Simhashdef droplike(lines):def distance(v1, v2, f64):x (v1 ^ v2) …

simhash海量文本去重的工程化

https://yuerblog.cc/2018/05/30/simhash-text-unique-arch/ simhash算法是google发明的&#xff0c;专门用于海量文本去重的需求&#xff0c;所以在这里记录一下simhash工程化落地问题。 下面我说的都是工程化落地步骤&#xff0c;不仅仅是理论。 背景 互联网上&#xff0…

自然语言处理学习笔记5:去重处理之使用SimHash进行海量文本去重

摘要: 传统的Hash算法只负责将原始内容尽量均匀随机地映射为一个签名值&#xff0c;原理上仅相当于伪随机数产生算法。传统的hash算法产生的两个签名&#xff0c;如果原始内容在一定概率下是相等的&#xff1b;如果不相等&#xff0c;除了说明原始内容不相等外&#xff0c;不再…

python编写url文本去重和url探测存活一体化工具

因为项目需要&#xff0c;长时间使用360的quake和奇安信的hunter进行资产收集。但是收集到的资产很多无法访问&#xff0c;hunter的都是200。所以写了一个简单的脚本&#xff0c;让quake和hunter进行对比&#xff0c;去掉重复部分&#xff0c;然后再探测存活&#xff0c;存活ur…

使用NotePad++快速实现字符串统计/抽取,以及使用Notepad进行文本去重

软件测试技术交流群 : 1、QQ交流群&#xff1a;群号 429183023 2、添加JeongJinWin&#xff0c;或者扫描头像二维码 背景&#xff1a;日常工作中&#xff0c;可能在Windows下需要对一些文本进行解析&#xff0c;抽取出某种类型的字段、或者特定字符串&#xff0c;在Linux下可…

在线文本去重统计工具

在线文本去重统计工具 在线文本去重统计工具 本工具可以统计文本列表的重复项以及统计每个重复项出现的次数。 本工具可以统计文本列表的重复项以及统计每个重复项出现的次数。 本工具可以统计文本列表的重复项以及统计每个重复项出现的次数。 https://tooltt.com/unique/

论__大量文本内容去重的方式

论__大量文本内容去重的方式 本文由 Luzhuo 编写,请尊重个人劳动成果,转发请保留该信息. 原文: http://blog.csdn.net/Rozol/article/details/50640179 微博: http://weibo.com/u/2524456400 最近拿到大量的文本文件,文件的大小少个几十M,多则几十G,这么多且大的文本想必有很…

[039]文本去重、过滤——文本指纹

1. 文本指纹介绍 互联网网页存在大量的重复内容网页&#xff0c;无论对于搜索引擎的网页去重和过滤、新闻小说等内容网站的内容反盗版和追踪、还是社交媒体等文本去重和聚类&#xff0c;都需要对网页或者文本进行去重和过滤。 最简单的文本相似性计算方法可以利用空间向量模型&…

TXT文本去重 TXT去重 TXT文本合并去重工具 —— 20亿行130GB的数据只需60分钟

例如&#xff1a;多个TXT大数据文本文件合并以及文本行去重 130GB20亿行数据60分钟即可完成去重操作 测试数据大小&#xff1a;20亿行130GB的数据只需60分钟 平均去重速度&#xff1a;2000000000(行) 3600(秒) ‬ 555555(行/秒)≈55万行/秒 作者QQ&#xff1a;24759362 以…

文本去重:sim哈希算法

站在巨人_啊哈、zstu_翊、lengye7、黑夜路人的肩膀上~ 分析数据前&#xff0c;我们需要对数据去重&#xff0c;如何选择和设计文本的去重算法&#xff1f; 常见的去重算法有&#xff1a;余弦夹角算法、欧式距离、Jaccard相似度、最长公共子串、编辑距离等。这些算法是先将两篇文…

文本去重的技术方案讨论(一)

转发请注明出处&#xff1a;https://blog.csdn.net/HHTNAN 对于文本去重来说&#xff0c;我个人处理上会从数据量、文本特征、文本长度&#xff08;短文本、长文本&#xff09;几个方向考虑。 常见的去重任务&#xff0c;如网页去重&#xff0c;帖子去重&#xff0c;评论去重等…

git 生成公钥 及使用笔记

1.输入 ssh-keygen -t rsa -C 2101419675qq.com 2.一路回车&#xff0c; 提示输入文件名和密码都直接回车 3.公钥就生成了&#xff0c;路径为 4.在GitHub或gittree中直接将id_rsa.pub中的内的内容加在sskey中就行 下面是gittree 5.其它 mkdir test cd test git init touch …