Commit 5b75e32175105dbe3642fd73160326ef8cd88363
1 parent
7cdf285e
易盾
Showing
7 changed files
with
784 additions
and
0 deletions
src/main/java/com/cnlive/shenhe/api/YiDunControllerApi.java
0 → 100644
| 1 | +package com.cnlive.shenhe.api; | |
| 2 | + | |
| 3 | +import com.alibaba.fastjson.JSONObject; | |
| 4 | +import com.cnlive.shenhe.entity.ShyYidun; | |
| 5 | +import com.cnlive.shenhe.serviceImpl.YiDunServiceImpl; | |
| 6 | +import com.cnlive.shenhe.utils.HttpClientUtils; | |
| 7 | +import com.cnlive.shenhe.utils.YiDunAntiFraudUtil; | |
| 8 | +import org.slf4j.Logger; | |
| 9 | +import org.slf4j.LoggerFactory; | |
| 10 | +import org.springframework.beans.factory.annotation.Autowired; | |
| 11 | +import org.springframework.stereotype.Controller; | |
| 12 | +import org.springframework.web.bind.annotation.PostMapping; | |
| 13 | +import org.springframework.web.bind.annotation.RequestMapping; | |
| 14 | +import org.springframework.web.bind.annotation.ResponseBody; | |
| 15 | + | |
| 16 | +import java.util.*; | |
| 17 | + | |
| 18 | +/** | |
| 19 | + * @Author: xujincheng | |
| 20 | + * @Date: 2020/3/26 13:43 | |
| 21 | + */ | |
| 22 | +@Controller | |
| 23 | +@RequestMapping("/api/yiDun") | |
| 24 | +public class YiDunControllerApi { | |
| 25 | + | |
| 26 | + private static Logger logger = LoggerFactory.getLogger(YiDunControllerApi.class); | |
| 27 | + | |
| 28 | + @Autowired | |
| 29 | + YiDunServiceImpl yiDunServiceImpl; | |
| 30 | + | |
| 31 | + /** | |
| 32 | + * 网站地址URL产品密钥ID,产品标识 | |
| 33 | + */ | |
| 34 | + private final static String SECRETID = "c7f33c191020bcc9cbacb7d70417fd2f"; | |
| 35 | + /** | |
| 36 | + * 网站地址URL产品私有密钥,服务端生成签名信息使用,请严格保管,避免泄露 | |
| 37 | + */ | |
| 38 | + private final static String SECRETKEY = "833222b4951a67a9bc63b5ed0c24d07d"; | |
| 39 | + /** | |
| 40 | + * 网站地址URL提交接口地址 | |
| 41 | + */ | |
| 42 | + private final static String URL_SUBMIT = "https://as.dun.163yun.com/v1/crawler/submit"; | |
| 43 | + | |
| 44 | + /** | |
| 45 | + * 向易盾提交网站检测地址(用于测试) | |
| 46 | + * | |
| 47 | + * @param url 网站地址 | |
| 48 | + */ | |
| 49 | + @PostMapping("/submitYiDunUrl") | |
| 50 | + @ResponseBody | |
| 51 | + public void submitYiDunUrl(String url) { | |
| 52 | + Map<String, String> params = new HashMap<String, String>(); | |
| 53 | + | |
| 54 | + // 1.设置公共参数 | |
| 55 | + params.put("secretId", SECRETID); | |
| 56 | + params.put("version", "v1.0"); | |
| 57 | + params.put("timestamp", String.valueOf(System.currentTimeMillis())); | |
| 58 | + params.put("nonce", String.valueOf(new Random().nextInt())); | |
| 59 | + | |
| 60 | + // 2.设置私有参数 | |
| 61 | + //数据唯一标识,能够根据该值定位到该条数据(查询作用) | |
| 62 | + params.put("dataId", UUID.randomUUID().toString()); | |
| 63 | + //网页URL, 支持contentType类型: html、txt、doc、docx、ppt、pptx、xls、xlsx、pdf | |
| 64 | + params.put("url", url); | |
| 65 | + //1:检测文本,2:检测图片,同时检测文本+图片则以逗号分隔,例:1,2。 | |
| 66 | + params.put("checkFlags", "1,2"); | |
| 67 | + //不是必传参数 | |
| 68 | + params.put("callback", UUID.randomUUID().toString()); | |
| 69 | + | |
| 70 | + // 3.生成签名信息 | |
| 71 | + String signature = YiDunAntiFraudUtil.genSignature(SECRETKEY, params); | |
| 72 | + params.put("signature", signature); | |
| 73 | + | |
| 74 | + // 4.发送HTTP请求 | |
| 75 | + //String response = HttpClient4Utils.sendPost(httpClient, API_URL, params, Consts.UTF_8); | |
| 76 | + String s = HttpClientUtils.post_str(URL_SUBMIT, params); | |
| 77 | + logger.info("向易盾提交网站检测地址返回的结果:{}", s); | |
| 78 | + JSONObject jsonObject = JSONObject.parseObject(s); | |
| 79 | + int code = jsonObject.getIntValue("code"); | |
| 80 | + String msg = jsonObject.getString("msg"); | |
| 81 | + if (code == 200 && "ok".equals(msg)) { | |
| 82 | + //:正常(建议通过) 2:异常(建议拦截) 3:疑似(建议人工确认)0:无结果(检测失败) | |
| 83 | + JSONObject result = jsonObject.getJSONObject("result"); | |
| 84 | + String dataId = result.getString("dataId"); | |
| 85 | + ShyYidun shyYidun = new ShyYidun(); | |
| 86 | + shyYidun.setId(dataId); | |
| 87 | + shyYidun.setCreate_time(new Date()); | |
| 88 | + yiDunServiceImpl.addYiDunMsg(shyYidun); | |
| 89 | + } | |
| 90 | + | |
| 91 | + } | |
| 92 | +} | ... | ... |
src/main/java/com/cnlive/shenhe/entity/ShyYidun.java
0 → 100644
| 1 | +package com.cnlive.shenhe.entity; | |
| 2 | + | |
| 3 | +import java.util.Date; | |
| 4 | +import javax.persistence.*; | |
| 5 | + | |
| 6 | +@Table(name = "shy_yidun") | |
| 7 | +public class ShyYidun { | |
| 8 | + /** | |
| 9 | + * 网站审核-dataId 图文审核文本审核-taskId | |
| 10 | + */ | |
| 11 | + @Id | |
| 12 | + private String id; | |
| 13 | + | |
| 14 | + /** | |
| 15 | + * 视频内容id 网站内容id | |
| 16 | + */ | |
| 17 | + private String content_id; | |
| 18 | + | |
| 19 | + /** | |
| 20 | + * 网站审核url | |
| 21 | + */ | |
| 22 | + private String url; | |
| 23 | + | |
| 24 | + /** | |
| 25 | + * 审核结果 2:建议删除,1:建议审核,0:建议通过 | |
| 26 | + */ | |
| 27 | + private String result_type; | |
| 28 | + | |
| 29 | + /** | |
| 30 | + * 检测描述信息 | |
| 31 | + */ | |
| 32 | + private String desc_msg; | |
| 33 | + | |
| 34 | + /** | |
| 35 | + * 视频时长,单位s | |
| 36 | + */ | |
| 37 | + private Integer duration; | |
| 38 | + | |
| 39 | + /** | |
| 40 | + * 创建时间 | |
| 41 | + */ | |
| 42 | + private Date create_time; | |
| 43 | + | |
| 44 | + /** | |
| 45 | + * 修改时间 | |
| 46 | + */ | |
| 47 | + private Date update_time; | |
| 48 | + | |
| 49 | + /** | |
| 50 | + * 获取网站审核-dataId 图文审核文本审核-taskId | |
| 51 | + * | |
| 52 | + * @return id - 网站审核-dataId 图文审核文本审核-taskId | |
| 53 | + */ | |
| 54 | + public String getId() { | |
| 55 | + return id; | |
| 56 | + } | |
| 57 | + | |
| 58 | + /** | |
| 59 | + * 设置网站审核-dataId 图文审核文本审核-taskId | |
| 60 | + * | |
| 61 | + * @param id 网站审核-dataId 图文审核文本审核-taskId | |
| 62 | + */ | |
| 63 | + public void setId(String id) { | |
| 64 | + this.id = id; | |
| 65 | + } | |
| 66 | + | |
| 67 | + /** | |
| 68 | + * 获取视频内容id 网站内容id | |
| 69 | + * | |
| 70 | + * @return content_id - 视频内容id 网站内容id | |
| 71 | + */ | |
| 72 | + public String getContent_id() { | |
| 73 | + return content_id; | |
| 74 | + } | |
| 75 | + | |
| 76 | + /** | |
| 77 | + * 设置视频内容id 网站内容id | |
| 78 | + * | |
| 79 | + * @param content_id 视频内容id 网站内容id | |
| 80 | + */ | |
| 81 | + public void setContent_id(String content_id) { | |
| 82 | + this.content_id = content_id; | |
| 83 | + } | |
| 84 | + | |
| 85 | + /** | |
| 86 | + * 获取网站审核url | |
| 87 | + * | |
| 88 | + * @return url - 网站审核url | |
| 89 | + */ | |
| 90 | + public String getUrl() { | |
| 91 | + return url; | |
| 92 | + } | |
| 93 | + | |
| 94 | + /** | |
| 95 | + * 设置网站审核url | |
| 96 | + * | |
| 97 | + * @param url 网站审核url | |
| 98 | + */ | |
| 99 | + public void setUrl(String url) { | |
| 100 | + this.url = url; | |
| 101 | + } | |
| 102 | + | |
| 103 | + /** | |
| 104 | + * 获取审核结果 2:建议删除,1:建议审核,0:建议通过 | |
| 105 | + * | |
| 106 | + * @return result_type - 审核结果 2:建议删除,1:建议审核,0:建议通过 | |
| 107 | + */ | |
| 108 | + public String getResult_type() { | |
| 109 | + return result_type; | |
| 110 | + } | |
| 111 | + | |
| 112 | + /** | |
| 113 | + * 设置审核结果 2:建议删除,1:建议审核,0:建议通过 | |
| 114 | + * | |
| 115 | + * @param result_type 审核结果 2:建议删除,1:建议审核,0:建议通过 | |
| 116 | + */ | |
| 117 | + public void setResult_type(String result_type) { | |
| 118 | + this.result_type = result_type; | |
| 119 | + } | |
| 120 | + | |
| 121 | + /** | |
| 122 | + * 获取检测描述信息 | |
| 123 | + * | |
| 124 | + * @return desc_msg - 检测描述信息 | |
| 125 | + */ | |
| 126 | + public String getDesc_msg() { | |
| 127 | + return desc_msg; | |
| 128 | + } | |
| 129 | + | |
| 130 | + /** | |
| 131 | + * 设置检测描述信息 | |
| 132 | + * | |
| 133 | + * @param desc_msg 检测描述信息 | |
| 134 | + */ | |
| 135 | + public void setDesc_msg(String desc_msg) { | |
| 136 | + this.desc_msg = desc_msg; | |
| 137 | + } | |
| 138 | + | |
| 139 | + /** | |
| 140 | + * 获取视频时长,单位s | |
| 141 | + * | |
| 142 | + * @return duration - 视频时长,单位s | |
| 143 | + */ | |
| 144 | + public Integer getDuration() { | |
| 145 | + return duration; | |
| 146 | + } | |
| 147 | + | |
| 148 | + /** | |
| 149 | + * 设置视频时长,单位s | |
| 150 | + * | |
| 151 | + * @param duration 视频时长,单位s | |
| 152 | + */ | |
| 153 | + public void setDuration(Integer duration) { | |
| 154 | + this.duration = duration; | |
| 155 | + } | |
| 156 | + | |
| 157 | + /** | |
| 158 | + * 获取创建时间 | |
| 159 | + * | |
| 160 | + * @return create_time - 创建时间 | |
| 161 | + */ | |
| 162 | + public Date getCreate_time() { | |
| 163 | + return create_time; | |
| 164 | + } | |
| 165 | + | |
| 166 | + /** | |
| 167 | + * 设置创建时间 | |
| 168 | + * | |
| 169 | + * @param create_time 创建时间 | |
| 170 | + */ | |
| 171 | + public void setCreate_time(Date create_time) { | |
| 172 | + this.create_time = create_time; | |
| 173 | + } | |
| 174 | + | |
| 175 | + /** | |
| 176 | + * 获取修改时间 | |
| 177 | + * | |
| 178 | + * @return update_time - 修改时间 | |
| 179 | + */ | |
| 180 | + public Date getUpdate_time() { | |
| 181 | + return update_time; | |
| 182 | + } | |
| 183 | + | |
| 184 | + /** | |
| 185 | + * 设置修改时间 | |
| 186 | + * | |
| 187 | + * @param update_time 修改时间 | |
| 188 | + */ | |
| 189 | + public void setUpdate_time(Date update_time) { | |
| 190 | + this.update_time = update_time; | |
| 191 | + } | |
| 192 | + | |
| 193 | + public ShyYidun() { | |
| 194 | + } | |
| 195 | + | |
| 196 | + public ShyYidun(String id, String content_id, String url, String result_type, String desc_msg, Integer duration, Date create_time, Date update_time) { | |
| 197 | + this.id = id; | |
| 198 | + this.content_id = content_id; | |
| 199 | + this.url = url; | |
| 200 | + this.result_type = result_type; | |
| 201 | + this.desc_msg = desc_msg; | |
| 202 | + this.duration = duration; | |
| 203 | + this.create_time = create_time; | |
| 204 | + this.update_time = update_time; | |
| 205 | + } | |
| 206 | +} | |
| 0 | 207 | \ No newline at end of file | ... | ... |
src/main/java/com/cnlive/shenhe/job/YiDunUrlResultJob.java
0 → 100644
| 1 | +package com.cnlive.shenhe.job; | |
| 2 | + | |
| 3 | +import com.alibaba.fastjson.JSONArray; | |
| 4 | +import com.alibaba.fastjson.JSONObject; | |
| 5 | +import com.cnlive.shenhe.entity.ShyYidun; | |
| 6 | +import com.cnlive.shenhe.serviceImpl.YiDunServiceImpl; | |
| 7 | +import com.cnlive.shenhe.utils.HttpClientUtils; | |
| 8 | +import com.cnlive.shenhe.utils.YiDunAntiFraudUtil; | |
| 9 | +import org.slf4j.Logger; | |
| 10 | +import org.slf4j.LoggerFactory; | |
| 11 | +import org.springframework.beans.factory.annotation.Autowired; | |
| 12 | +import org.springframework.scheduling.annotation.Scheduled; | |
| 13 | +import org.springframework.stereotype.Component; | |
| 14 | + | |
| 15 | +import java.util.Date; | |
| 16 | +import java.util.HashMap; | |
| 17 | +import java.util.Map; | |
| 18 | +import java.util.Random; | |
| 19 | + | |
| 20 | +/** | |
| 21 | + * 易盾网站检测 | |
| 22 | + * | |
| 23 | + * @Author: xujincheng | |
| 24 | + * @Date: 2020/3/23 15:16 | |
| 25 | + */ | |
| 26 | +@Component | |
| 27 | +public class YiDunUrlResultJob { | |
| 28 | + | |
| 29 | + private static Logger logger = LoggerFactory.getLogger(YiDunUrlResultJob.class); | |
| 30 | + | |
| 31 | + /** | |
| 32 | + * 网站地址URL产品密钥ID,产品标识 | |
| 33 | + */ | |
| 34 | + private final static String SECRETID = "c7f33c191020bcc9cbacb7d70417fd2f"; | |
| 35 | + /** | |
| 36 | + * 网站地址URL产品私有密钥,服务端生成签名信息使用,请严格保管,避免泄露 | |
| 37 | + */ | |
| 38 | + private final static String SECRETKEY = "833222b4951a67a9bc63b5ed0c24d07d"; | |
| 39 | + /** | |
| 40 | + * 网站地址URL检测结果获取接口地址 | |
| 41 | + */ | |
| 42 | + private final static String URL_RESULT = "https://as.dun.163yun.com/v1/crawler/callback/results"; | |
| 43 | + | |
| 44 | + | |
| 45 | + @Autowired | |
| 46 | + YiDunServiceImpl yiDunServiceImpl; | |
| 47 | + | |
| 48 | + | |
| 49 | + /** | |
| 50 | + * 查询易盾网站检测结果接口 | |
| 51 | + */ | |
| 52 | + @Scheduled(cron = "0/1 * 10-23 * * ? ")//每天10点到23点执行,每分钟一次 | |
| 53 | + public void YiDunUrl() { | |
| 54 | + Map<String, String> params1 = new HashMap<String, String>(5); | |
| 55 | + // 1.设置公共参数 | |
| 56 | + params1.put("secretId", SECRETID); | |
| 57 | + params1.put("version", "v1.0"); | |
| 58 | + params1.put("timestamp", String.valueOf(System.currentTimeMillis())); | |
| 59 | + params1.put("nonce", String.valueOf(new Random().nextInt())); | |
| 60 | + | |
| 61 | + // 2.生成签名信息 | |
| 62 | + String signature1 = YiDunAntiFraudUtil.genSignature(SECRETKEY, params1); | |
| 63 | + params1.put("signature", signature1); | |
| 64 | + | |
| 65 | + // 3.发送HTTP请求 | |
| 66 | + String s1 = HttpClientUtils.post_str(URL_RESULT, params1); | |
| 67 | + logger.info("查询易盾网站检测结果:{}", s1); | |
| 68 | + | |
| 69 | + // 4.解析接口返回值 | |
| 70 | + JSONObject resultObject = JSONObject.parseObject(s1); | |
| 71 | + int code = resultObject.getIntValue("code"); | |
| 72 | + String msg = resultObject.getString("msg"); | |
| 73 | + if (code == 200 && "ok".equals(msg)){ | |
| 74 | + JSONArray resultJSONArray = resultObject.getJSONArray("result"); | |
| 75 | + for(int i=0;i<resultJSONArray.size();i++){ | |
| 76 | + | |
| 77 | + JSONObject jsonObject = resultJSONArray.getJSONObject(i); | |
| 78 | + String dataId = jsonObject.getString("dataId"); | |
| 79 | + //检测结果, 1:正常(建议通过) 2:异常(建议拦截) 3:疑似(建议人工确认)0:无结果(检测失败) | |
| 80 | + int result= jsonObject.getIntValue("result"); | |
| 81 | + if(result==1){ | |
| 82 | + | |
| 83 | + } | |
| 84 | + | |
| 85 | + ShyYidun yiDunMsg = yiDunServiceImpl.getYiDunMsg(dataId); | |
| 86 | + ShyYidun newYiDunMsg = new ShyYidun(); | |
| 87 | + newYiDunMsg.setId(yiDunMsg.getId()); | |
| 88 | + newYiDunMsg.setUpdate_time(new Date()); | |
| 89 | + yiDunServiceImpl.updateYiDunMsg(newYiDunMsg); | |
| 90 | + } | |
| 91 | + } | |
| 92 | + | |
| 93 | + } | |
| 94 | +} | ... | ... |
src/main/java/com/cnlive/shenhe/mapper/ShyYidunMapper.java
0 → 100644
src/main/java/com/cnlive/shenhe/serviceImpl/YiDunServiceImpl.java
0 → 100644
| 1 | +package com.cnlive.shenhe.serviceImpl; | |
| 2 | + | |
| 3 | +import com.cnlive.shenhe.entity.ShyYidun; | |
| 4 | +import com.cnlive.shenhe.mapper.ShyYidunMapper; | |
| 5 | +import org.slf4j.Logger; | |
| 6 | +import org.slf4j.LoggerFactory; | |
| 7 | +import org.springframework.beans.factory.annotation.Autowired; | |
| 8 | +import org.springframework.stereotype.Service; | |
| 9 | + | |
| 10 | +/** | |
| 11 | + * @Author: xujincheng | |
| 12 | + * @Date: 2020/3/27 17:31 | |
| 13 | + */ | |
| 14 | +@Service | |
| 15 | +public class YiDunServiceImpl { | |
| 16 | + | |
| 17 | + private static Logger logger = LoggerFactory.getLogger(YiDunServiceImpl.class); | |
| 18 | + | |
| 19 | + @Autowired | |
| 20 | + ShyYidunMapper shyYidunMapper; | |
| 21 | + | |
| 22 | + public boolean addYiDunMsg(ShyYidun shyYidun) { | |
| 23 | + int result = shyYidunMapper.insert(shyYidun); | |
| 24 | + if (result == 0) { | |
| 25 | + return false; | |
| 26 | + } | |
| 27 | + return true; | |
| 28 | + } | |
| 29 | + | |
| 30 | + public ShyYidun getYiDunMsg(String dataId) { | |
| 31 | + return shyYidunMapper.selectByPrimaryKey(dataId); | |
| 32 | + } | |
| 33 | + | |
| 34 | + public boolean updateYiDunMsg(ShyYidun shyYidun) { | |
| 35 | + int result = shyYidunMapper.updateByPrimaryKeySelective(shyYidun); | |
| 36 | + if (result == 0) { | |
| 37 | + return false; | |
| 38 | + } | |
| 39 | + return true; | |
| 40 | + | |
| 41 | + } | |
| 42 | +} | ... | ... |
src/main/java/com/cnlive/shenhe/utils/YiDunAntiFraudUtil.java
0 → 100644
| 1 | +package com.cnlive.shenhe.utils; | |
| 2 | + | |
| 3 | +import com.alibaba.fastjson.JSONArray; | |
| 4 | +import com.alibaba.fastjson.JSONObject; | |
| 5 | +import com.cnlive.shenhe.api.AvsampleCallBackControllerApi; | |
| 6 | +import org.apache.commons.codec.digest.DigestUtils; | |
| 7 | +import org.slf4j.Logger; | |
| 8 | +import org.slf4j.LoggerFactory; | |
| 9 | +import org.springframework.util.StringUtils; | |
| 10 | + | |
| 11 | +import java.io.UnsupportedEncodingException; | |
| 12 | +import java.util.*; | |
| 13 | + | |
| 14 | +/** | |
| 15 | + * 网易易盾 | |
| 16 | + * | |
| 17 | + * @Author: xujincheng | |
| 18 | + * @Date: 2020/3/18 12:47 | |
| 19 | + */ | |
| 20 | +public class YiDunAntiFraudUtil { | |
| 21 | + | |
| 22 | + private static Logger logger = LoggerFactory.getLogger(YiDunAntiFraudUtil.class); | |
| 23 | + | |
| 24 | + /** | |
| 25 | + * 网站地址URL产品密钥ID,产品标识 | |
| 26 | + */ | |
| 27 | + private final static String SECRETID = "c7f33c191020bcc9cbacb7d70417fd2f"; | |
| 28 | + /** | |
| 29 | + * 网站地址URL产品私有密钥,服务端生成签名信息使用,请严格保管,避免泄露 | |
| 30 | + */ | |
| 31 | + private final static String SECRETKEY = "833222b4951a67a9bc63b5ed0c24d07d"; | |
| 32 | + /** | |
| 33 | + * 网站地址URL提交接口地址 | |
| 34 | + */ | |
| 35 | + private final static String URL_SUBMIT = "https://as.dun.163yun.com/v1/crawler/submit"; | |
| 36 | + /** | |
| 37 | + * 需检测的网站地址URL | |
| 38 | + */ | |
| 39 | + private final static String FILE_URL = "http://shen.cnlive.com/api/content/detail/135058.html"; | |
| 40 | + /** | |
| 41 | + * 网站地址URL检测结果获取接口地址 | |
| 42 | + */ | |
| 43 | + private final static String URL_RESULT = "https://as.dun.163yun.com/v1/crawler/callback/results"; | |
| 44 | + | |
| 45 | + /** | |
| 46 | + * 文本识别图片识别产品密钥ID,产品标识 | |
| 47 | + */ | |
| 48 | + private final static String TEXTANDIMAGESECRETID = "11c62726ba11f03f3f7d87acbe2d4f03"; | |
| 49 | + /** | |
| 50 | + * 文本识别图片识别产品私有密钥,服务端生成签名信息使用,请严格保管,避免泄露 | |
| 51 | + */ | |
| 52 | + private final static String TEXTANDIMAGESECRETKEY = "3c0d0d44909926f46e79d3518e7dc4e7"; | |
| 53 | + /** | |
| 54 | + * 业务ID,易盾根据产品业务特点分配(文本) | |
| 55 | + */ | |
| 56 | + private final static String TEXTBUSINESSID = "719926f98dc5b9bb9857e1b799ea3f5f"; | |
| 57 | + /** | |
| 58 | + * 易盾内容安全文本在线检测接口地址 | |
| 59 | + */ | |
| 60 | + private final static String TEXT_RESULT = "https://as.dun.163yun.com/v3/text/check"; | |
| 61 | + /** | |
| 62 | + * 业务ID,易盾根据产品业务特点分配(图片) | |
| 63 | + */ | |
| 64 | + private final static String IMAGEBUSINESSID = "f84d6ee9f62274243825d3e969ca4c5a"; | |
| 65 | + /** | |
| 66 | + * 易盾内容安全服务图片在线检测接口地址 | |
| 67 | + */ | |
| 68 | + private final static String IMAGE_RESULT = "https://as.dun.163yun.com/v4/image/check"; | |
| 69 | + | |
| 70 | + public static void main(String[] args) { | |
| 71 | + //智能网页识别审核测试 | |
| 72 | + //getURLFilter(FILE_URL); | |
| 73 | + | |
| 74 | + //智能文本识别审核测试 | |
| 75 | + //getTextFilter("王八蛋"); | |
| 76 | + | |
| 77 | + //智能图片识别审核测试 | |
| 78 | + /* JSONArray jsonArray = new JSONArray(); | |
| 79 | + JSONObject image1 = new JSONObject(); | |
| 80 | + image1.put("name", "http://test.qnvod.cnlive.com/shen/802/2020/03/01/8a8a878c6dce5cfe017096cd07940c84/000001.jpg"); | |
| 81 | + image1.put("type", 1); | |
| 82 | + image1.put("data", "http://test.qnvod.cnlive.com/shen/802/2020/03/01/8a8a878c6dce5cfe017096cd07940c84/000001.jpg"); | |
| 83 | + jsonArray.add(image1); | |
| 84 | + JSONObject image2 = new JSONObject(); | |
| 85 | + image2.put("name", "http://test.qnvod.cnlive.com/shen/802/2020/03/01/8a8a878c6dce5cfe017096cd07940c84/000002.jpg"); | |
| 86 | + image2.put("type", 1); | |
| 87 | + image2.put("data", "http://test.qnvod.cnlive.com/shen/802/2020/03/01/8a8a878c6dce5cfe017096cd07940c84/000002.jpg"); | |
| 88 | + jsonArray.add(image2); | |
| 89 | + JSONObject image3 = new JSONObject(); | |
| 90 | + image3.put("name", "https://wjj.ys2.cnliveimg.com/769/img/0/2020/03/21/158474856886077030277.jpg"); | |
| 91 | + image3.put("type", 1); | |
| 92 | + image3.put("data", "https://wjj.ys2.cnliveimg.com/769/img/0/2020/03/21/158474856886077030277.jpg"); | |
| 93 | + jsonArray.add(image3); | |
| 94 | + // | |
| 95 | + JSONObject imagesFilter = getImagesFilter(jsonArray.toJSONString()); | |
| 96 | + System.out.println(imagesFilter.toJSONString());*/ | |
| 97 | + | |
| 98 | + } | |
| 99 | + | |
| 100 | + | |
| 101 | + /** | |
| 102 | + * 智能图片审核 | |
| 103 | + * | |
| 104 | + * @param jsonImg //http://test.qnvod.cnlive.com/shen/802/2020/03/01/8a8a878c6dce5cfe017096cd07940c84/000002.jpg | |
| 105 | + * @return | |
| 106 | + */ | |
| 107 | + public static JSONObject getImagesFilter(String jsonImg) { | |
| 108 | + try { | |
| 109 | + Map<String, String> params = new HashMap<String, String>(); | |
| 110 | + // 1.设置公共参数 | |
| 111 | + params.put("secretId", TEXTANDIMAGESECRETID); | |
| 112 | + params.put("businessId", IMAGEBUSINESSID); | |
| 113 | + params.put("version", "v4"); | |
| 114 | + params.put("timestamp", String.valueOf(System.currentTimeMillis())); | |
| 115 | + params.put("nonce", String.valueOf(new Random().nextInt())); | |
| 116 | + | |
| 117 | + // 2.设置私有参数 | |
| 118 | + /*JSONArray jsonArray = new JSONArray(); | |
| 119 | + // 传图片url进行检测,name结构产品自行设计,用于唯一定位该图片数据 | |
| 120 | + JSONObject image1 = new JSONObject(); | |
| 121 | + //图片名称(或图片标识), 该字段为回调信号字段,产品可以根据业务情况自行设计,如json结构、或者为图片url均可 | |
| 122 | + image1.put("name", "http://p1.music.126.net/lEQvXzoC17AFKa6yrf-ldA==/1412872446212751.jpg"); | |
| 123 | + //类型,分别为1:图片URL,2:图片BASE64值 | |
| 124 | + image1.put("type", 1); | |
| 125 | + image1.put("data",jsonImg); | |
| 126 | + //image1.put("data", "http://p1.music.126.net/lEQvXzoC17AFKa6yrf-ldA==/1412872446212751.jpg"); | |
| 127 | + jsonArray.add(image1);*/ | |
| 128 | + | |
| 129 | + // 传图片base64编码进行检测,name结构产品自行设计,用于唯一定位该图片数据 | |
| 130 | + /*JSONObject image2 =new JSONObject(); | |
| 131 | + image2.put("name", "{\"imageId\": 33451123, \"contentId\": 78978}"); | |
| 132 | + image2.put("type", 2); | |
| 133 | + image2.put("data","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"); | |
| 134 | + jsonArray.add(image2);*/ | |
| 135 | + | |
| 136 | + params.put("images", jsonImg); | |
| 137 | + // params.put("account", "java@163.com"); | |
| 138 | + // params.put("ip", "123.115.77.137"); | |
| 139 | + | |
| 140 | + // 3.生成签名信息 | |
| 141 | + String signature = genSignature(TEXTANDIMAGESECRETKEY, params); | |
| 142 | + params.put("signature", signature); | |
| 143 | + | |
| 144 | + // 4.发送HTTP请求,这里使用的是HttpClient工具包,产品可自行选择自己熟悉的工具包发送请求 | |
| 145 | + String result = HttpClientUtils.post_str(IMAGE_RESULT, params); | |
| 146 | + logger.info("易盾智能图片识别返回信息:{}", result); | |
| 147 | + // 5.解析接口返回值 | |
| 148 | + if (!StringUtils.isEmpty(result)) { | |
| 149 | + JSONObject jsonResult = JSONObject.parseObject(result); | |
| 150 | + Integer code = jsonResult.getInteger("code"); | |
| 151 | + JSONObject jsonObj = new JSONObject(); | |
| 152 | + int count = 0; | |
| 153 | + if (code != null && code == 200) { | |
| 154 | + StringBuffer strBuffer = new StringBuffer(); | |
| 155 | + JSONArray antispam = jsonResult.getJSONArray("antispam"); | |
| 156 | + if (antispam != null && antispam.size() > 0) { | |
| 157 | + for (int i = 0; i < antispam.size(); i++) { | |
| 158 | + JSONObject jsonObject = antispam.getJSONObject(i); | |
| 159 | + //图片检测状态码,定义为:0:检测成功,610:图片下载失败,620:图片格式错误,630:其它 | |
| 160 | + Integer status = jsonObject.getInteger("status"); | |
| 161 | + //建议动作,2:建议删除,1:建议审核,0:建议通过 | |
| 162 | + Integer action = jsonObject.getInteger("action"); | |
| 163 | + if (action != null && action == 0 && status != null && status == 0) { | |
| 164 | + continue; | |
| 165 | + } | |
| 166 | + if (action != null && action == 0 && status != null && status != 0) { | |
| 167 | + JSONArray labels = jsonObject.getJSONArray("labels"); | |
| 168 | + if (labels != null && labels.size() > 0) { | |
| 169 | + for (int j = 0; j < labels.size(); j++) { | |
| 170 | + JSONObject jsonObject1 = labels.getJSONObject(j); | |
| 171 | + //分类级别,0:正常,1:不确定,2:确定 | |
| 172 | + Integer level = jsonObject1.getInteger("level"); | |
| 173 | + if (level != null && level == 2) { | |
| 174 | + jsonObject1.getInteger(""); | |
| 175 | + } | |
| 176 | + | |
| 177 | + } | |
| 178 | + } | |
| 179 | + count++; | |
| 180 | + continue; | |
| 181 | + } | |
| 182 | + count++; | |
| 183 | + } | |
| 184 | + if (count > 0) { | |
| 185 | + jsonObj.put("type", "REJECT"); | |
| 186 | + } else { | |
| 187 | + jsonObj.put("type", "PASS"); | |
| 188 | + } | |
| 189 | + } | |
| 190 | + | |
| 191 | + } else { | |
| 192 | + jsonObj.put("type", "REJECT"); | |
| 193 | + jsonObj.put("desc", "code:" + code + ",message:" + jsonResult.getString("msg")); | |
| 194 | + } | |
| 195 | + return jsonObj; | |
| 196 | + } | |
| 197 | + } catch (Exception e) { | |
| 198 | + e.printStackTrace(); | |
| 199 | + } | |
| 200 | + return null; | |
| 201 | + } | |
| 202 | + | |
| 203 | + /** | |
| 204 | + * 智能文本审核 | |
| 205 | + * | |
| 206 | + * @param text | |
| 207 | + * @return | |
| 208 | + */ | |
| 209 | + public static JSONObject getTextFilter(String text) { | |
| 210 | + Map<String, String> params = new HashMap<String, String>(); | |
| 211 | + // 1.设置公共参数 | |
| 212 | + params.put("secretId", TEXTANDIMAGESECRETID); | |
| 213 | + params.put("businessId", TEXTBUSINESSID); | |
| 214 | + params.put("version", "v3.1"); | |
| 215 | + params.put("timestamp", String.valueOf(System.currentTimeMillis())); | |
| 216 | + params.put("nonce", String.valueOf(new Random().nextInt())); | |
| 217 | + | |
| 218 | + // 2.设置私有参数 | |
| 219 | + params.put("dataId", UUID.randomUUID().toString()); | |
| 220 | + params.put("content", text); | |
| 221 | + // params.put("dataType", "1"); | |
| 222 | + // params.put("ip", "123.115.77.137"); | |
| 223 | + // params.put("account", "java@163.com"); | |
| 224 | + // params.put("deviceType", "4"); | |
| 225 | + // params.put("deviceId", "92B1E5AA-4C3D-4565-A8C2-86E297055088"); | |
| 226 | + // params.put("callback", "ebfcad1c-dba1-490c-b4de-e784c2691768"); | |
| 227 | + // params.put("publishTime", String.valueOf(System.currentTimeMillis())); | |
| 228 | + | |
| 229 | + // 3.生成签名信息 | |
| 230 | + String signature = genSignature(TEXTANDIMAGESECRETKEY, params); | |
| 231 | + params.put("signature", signature); | |
| 232 | + | |
| 233 | + // 4.发送HTTP请求 | |
| 234 | + String s = HttpClientUtils.post_str(TEXT_RESULT, params); | |
| 235 | + System.out.println(s); | |
| 236 | + | |
| 237 | + JSONObject resultObject = JSONObject.parseObject(s); | |
| 238 | + return resultObject; | |
| 239 | + } | |
| 240 | + | |
| 241 | + /** | |
| 242 | + * 智能网页识别 | |
| 243 | + * | |
| 244 | + * @param url | |
| 245 | + * @return | |
| 246 | + */ | |
| 247 | + public static JSONObject getURLFilter(String url) { | |
| 248 | + Map<String, String> params = new HashMap<String, String>(); | |
| 249 | + | |
| 250 | + // 1.设置公共参数 | |
| 251 | + params.put("secretId", SECRETID); | |
| 252 | + params.put("version", "v1.0"); | |
| 253 | + params.put("timestamp", String.valueOf(System.currentTimeMillis())); | |
| 254 | + params.put("nonce", String.valueOf(new Random().nextInt())); | |
| 255 | + | |
| 256 | + // 2.设置私有参数 | |
| 257 | + //数据唯一标识,能够根据该值定位到该条数据(查询作用) | |
| 258 | + params.put("dataId", UUID.randomUUID().toString()); | |
| 259 | + //网页URL, 支持contentType类型: html、txt、doc、docx、ppt、pptx、xls、xlsx、pdf | |
| 260 | + params.put("url", url); | |
| 261 | + //1:检测文本,2:检测图片,同时检测文本+图片则以逗号分隔,例:1,2。 | |
| 262 | + params.put("checkFlags", "1,2"); | |
| 263 | + //不是必传参数 | |
| 264 | + params.put("callback", UUID.randomUUID().toString()); | |
| 265 | + | |
| 266 | + // 3.生成签名信息 | |
| 267 | + String signature = genSignature(SECRETKEY, params); | |
| 268 | + params.put("signature", signature); | |
| 269 | + | |
| 270 | + // 4.发送HTTP请求 | |
| 271 | + //String response = HttpClient4Utils.sendPost(httpClient, API_URL, params, Consts.UTF_8); | |
| 272 | + String s = HttpClientUtils.post_str(URL_SUBMIT, params); | |
| 273 | + System.out.println(s); | |
| 274 | + | |
| 275 | + | |
| 276 | + Map<String, String> params1 = new HashMap<String, String>(); | |
| 277 | + // 1.设置公共参数 | |
| 278 | + params1.put("secretId", SECRETID); | |
| 279 | + params1.put("version", "v1.0"); | |
| 280 | + params1.put("timestamp", String.valueOf(System.currentTimeMillis())); | |
| 281 | + params1.put("nonce", String.valueOf(new Random().nextInt())); | |
| 282 | + | |
| 283 | + // 2.生成签名信息 | |
| 284 | + String signature1 = genSignature(SECRETKEY, params1); | |
| 285 | + params1.put("signature", signature1); | |
| 286 | + | |
| 287 | + // 3.发送HTTP请求 | |
| 288 | + String s1 = HttpClientUtils.post_str(URL_RESULT, params1); | |
| 289 | + System.out.println(s1); | |
| 290 | + | |
| 291 | + // 4.解析接口返回值 | |
| 292 | + JSONObject resultObject = JSONObject.parseObject(s1); | |
| 293 | + return resultObject; | |
| 294 | + } | |
| 295 | + | |
| 296 | + /** | |
| 297 | + * 生成签名信息 | |
| 298 | + * | |
| 299 | + * @param secretKey 产品私钥 | |
| 300 | + * @param params 接口请求参数名和参数值map,不包括signature参数名 | |
| 301 | + * @return | |
| 302 | + */ | |
| 303 | + public static String genSignature(String secretKey, Map<String, String> params) { | |
| 304 | + // 1. 参数名按照ASCII码表升序排序 | |
| 305 | + String[] keys = params.keySet().toArray(new String[0]); | |
| 306 | + Arrays.sort(keys); | |
| 307 | + | |
| 308 | + // 2. 按照排序拼接参数名与参数值 | |
| 309 | + StringBuilder sb = new StringBuilder(); | |
| 310 | + for (String key : keys) { | |
| 311 | + sb.append(key).append(params.get(key)); | |
| 312 | + } | |
| 313 | + // 3. 将secretKey拼接到最后 | |
| 314 | + sb.append(secretKey); | |
| 315 | + | |
| 316 | + // 4. MD5是128位长度的摘要算法,转换为十六进制之后长度为32字符 | |
| 317 | + try { | |
| 318 | + String s = DigestUtils.md5Hex(sb.toString().getBytes("UTF-8")); | |
| 319 | + return s; | |
| 320 | + } catch (UnsupportedEncodingException e) { | |
| 321 | + e.printStackTrace(); | |
| 322 | + } | |
| 323 | + return null; | |
| 324 | + } | |
| 325 | + | |
| 326 | +} | ... | ... |
src/main/resources/mapper/ShyYidunMapper.xml
0 → 100644
| 1 | +<?xml version="1.0" encoding="UTF-8"?> | |
| 2 | +<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> | |
| 3 | +<mapper namespace="com.cnlive.shenhe.mapper.ShyYidunMapper"> | |
| 4 | + <resultMap id="BaseResultMap" type="com.cnlive.shenhe.entity.ShyYidun"> | |
| 5 | + <!-- | |
| 6 | + WARNING - @mbg.generated | |
| 7 | + --> | |
| 8 | + <id column="id" jdbcType="VARCHAR" property="id" /> | |
| 9 | + <result column="content_id" jdbcType="VARCHAR" property="content_id" /> | |
| 10 | + <result column="url" jdbcType="VARCHAR" property="url" /> | |
| 11 | + <result column="result_type" jdbcType="VARCHAR" property="result_type" /> | |
| 12 | + <result column="desc_msg" jdbcType="VARCHAR" property="desc_msg" /> | |
| 13 | + <result column="duration" jdbcType="INTEGER" property="duration" /> | |
| 14 | + <result column="create_time" jdbcType="TIMESTAMP" property="create_time" /> | |
| 15 | + <result column="update_time" jdbcType="TIMESTAMP" property="update_time" /> | |
| 16 | + </resultMap> | |
| 17 | +</mapper> | |
| 0 | 18 | \ No newline at end of file | ... | ... |