头条/抖音小程序内容安全检测(违规词过滤)


文章目录

  • 头条/抖音小程序内容安全检测(违规词过滤)
  • 缘起
  • 环境说明
  • 开始
  • 说在最后


缘起

头条/抖音小程序在审核的时候都会要求待审核小程序有一项"关键词过滤"功能
要求对用户输入的内容进行检测
求问度娘无果,于是自己用SpringBoot+RestTemplate简单写了个demo
这个示例对于其他平台API请求依然适用
废话不多说,进正题

环境说明

不说明开发环境的都是耍流氓

首先交代下我开发使用的环境

在罗列环境前先强调一点:Spring 框架3.x下的RestTemplate可能会出现中文乱码问题,解决方案要么升级版本,要么问问度娘,这里就不再赘述

  • 操作系统: Win10 企业版 LTSC
  • JDK: 1.8.0_231
  • Maven: 3.3.9
  • IDEA: 2018.3.1
  • SpringBoot: 2.0.6.RELEASE

开始

首先看一眼官网文档说明

要求如图

违禁违规词检测python_JSON


因为需要access_token,所以我们应当先请求生成一个access_token(这是OAuth2.0协议规范,如果不太明白的小伙伴可以移步OAuth2.0简介)于是我们的请求步骤应该如下(因为是demo,没有考虑失败情况)

违禁违规词检测python_内容安全_02


流程搞懂了我们就可以直接上代码了:

  • 首先配置一个RestTemplate的Bean
@Configuration
public class RestConfig {
    @Bean
    public RestTemplate restTemplate(){
        return new RestTemplate();
    }
}
  • 然后在application.yml中增加请求地址,账号信息等(这样做的原因是为了将来在微服务架构下能迅速更改请求地址或者账户信息),其中appId和secret需要替换成你自己的
touTiao:
  	tokenUrl: https://developer.toutiao.com/api/apps/token?appid={1}&secret={2}&grant_type={3}
  	textUrl: https://developer.toutiao.com/api/v2/tags/text/antidirt
  	appId: {你自己的appId}
  	secret: {你自己的secret}
  	grantType: client_credential
  • 最后就是编写一个TestCtrl,这里说明下,因为access_token返回的是一个json数据,所以我们要用到alibaba.fastjson(自行在pom.xml中添加依赖)
@RestController
public class TestCtrl {
    @Autowired
    RestTemplate restTemplate;

    /*获取token地址*/
    @Value("${touTiao.tokenUrl}")
    private String TOKEN_URL;
    /*获取内容检查地址*/
    @Value("${touTiao.textUrl}")
    private String TEXT_URL;
    /*appid*/
    @Value("${touTiao.appId}")
    private String APP_ID;
    /*secret*/
    @Value("${touTiao.secret}")
    private String SECRET;
    /*授权范围*/
    @Value("${touTiao.grantType}")
    private String GRANT_TYPE;

    @GetMapping(value = "/test/{text}")
    public String test(@PathVariable String text) {
        /*请求token*/
        System.out.println("用户请求字段:" + text);
        String token = restTemplate.getForObject(TOKEN_URL, String.class, APP_ID, SECRET, GRANT_TYPE);
        token = (String) JSON.parseObject(token).get("access_token");
        /*请求内容检测*/
        /*设置请求头*/
        HttpHeaders headers = new HttpHeaders();
        headers.setContentType(MediaType.APPLICATION_JSON_UTF8);
        headers.set("X-Token",token);
        /*构建查询体*/
        String requestStr = "{\n" +
                "  \"tasks\": [\n" +
                "    {\n" +
                "      \"content\": \"" +text+"\"\n" +
                "    }\n" +
                "  ]\n" +
                "}";
        HttpEntity<String> entity = new HttpEntity<>(requestStr, headers);
        String result = restTemplate.postForObject(TEXT_URL, entity, String.class);
        return result;
    }
}

说在最后

一定要严格按照各大平台API要求的格式去请求

还有这个demo我就不测试了,怪尴尬的,要测试的都是敏感词汇,测了估计你就看不到这篇博客了

只要最后结果里的prob为1代表的就是违规内容

–完--