随心的博客

好记性不如个烂笔头,随心记录!

返回顶部

Demo-网易易盾敏感字检测

 
语言:php
使用方法:
  需要先通过 https://dun.163.com/ 申请并开通内容安全检测的产品
为什么用这个:
  因为网络敏感字一直在不断地更新和叠加,不通过第三方检测机构的话,自己很难去维护,稍微不注意就有漏网之鱼,现在做互联网产品的太难了,什么都需要小心翼翼。
 
  1 <?php
  2 /** 产品密钥ID,产品标识 */
  3 define("SECRETID", "");
  4 /** 产品私有密钥,服务端生成签名信息使用,请严格保管,避免泄露 */
  5 define("SECRETKEY", "");
  6 /** 业务ID,易盾根据产品业务特点分配 */
  7 define("BUSINESSID", "");
  8 /** 易盾反垃圾云服务文本在线检测接口地址 */
  9 define("API_URL", "http://as.dun.163.com/v3/text/check");
 10 /** api version */
 11 define("VERSION", "v3.1");
 12 /** API timeout*/
 13 define("API_TIMEOUT", 2);
 14 /** php内部使用的字符串编码 */
 15 define("INTERNAL_STRING_CHARSET", "auto");
 16 /** api signatureMethod,默认MD5,支持国密SM3 */
 17 define("SIGNATURE_METHOD", "MD5");
 18 
 19 /**
 20  * curl post请求
 21  * @params 输入的参数
 22  */
 23 function curl_post($params, $url, $timout){
 24     $ch = curl_init();
 25     curl_setopt($ch, CURLOPT_URL, $url);
 26     curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
 27     // 设置超时时间
 28     curl_setopt($ch, CURLOPT_TIMEOUT, $timout);
 29     // POST数据
 30     curl_setopt($ch, CURLOPT_POST, 1);
 31     // 把post的变量加上
 32     curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($params));
 33     curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type:'.'application/x-www-form-urlencoded; charset=UTF-8'));
 34     $output = curl_exec($ch);
 35     curl_close($ch);
 36     return $output;
 37 }
 38 
 39 /**
 40  * 将输入数据的编码统一转换成utf8
 41  * @params 输入的参数
 42  */
 43 function toUtf8($params){
 44     $utf8s = array();
 45     foreach ($params as $key => $value) {
 46         $utf8s[$key] = is_string($value) ? mb_convert_encoding($value, "utf8", INTERNAL_STRING_CHARSET) : $value;
 47     }
 48     return $utf8s;
 49 }
 50 
 51 /**
 52  * 计算参数签名
 53  * $params 请求参数
 54  * $secretKey secretKey
 55  */
 56 function gen_signature($secretKey, $params){
 57     $params["signatureMethod"] == SIGNATURE_METHOD;
 58     ksort($params);
 59     $buff="";
 60     foreach($params as $key=>$value){
 61          if($value !== null) {
 62             $buff .=$key;
 63         $buff .=$value;
 64              }
 65     }
 66     $buff .= $secretKey;
 67     return md5($buff);
 68     if ($params["signatureMethod"] == "SM3") {
 69         return sm3($buff);
 70     } else {
 71         return md5($buff);
 72     }
 73 }
 74 
 75 
 76 /**
 77  * 反垃圾请求接口简单封装
 78  * $params 请求参数
 79  */
 80 function check($params){
 81     $params["secretId"] = SECRETID;
 82     $params["businessId"] = BUSINESSID;
 83     $params["version"] = VERSION;
 84     $params["timestamp"] = time() * 1000;// time in milliseconds
 85     $params["nonce"] = sprintf("%d", rand()); // random int
 86 
 87     $params = toUtf8($params);
 88     $params["signature"] = gen_signature(SECRETKEY, $params);
 89     // var_dump($params);
 90 
 91     $result = curl_post($params, API_URL, API_TIMEOUT);
 92     if($result === FALSE){
 93         return array("code"=>500, "msg"=>"file_get_contents failed.");
 94     }else{
 95         return json_decode($result, true);    
 96     }
 97 }
 98 
 99 $check_content = $_POST['check_content'];
100 if (empty($check_content)) 
101 {
102     $arr =  array('status' => 'FAIL', 'msg'=>'检测内容不能为空' );
103     echo json_encode($arr);exit();
104 }
105 
106 $params = array(
107     "dataId"    => "id".time().rand(),
108     "content"    =>$check_content
109 );
110 
111 $ret = check($params);
112 if ($ret["code"] == 200) 
113 {
114     $action = $ret["result"]["action"];
115     $taskId = $ret["result"]["taskId"];
116     $labelArray = $ret["result"]["labels"];
117 
118     if ($action == 0) 
119     {
120         //echo "taskId={$taskId},文本机器检测结果:通过\n";
121         $arr =  array('status' => 'SUCCESS', 'msg'=>'检测通过' );
122         echo json_encode($arr);exit();
123     } 
124     else if ($action == 1) 
125     {
126           //echo "taskId={$taskId},文本机器检测结果:嫌疑,需人工复审,分类信息如下:".json_encode($labelArray)."\n";
127           $arr =  array('status' => 'FAIL', 'msg'=>'检测不通过,需人工复审' );
128         echo json_encode($arr);exit();
129     } 
130     else if ($action == 2) 
131     {
132         //echo "taskId={$taskId},文本机器检测结果:不通过,分类信息如下:".json_encode($labelArray)."\n";
133         $arr =  array('status' => 'FAIL', 'msg'=>'检测不通过' );
134         echo json_encode($arr);exit();
135     }
136 }
137 else
138 {
139     $arr =  array('status' => 'FAIL', 'msg'=>'检测不通过' );
140     echo json_encode($arr);exit();
141 }
142 
143 
144 ?>

 

调用方法:

通过post请求,传入 check_content 参数,将会返回 json数据
status值为 ‘SUCCESS’ 表示检测通过
status值为 ‘FAIL’ 表示检测不通过
 

其他说明:

易盾策略会一直跟新,根据最新的监管知识和时下热点
 
咱们的智能审核平台支持自主添加策略:
1、需要拦截的“关键词”:https://cms.dun.163.com/strategy/keyword;
2、需要避开检测的“忽略词”:https://cms.dun.163.com/strategy/ignoreword;
3、相似/精确匹配语句特征:
https://cms.dun.163.com/strategy/text-feature;
4、黑白用户ID名单
等等……
 
请登录易盾智能审核系统(https://cms.dun.163.com),您可以在[系统管理——产品管理——查看详情——获取凭证]中获取秘钥信息,在[系统管理——业务管理]中获取业务ID。
秘钥信息是用来做产品标识及接口签名使用的,请注意保密。
详情页的业务ID供内容检查使用,businessId参数为接口公共参数之一,每个请求必须包含(***解决方案类产品不需要***)。
参考文档在这里:http://support.dun.163.com/
demo可以在这里下载:http://support.dun.163.com/documents/2018041901?docId=150426959377256448
如果您是线上业务数据接入,为了提升防控效果,请您将用户ID(account)、用户ip(IP)字段传给我们。我们会为您配置行为检测模型,对广告、灌水等类别能多维度防控。
 

 

posted @ 2021-09-12 17:13  yangphp  阅读(373)  评论(0编辑  收藏  举报