用阿里云内容安全处理OSS的违禁图片

本文涉及的产品
对象存储 OSS,20GB 3个月
简介: 原文档,https://help.aliyun.com/document_detail/2400149.html 基于官方的文档做的一些拓展
+关注继续查看
  1. 1、登录函数计算控制台,选择服务地域,创建服务和函数。具体操作,请参见管理服务管理函数。创建函数时,选择使用内置运行时创建的方式,核心字段配置如下:
    • 基本设置区域,选择请求处理程序类型处理事件请求
      image
  • 函数代码区域,根据实际业务选择运行环境,设置代码上传方式使用示例代码方式,并选择对象存储OSS触发函数
    image
    • 触发器配置区域,选择触发器类型对象存储OSS,指定Bucket名称osstest-20文件前缀img文件后缀png触发事件选择oss:ObjectCreated:PutObjectoss:ObjectCreated:PostObject事件,角色名称AliyunOSSEventNotificationRole
      首次创建函数时,您可以根据页面提示授予事件源访问函数计算权限。更多内容,请参见授予事件源访问函数计算的权限
      关于OSS触发器事件的详细信息,请参见OSS触发器概述
      image

2、通过函数调用内容安全图片审核增强版服务。


官方提供了一种通过函数计算来触发内容安全增量扫描的方案,但是该方案没有处理文件的示例,业务方的需求是把检测到的违规文件直接禁止公共读,需要置为PRIVATE权限,加完处理后的示例代码如下:

# -*- coding: utf-8 -*-
import json, uuid
import configparser
from aliyunsdkcore.client import AcsClient
from aliyunsdkcore.request import CommonRequest
import oss2


# 需要自行根据检测内容确定好bucket路径及object名称
def oss_acl_private(bucket_name, object_name):
    auth = oss2.Auth("accessKeyId", "accessSecret")
    bucket = oss2.Bucket(auth, 'https://oss-cn-shanghai.aliyuncs.com', bucket_name)
    # yourObjectName填写Object完整路径,完整路径中不能包含Bucket名称。
    bucket.put_object_acl(object_name, oss2.OBJECT_ACL_PRIVATE)


def handler(event, context):
    config = configparser.ConfigParser()
    config.read("config.ini", encoding="GB18030")
    # AccessKey ID和AccessKey Secret写入的配置文件。
    evt = json.loads(event)
    evt = evt['events'][0]
    bucket_name = evt['oss']['bucket']['name']
    object_name = evt['oss']['object']['key']
    ossRegionId = evt['region']

    client = AcsClient(config.get("config", "accessKeyId"), config.get("config", "accessSecret"), 'cn-shanghai')
    request = CommonRequest()
    request.set_read_timeout(6000)  # 读超时时间配置
    request.set_connect_timeout(3000)  # 连接超时时间配置
    request.set_accept_format('json')
    request.set_method('POST')

    request.set_protocol_type('https')  # https | http
    request.set_domain('green-cip.cn-shanghai.aliyuncs.com')
    request.set_version('2022-03-02')
    request.set_action_name('ImageModeration')
    request.add_query_param("Service", "baselineCheck")
    request.add_query_param("ServiceParameters",
                            {
                                # 'imageUrl': 'https://www.aliyun.com/1.jpg',
                                'dataId': str(uuid.uuid4()),
                                'ossObjectName': object_name,
                                'ossRegionId': ossRegionId,
                                'ossBucketName': bucket_name,
                            })


    response = client.do_action_with_exception(request)
    # print(str(response, encoding='utf-8'))
    response_json = json.loads(response)
    if response_json.get("Code") == 200:
        for item in response_json.get("Data", {}).get("Result", []):
            print('item', item)
            if item["Label"] == "nonLabel":
                print("nonLabel 无命中标签")
            elif "pornographic" in item["Label"] and int(item["Confidence"]) > 80:
                print("疑似含有色情内容")
                # oss_acl_private(bucket_name, object_name)
            elif "political" in item["Label"] and int(item["Confidence"]) > 80:
                print("疑似含有涉政内容")
                # oss_acl_private(bucket_name, object_name)
            elif "violent" in item["Label"] and int(item["Confidence"]) > 80:
                print("疑似含有暴恐内容")
                # oss_acl_private(bucket_name, object_name)
            elif "fraud" in item["Label"] and int(item["Confidence"]) > 80:
                print("疑似含有风险内容")
    else:
        print("请求失败,错误码:", response_json.get("Code"))


相关实践学习
借助OSS搭建在线教育视频课程分享网站
本教程介绍如何基于云服务器ECS和对象存储OSS,搭建一个在线教育视频课程分享网站。
相关文章
|
2月前
|
Java 对象存储
【工具类】使用阿里oss实现图片、视频、文档上传
【工具类】使用阿里oss实现图片、视频、文档上传
103 0
|
3月前
|
存储 弹性计算 网络安全
搭建基于OSS的图片分享网站
本教程介绍如何基于云服务器ECS和对象存储OSS,搭建一个图片分享网站。
160 0
|
5月前
|
对象存储
oss上传图片的图片名和url路径后缀不一致问题分析与说明
oss上传图片的图片名和url路径后缀不一致问题分析与说明
237 0
|
8月前
|
缓存 对象存储 数据安全/隐私保护
阿里云OSS图片访问出现跨域:Access to image at from origin has been blocked by CORS policy
阿里云OSS图片访问出现跨域:Access to image at from origin has been blocked by CORS policy
572 0
阿里云OSS图片访问出现跨域:Access to image at from origin has been blocked by CORS policy
|
9月前
|
对象存储 CDN
阿里云OSS如何把才能把图片最小最快的加载?
阿里云OSS如何把才能把图片最小最快的加载?
505 0
|
9月前
|
对象存储
阿里云OSS的图片参数m_lfit是干什么的?底层原理是什么?
阿里云OSS的图片参数m_lfit是干什么的?底层原理是什么?
625 0
|
10月前
|
缓存 JavaScript 前端开发
解决阿里oss远程图片html2canvas生成海报时跨域问题(附代码)
解决阿里oss远程图片html2canvas生成海报时跨域问题(附代码)
587 0
解决阿里oss远程图片html2canvas生成海报时跨域问题(附代码)
|
11月前
|
存储 安全 对象存储
用Typora,PicGo和OSS实现自动上传图片
以前写博客要发布到好些个平台,我是将图片一张张上传到每个平台,后来发现是真的麻烦,上传图片花的时间太多,极大的降低了我写文章的积极性。后来改进为使用oss,把博客的图片都上传到oss上面。然后使用oss返回的图片url,这样我的文章里面的图片只上传了一次,最后把整篇文章的mardown复制到各个平台上,平台一般都会把markdown的文章中的img标签的图片上传到他们自己的服务器,然后把图片打上平台的水印,然后把原图片链接替换掉。
330 0
用Typora,PicGo和OSS实现自动上传图片
|
11月前
|
存储 SQL 关系型数据库
Python玩转阿里云OSS对象存储,批量转存markdown和html图片
Python玩转阿里云OSS对象存储,批量转存markdown和html图片
|
存储 数据安全/隐私保护 对象存储
阿里云云计算ACP实验考试之使用OSS对图片进行基本处理(下)
阿里云云计算ACP实验考试之使用OSS对图片进行基本处理(下)
249 0
阿里云云计算ACP实验考试之使用OSS对图片进行基本处理(下)
相关产品
对象存储
推荐文章
更多