如何给你的Chevereto图床加上鉴黄功能开启AI审核

咳咳,博主前几天申请了小半年的网安备案号终于下来了 :aixin:   考虑到博客既通过了工信部备案又进行了网安备,那么确保网站内容符合社会主义核心价值观的必要性就

体现出来了 :huaji:   毕竟博主真的不想被请去喝茶  :liwu:  ,于是思来想去 最大的隐患还是 免费开放的图床网站。。因为博主的图床就曾经被一个GHS的网站利用了,用了很多

流量是小。。就怕被人举报传播淫秽色情图片。。。所以增加图床的鉴黄能力就显得迫在眉睫。。所以就有了这篇教程!代码源自互联网,版权并非博主所有,作者的话博主也

不清楚,有知道的可以告诉博主注明原作者。

首先这个方案是使用的百度的AI鉴黄,所以需要添加一个百度的开发者应用。

https://console.bce.baidu.com/ai/#/ai/antiporn/app/list添加应用,只需要添加应用名称,修改应用类型和描述即可,其他默认!

创建完成后会获得例如AppID,API Key,Secret Key!我们后面会用到!

添加文件

我们需要前往https://ai.baidu.com/sdk#anti下载PHP版本的SDK文件,需要用到 4 个文件,class.aipbase.php class.aiphttpclient.php class.aiphttpUril.php class.imagecensor.php , 这四个文件是百度官方提供的 SDK ,技术宅这里修改了一下。嫌麻烦的可以下载技术宅打包好的文件即可!注意需要将默认的SDK文件中的头部都修改为:namespace CHV;

将四个文件上传至 Chevereto 程序下的 app/lib/classes 文件夹下。

修改文件

修改路径为:app/lib/classes中的class.upload.php,搜索public static function getDefaultOptions()然后在此函数结束的下面添加以下内容:

 

/** 图像审核
* @throws UploadException
*/
protected function isValidCensor()
{
$censor_status = Settings::get("is_censor");
if($censor_status == 1){
$censor = new Imagecensor();
if ($this->type == 'file') {
$rep = $censor->imageCensorUserDefined(file_get_contents($this->source['tmp_name']));
} else if ($this->type == 'url') {
$rep = $censor->imageCensorUserDefined($this->source);
}
if (array_key_exists('error_code', $rep)) throw new UploadException("图片审核失败", 201);
$conclusionType = $rep['conclusionType'];//1:合规,2:不合规,3:疑似,4:审核失败
if ($conclusionType == 4) {
throw new UploadException("图片审核失败", 201);
} else if ($conclusionType > 1) {
throw new UploadException("图片违规", 201);
}
}
}

其中的函数isValidCensor 这个方法就是审核图像的,只有通过验证才会上传文件,没有通过的话会直接异常(包括图片审核失败,不合规,疑似)!

然后在 class.upload.php 的 exec 方法里面添加 一行$this->isValidCensor(); // Exception 2 图片审核

最后我们需要修改app/themes/Peafowl/views/dashboard.php,搜索代码中的Cookie law compliance在上一行添加以下代码:

 

<!-- 增加图片审核-->
<div class="input-label">
<label for="enable_cookie_law"><?php _se('是否开启图片审核'); ?></label>
<div class="c5 phablet-c1"><select type="text" name="is_censor" id="is_censor" class="text-input">
<?php
echo CHV\Render\get_select_options_html([1 => _s('Enabled'), 0 => _s('Disabled')], CHV\Settings::get('is_censor')); ?>
</select></div>
<div class="input-below"><?php _se('是否开启图片审核'); ?></div>
</div>
<div class="input-label">
<label for="sdk_pup_url">百度AI APP_ID</label>
<div class="c9 phablet-c1"><input type="text" name="baidu_app_id" id="baidu_app_id" class="text-input" value="<?php echo CHV\Settings::get('baidu_app_id', true); ?>" placeholder="<?php _se('Empty'); ?>"></div>
<div class="input-below input-warning red-warning"><?php echo get_input_errors()['baidu_app_id']; ?></div>
<div class="input-below"><?php _se('百度AI 平台的 app_id,获取地址: https://console.bce.baidu.com/ai/'); ?></div>
</div>
<div class="input-label">
<label for="sdk_pup_url">百度AI APP_KEY</label>
<div class="c9 phablet-c1"><input type="text" name="baidu_app_key" id="baidu_app_key" class="text-input" value="<?php echo CHV\Settings::get('baidu_app_key', true); ?>" placeholder="<?php _se('Empty'); ?>"></div>
<div class="input-below input-warning red-warning"><?php echo get_input_errors()['baidu_app_key']; ?></div>
<div class="input-below"><?php _se('百度AI 平台的 app_key,获取地址: https://console.bce.baidu.com/ai/'); ?></div>
</div>
<div class="input-label">
<label for="sdk_pup_url">百度AI APP_SECRET</label>
<div class="c9 phablet-c1"><input type="text" name="baidu_app_secret" id="baidu_app_secret" class="text-input" value="<?php echo CHV\Settings::get('baidu_app_secret', true); ?>" placeholder="<?php _se('Empty'); ?>"></div>
<div class="input-below input-warning red-warning"><?php echo get_input_errors()['baidu_app_secret']; ?></div>
<div class="input-below"><?php _se('百度AI 平台的 app_secret,获取地址: https://console.bce.baidu.com/ai/'); ?></div>
</div>

 

插入数据库

完成以上操作后,我们需要插入数据库注意其中的表名chevereto和数据库前缀chv_需要修改成和自己一致的!:

INSERT INTO `chevereto`.`chv_settings`( `setting_name`, `setting_value`, `setting_default`, `setting_typeset`) VALUES ('is_censor', '1','1', 'bool');
INSERT INTO `chevereto`.`chv_settings`( `setting_name`, `setting_value`, `setting_default`, `setting_typeset`) VALUES ( 'baidu_app_id', '', '', 'string');
INSERT INTO `chevereto`.`chv_settings`( `setting_name`, `setting_value`, `setting_default`, `setting_typeset`) VALUES ( 'baidu_app_key', '', '', 'string');
INSERT INTO `chevereto`.`chv_settings`(`setting_name`, `setting_value`, `setting_default`, `setting_typeset`) VALUES ('baidu_app_secret', '', '', 'string');

 

到这里设置完毕后,用户上传的图片如果是违规图片会在上传阶段直接被拦截掉!

文件打包

打包的是百度SDK需要的文件,不需要修改直接上传到 app/lib/classes目录下即可!

https://jiangquan.lanzous.com/iRVTfgb4cbe

点赞

发表评论

电子邮件地址不会被公开。必填项已用 * 标注

隐藏