URL风险检测接入指南

URL风险检测支持SDK方式调用和原生HTTPS方式调用。推荐您使用SDK接入,可免去签名验证以及Body格式构建等细节步骤。本文介绍URL风险检测接入的方式。

步骤一:开通服务

访问开通服务页面,开通内容安全增强版服务。

开通内容安全增强版服务后,默认付费方式是按量后付费,且按照实际用量结算当日费用,不调用服务不收费。接口接入使用后系统会按使用量自动出账,具体信息,请参见计费说明您也可以购买按量抵扣资源包,资源包相较于后付费存在一定阶梯折扣,适合使用量级可预期和较大的用户。

步骤二:创建RAM用户并授权

在集成SDK之前,您需要创建一个用于调用SDK的用户身份,获取身份关联的OpenAPI访问凭据,并授予访问云上资源的访问权限。本文创建RAM用户,获取访问凭据为AccessKey,并授予调用URL风险检测服务的权限。更多信息,请参见集成SDK

  1. 使用阿里云账号(主账号)或具有管理权限的RAM用户登录RAM控制台

  2. 创建RAM用户,勾选OpenAPI调用访问,并记录下RAM用户生成的AccessKey。具体操作,请参见创建RAM用户

  3. 向RAM用户授权系统策略权限:AliyunYundunGreenWebFullAccess。具体操作,请参见为RAM用户授权

步骤三:安装并接入URL风险检测服务

目前支持的接入地域为:

地域

外网接入地址

内网接入地址

华东2(上海)

green-cip.cn-shanghai.aliyuncs.com

green-cip-vpc.cn-shanghai.aliyuncs.com

说明

如果需要其他语言的SDK示例代码,您可以通过OpenAPI 开发者门户在线调试工具调试API接口,该工具会自动生成相应API的SDK调用示例代码。在线调试API接口如下:

阿里云SDK代码通过定义ALIBABA_CLOUD_ACCESS_KEY_IDALIBABA_CLOUD_ACCESS_KEY_SECRET环境变量来创建默认的访问凭证。调用接口时,程序直接访问凭证,读取您的访问密钥(即AccessKey)并自动完成鉴权。您在接入SDK代码示例之前,请先配置环境变量。具体操作,请参见身份验证配置

Java SDK

在pom.xml中加入相应依赖,就可以在Maven工程中使用SDK。

  1. dependencies中添加如下依赖:

    <dependency>
      <groupId>com.aliyun</groupId>
      <artifactId>green20220302</artifactId>
      <version>2.2.0</version>
    </dependency>
  2. 接入Java SDK。

    • 提交URL风险检测任务代码示例

      import com.alibaba.fastjson.JSON;
      import com.aliyun.green20220302.Client;
      import com.aliyun.green20220302.models.UrlAsyncModerationRequest;
      import com.aliyun.green20220302.models.UrlAsyncModerationResponse;
      import com.aliyun.green20220302.models.UrlAsyncModerationResponseBody;
      import com.aliyun.teaopenapi.models.Config;
      import com.aliyun.teautil.models.RuntimeOptions;
      
      import java.util.HashMap;
      import java.util.Map;
      import java.util.UUID;
      
      public class UrlAsyncModerationDemo {
      
          /**
           * 创建请求客户端
           *
           * @param accessKeyId
           * @param accessKeySecret
           * @param endpoint
           * @return
           * @throws Exception
           */
          public static Client createClient(String accessKeyId, String accessKeySecret, String endpoint) throws Exception {
              Config config = new Config();
              config.setAccessKeyId(accessKeyId);
              config.setAccessKeySecret(accessKeySecret);
              // 设置http代理。
              // config.setHttpProxy("http://10.10.xx.xx:xxxx");
              // 设置https代理。
              // config.setHttpsProxy("https://10.10.xx.xx:xxxx");
              // 接入区域和地址请根据实际情况修改
              config.setEndpoint(endpoint);
              return new Client(config);
          }
      
          public static UrlAsyncModerationResponse invokeFunction(String accessKeyId, String accessKeySecret, String endpoint) throws Exception {
              //注意,此处实例化的client请尽可能重复使用,避免重复建立连接,提升检测性能。
              Client client = createClient(accessKeyId, accessKeySecret, endpoint);
      
              // 创建RuntimeObject实例并设置运行参数
              RuntimeOptions runtime = new RuntimeOptions();
      
              // 检测参数构造。
              Map<String, String> serviceParameters = new HashMap<>();
              //公网可访问的URL。
              serviceParameters.put("url", "https://www.aliyun.com/");
              //检测数据唯一标识。
              serviceParameters.put("dataId", UUID.randomUUID().toString());
              //检测结果回调通知您的URL。
              serviceParameters.put("callback", "http://www.aliyun.com");
              //随机字符串,该值用于回调通知请求中的签名。
              serviceParameters.put("seed", "seedCode");
              //使用回调通知时(callback),设置对回调通知内容进行签名的算法。
              serviceParameters.put("cryptType", "SM3");
      
              UrlAsyncModerationRequest request = new UrlAsyncModerationRequest();
              // url检测service,示例:url_detection_pro
              request.setService("url_detection_pro");
              request.setServiceParameters(JSON.toJSONString(serviceParameters));
      
              UrlAsyncModerationResponse response = null;
              try {
                  response = client.urlAsyncModerationWithOptions(request, runtime);
              } catch (Exception e) {
                  e.printStackTrace();
              }
              return response;
          }
      
          public static void main(String[] args) throws Exception {
              /**
               * 阿里云账号AccessKey拥有所有API的访问权限,建议您使用RAM用户进行API访问或日常运维。
               * 常见获取环境变量方式:
               * 方式一:
               *     获取RAM用户AccessKey ID:System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
               *     获取RAM用户AccessKey Secret:System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
               * 方式二:
               *     获取RAM用户AccessKey ID:System.getProperty("ALIBABA_CLOUD_ACCESS_KEY_ID");
               *     获取RAM用户AccessKey Secret:System.getProperty("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
               */
              String accessKeyId = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
              String accessKeySecret = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
              UrlAsyncModerationResponse response = invokeFunction(accessKeyId, accessKeySecret, "green-cip.cn-shanghai.aliyuncs.com");
      
              // 打印检测结果。
              if (response != null) {
                  if (response.getStatusCode() == 200) {
                      //返回结果中包含reqId字段,获取异步检测结果时将该字段作为入参,获取图片检测结果
                      UrlAsyncModerationResponseBody body = response.getBody();
                      if (body.getCode() == 200) {
                          System.out.println(JSON.toJSONString(body));
                      } else {
                          System.out.println("url moderation not success. code:" + body.getCode());
                      }
                  } else {
                      System.out.println("response not success. status:" + response.getStatusCode());
                  }
              }
          }
      }
    • 获取URL风险检测任务结果代码示例

      package com.example.demo.cip.image;
      
      import com.alibaba.fastjson.JSON;
      import com.aliyun.green20220302.Client;
      import com.aliyun.green20220302.models.DescribeUrlModerationResultRequest;
      import com.aliyun.green20220302.models.DescribeUrlModerationResultResponse;
      import com.aliyun.teaopenapi.models.Config;
      import com.aliyun.teautil.models.RuntimeOptions;
      
      public class DescribeUrlModerationResultDemo {
          /**
           * 创建请求客户端
           *
           * @param accessKeyId
           * @param accessKeySecret
           * @param endpoint
           * @return
           * @throws Exception
           */
          public static Client createClient(String accessKeyId, String accessKeySecret, String endpoint) throws Exception {
              Config config = new Config();
              config.setAccessKeyId(accessKeyId);
              config.setAccessKeySecret(accessKeySecret);
              // 设置http代理。
              // config.setHttpProxy("http://10.10.xx.xx:xxxx");
              // 设置https代理。
              // config.setHttpsProxy("https://10.10.xx.xx:xxxx");
              // 接入区域和地址请根据实际情况修改
              config.setEndpoint(endpoint);
              return new Client(config);
          }
      
          public static DescribeUrlModerationResultResponse invokeFunction(String accessKeyId, String accessKeySecret, String endpoint) throws Exception {
              //注意,此处实例化的client请尽可能重复使用,避免重复建立连接,提升检测性能。
              Client client = createClient(accessKeyId, accessKeySecret, endpoint);
      
              // 创建RuntimeObject实例并设置运行参数
              RuntimeOptions runtime = new RuntimeOptions();
      
              //构造请求入参
              DescribeUrlModerationResultRequest request = new DescribeUrlModerationResultRequest();
              //将提交异步检测任务时返回值中的reqId作为获取结果的入参。例如:DFEXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXX44
              request.setReqId("DFEXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXX44");
      
              DescribeUrlModerationResultResponse response = null;
              try {
                  response = client.describeUrlModerationResultWithOptions(request, runtime);
              } catch (Exception e) {
                  e.printStackTrace();
              }
              return response;
          }
      
          public static void main(String[] args) throws Exception {
              /**
               * 阿里云账号AccessKey拥有所有API的访问权限,建议您使用RAM用户进行API访问或日常运维。
               * 常见获取环境变量方式:
               * 方式一:
               *     获取RAM用户AccessKey ID:System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
               *     获取RAM用户AccessKey Secret:System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
               * 方式二:
               *     获取RAM用户AccessKey ID:System.getProperty("ALIBABA_CLOUD_ACCESS_KEY_ID");
               *     获取RAM用户AccessKey Secret:System.getProperty("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
               */
              String accessKeyId = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
              String accessKeySecret = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
              DescribeUrlModerationResultResponse response = invokeFunction(accessKeyId, accessKeySecret, "green-cip.cn-shanghai.aliyuncs.com");
      
              // 打印检测结果。
              if (response != null) {
                  if (response.getStatusCode() == 200) {
                      System.out.println(JSON.toJSONString(response.getBody()));
                  } else {
                      System.out.println("response not success. status:" + response.getStatusCode());
                  }
              }
      
          }
      }

Python SDK

支持Python 3.6及以上版本。

  1. 执行如下命令安装pip。

    pip install alibabacloud_green20220302==2.2.0
  2. 接入Python SDK。

    • 提交URL风险检测任务代码示例

      from alibabacloud_green20220302.client import Client
      from alibabacloud_green20220302 import models
      from alibabacloud_tea_openapi.models import Config
      from alibabacloud_tea_util import models as util_models
      import json
      import os
      import uuid
      
      
      # 创建请求客户端
      def create_client(access_key_id, access_key_secret, endpoint):
          config = Config(
              access_key_id=access_key_id,
              access_key_secret=access_key_secret,
              # 设置http代理。
              # http_proxy='http://10.10.xx.xx:xxxx',
              # 设置https代理。
              # https_proxy='https://10.10.xx.xx:xxxx',
              # 接入区域和地址请根据实际情况修改。
              endpoint=endpoint
          )
          return Client(config)
      
      
      def invoke_function(access_key_id, access_key_secret, endpoint):
          # 注意:此处实例化的client请尽可能重复使用,避免重复建立连接,提升检测性能。
          client = create_client(access_key_id, access_key_secret, endpoint)
          # 创建RuntimeObject实例并设置运行参数。
          runtime = util_models.RuntimeOptions()
      
          # 检测参数构造。
          service_parameters = {
              # 公网可访问的url。
              'url': 'https://www.aliyun.com/',
              # 数据唯一标识
              'dataId': str(uuid.uuid1()),
              # 检测结果回调通知您的URL。
              'callback': 'http://www.aliyun.com',
              # 随机字符串,该值用于回调通知请求中的签名。
              'seed': 'seedCode',
              # 使用回调通知时(callback),设置对回调通知内容进行签名的算法。
              'cryptType': 'SM3'
          }
      
          url_image_moderation_request = models.UrlAsyncModerationRequest(
              # url检测service,示例:url_detection_pro
              service='url_detection_pro',
              service_parameters=json.dumps(service_parameters)
          )
      
          try:
              return client.url_async_moderation_with_options(url_image_moderation_request, runtime),
          except Exception as err:
              print(err)
      
      
      if __name__ == '__main__':
          access_key_id = os.environ['ALIBABA_CLOUD_ACCESS_KEY_ID']
          access_key_secret = os.environ['ALIBABA_CLOUD_ACCESS_KEY_SECRET']
          # 接入区域和地址请根据实际情况修改。
          response = invoke_function(access_key_id, access_key_secret, 'green-cip.cn-shanghai.aliyuncs.com')
          # 打印结果。
          if len(response) >= 1:
              if response[0].status_code == 200:
                  # 调用成功。
                  # 获取结果ReqId。
                  result = response[0].body
                  print('response success. result:{}'.format(result))
                  if result.code == 200:
                      result_data = result.data
                      print('result: {}'.format(result_data))
              else:
                  print('response not success. status:{} ,result:{}'.format(response.status_code, response))
    • 获取URL风险检测任务结果代码示例

      from alibabacloud_green20220302.client import Client
      from alibabacloud_green20220302 import models
      from alibabacloud_tea_openapi.models import Config
      from alibabacloud_tea_util import models as util_models
      import os
      
      
      # 创建请求客户端
      def create_client(access_key_id, access_key_secret, endpoint):
          config = Config(
              access_key_id=access_key_id,
              access_key_secret=access_key_secret,
              # 设置http代理。
              # http_proxy='http://10.10.xx.xx:xxxx',
              # 设置https代理。
              # https_proxy='https://10.10.xx.xx:xxxx',
              # 接入区域和地址请根据实际情况修改。
              endpoint=endpoint
          )
          return Client(config)
      
      
      def invoke_function(access_key_id, access_key_secret, endpoint):
          # 注意:此处实例化的client请尽可能重复使用,避免重复建立连接,提升检测性能。
          client = create_client(access_key_id, access_key_secret, endpoint)
          # 创建RuntimeObject实例并设置运行参数。
          runtime = util_models.RuntimeOptions()
      
          # 构造请求入参。
          describe_result_request = models.DescribeUrlModerationResultRequest(
              # 将提交异步检测任务时返回值中的ReqId作为获取结果的入参。例如:DFEXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXX44
              req_id='DFEXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXX44',
          )
      
          try:
              return client.describe_url_moderation_result_with_options(describe_result_request, runtime)
          except Exception as err:
              print(err)
      
      
      if __name__ == '__main__':
          access_key_id = os.environ['ALIBABA_CLOUD_ACCESS_KEY_ID']
          access_key_secret = os.environ['ALIBABA_CLOUD_ACCESS_KEY_SECRET']
          # 接入区域和地址请根据实际情况修改。
          response = invoke_function(access_key_id, access_key_secret, 'green-cip.cn-shanghai.aliyuncs.com')
          # 打印结果。
          if response is not None:
              if response.status_code == 200:
                  # 调用成功。
                  # 获取审核结果。
                  result = response.body
                  print('response success. result:{}'.format(result))
                  if result.code == 200:
                      result_data = result.data
                      print('result: {}'.format(result_data))
              else:
                  print('response not success. status:{} ,result:{}'.format(response.status_code, response))

PHP SDK

支持PHP 5.6及以上版本。

  1. 执行如下命令引入相关依赖。

    composer require alibabacloud/green-20220302 2.2.0
  2. 接入PHP SDK。

    • 提交URL风险检测任务代码示例

      <?php
      require('../../../vendor/autoload.php');
      
      use AlibabaCloud\SDK\Green\V20220302\Models\UrlAsyncModerationResponse;
      use Darabonba\OpenApi\Models\Config;
      use AlibabaCloud\Tea\Utils\Utils\RuntimeOptions;
      use AlibabaCloud\SDK\Green\V20220302\Green;
      use AlibabaCloud\SDK\Green\V20220302\Models\UrlAsyncModerationRequest;
      
      /**
       * 创建请求客户端
       * @param $accessKeyId
       * @param $accessKeySecret
       * @param $endpoint
       * @return Green
       */
      function create_client($accessKeyId, $accessKeySecret, $endpoint): Green
      {
          $config = new Config([
              "accessKeyId" => $accessKeyId,
              "accessKeySecret" => $accessKeySecret,
              // 设置HTTP代理。
              // "httpProxy" => "http://10.10.xx.xx:xxxx",
              // 设置HTTPS代理。
              // "httpsProxy" => "https://10.10.xx.xx:xxxx",
              "endpoint" => $endpoint,
          ]);
          return new Green($config);
      }
      
      /**
       * 提交检测任务
       * @param $accessKeyId
       * @param $accessKeySecret
       * @param $endpoint
       * @return UrlAsyncModerationResponse
       */
      function invoke($accessKeyId, $accessKeySecret, $endpoint): UrlAsyncModerationResponse
      {
          // 注意:此处实例化的client请尽可能重复使用,避免重复建立连接,提升检测性能。
          $client = create_client($accessKeyId, $accessKeySecret, $endpoint);
          // 创建RuntimeObject实例并设置运行参数。
          $runtime = new RuntimeOptions([]);
          // 检测参数构造。
          $request = new UrlAsyncModerationRequest();
          $serviceParameters = array(
              // 待检测url,公网可访问的URL。
              'url' => 'https://aliyun.com',
              // 检测数据唯一标识。
              'dataId' => uniqid(),
              // 检测结果回调通知您的URL。
              'callback' => 'http://www.aliyun.com',
              //随机字符串,该值用于回调通知请求中的签名。
              'seed' => 'seedCode',
              // 使用回调通知时(callback),设置对回调通知内容进行签名的算法。
              'cryptType' => 'SM3'
          );
          // URL检测service,示例:url_detection_pro
          $request->service = "url_detection_pro";
          $request->serviceParameters = json_encode($serviceParameters);
          // 提交检测
          return $client->urlAsyncModerationWithOptions($request, $runtime);
      }
      
      $accessKeyId = getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
      $accessKeySecret = getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
      $endpoint = "green-cip.cn-shanghai.aliyuncs.com";
      
      try {
          $response = invoke($accessKeyId, $accessKeySecret, $endpoint);
          //返回结果中包含reqId字段,获取异步检测结果时将该字段作为入参,获取图片检测结果
          print_r(json_encode($response->body, JSON_UNESCAPED_UNICODE));
      } catch (Exception $e) {
          var_dump($e->getMessage());
          var_dump($e->getErrorInfo());
          var_dump($e->getLastException());
          var_dump($e->getLastRequest());
      }
    • 获取URL风险检测任务结果代码示例

      <?php
      require('../../../vendor/autoload.php');
      
      use AlibabaCloud\SDK\Green\V20220302\Models\DescribeUrlModerationResultResponse;
      use Darabonba\OpenApi\Models\Config;
      use AlibabaCloud\Tea\Utils\Utils\RuntimeOptions;
      use AlibabaCloud\SDK\Green\V20220302\Green;
      use AlibabaCloud\SDK\Green\V20220302\Models\DescribeUrlModerationResultRequest;
      
      /**
       * 创建请求客户端
       * @param $accessKeyId
       * @param $accessKeySecret
       * @param $endpoint
       * @return Green
       */
      function create_client($accessKeyId, $accessKeySecret, $endpoint): Green
      {
          $config = new Config([
              "accessKeyId" => $accessKeyId,
              "accessKeySecret" => $accessKeySecret,
              "endpoint" => $endpoint,
          ]);
          return new Green($config);
      }
      
      /**
       * 提交检测任务
       * @param $accessKeyId
       * @param $accessKeySecret
       * @param $endpoint
       * @return DescribeUrlModerationResultResponse
       */
      function invoke($accessKeyId, $accessKeySecret, $endpoint): DescribeUrlModerationResultResponse
      {
          // 注意:此处实例化的client请尽可能重复使用,避免重复建立连接,提升检测性能。
          $client = create_client($accessKeyId, $accessKeySecret, $endpoint);
          // 创建RuntimeObject实例并设置运行参数。
          $runtime = new RuntimeOptions([]);
          // 请求参数构造。
          $request = new DescribeUrlModerationResultRequest();
          // 将提交异步检测任务时返回值中的reqId作为获取结果的入参。例如:DFEXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXX44
          $request->reqId = "DFEXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXX44";
          // 提交检测
          return $client->describeUrlModerationResultWithOptions($request, $runtime);
      }
      
      $accessKeyId = getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
      $accessKeySecret = getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
      $endpoint = "green-cip.cn-shanghai.aliyuncs.com";
      
      try {
          $response = invoke($accessKeyId, $accessKeySecret, $endpoint);
          print_r(json_encode($response->body, JSON_UNESCAPED_UNICODE));
      } catch (Exception $e) {
          var_dump($e->getMessage());
          var_dump($e->getErrorInfo());
          var_dump($e->getLastException());
          var_dump($e->getLastRequest());
      }

Go SDK

  1. 执行如下命令引入相关依赖。

    go get github.com/alibabacloud-go/green-20220302/v2
  2. 接入Go SDK。

    • 提交URL风险检测任务代码示例

      package main
      
      import (
      	"encoding/json"
      	"fmt"
      	openapi "github.com/alibabacloud-go/darabonba-openapi/v2/client"
      	green20220302 "github.com/alibabacloud-go/green-20220302/v2/client"
      	util "github.com/alibabacloud-go/tea-utils/v2/service"
      	"github.com/alibabacloud-go/tea/tea"
      	"github.com/google/uuid"
      	"net/http"
      	"os"
      )
      
      //创建请求客户端
      func createClient(accessKeyId *string, accessKeySecret *string, endpoint *string) (*green20220302.Client, error) {
      	config := &openapi.Config{
      		/**
      		 * 阿里云账号AccessKey拥有所有API的访问权限,建议您使用RAM用户进行API访问或日常运维。
      		 * 强烈建议不要把AccessKey ID和AccessKey Secret保存到工程代码里,否则可能导致AccessKey泄露,威胁您账号下所有资源的安全。
      		 * 常见获取环境变量方式:
      		 * 获取RAM用户AccessKey ID:os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_ID")
      		 * 获取RAM用户AccessKey Secret:os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")
      		 */
      		AccessKeyId:     accessKeyId,
      		AccessKeySecret: accessKeySecret,
      		// 设置HTTP代理。
      		// HttpProxy: tea.String("http://10.10.xx.xx:xxxx"),
      		// 设置HTTPS代理。
      		// HttpsProxy: tea.String("https://username:password@xxx.xxx.xxx.xxx:9999"),
      		Endpoint: endpoint,
      	}
      	//注意,此处实例化的client请尽可能重复使用,避免重复建立连接,提升检测性能。
      	return green20220302.NewClient(config)
      }
      
      func invoke(accessKeyId *string, accessKeySecret *string, endpoint *string) (_result *green20220302.UrlAsyncModerationResponse, _err error) {
      	//注意,此处实例化的client请尽可能重复使用,避免重复建立连接,提升检测性能。
      	client, _err := createClient(accessKeyId, accessKeySecret, endpoint)
      	if _err != nil {
      		return nil, _err
      	}
      	//运行时参数设置,仅对使用了该运行时参数实例的请求有效
      	runtime := &util.RuntimeOptions{}
      
      	//构建图片检测请求。
      	serviceParameters, _ := json.Marshal(
      		map[string]interface{}{
      			// 待检测url链接,公网可访问的URL。
      			"url": "https://www.aliyun.com",
      			// 待检测数据的ID。
      			"dataId": uuid.New(),
      			// 检测结果回调通知您的URL。
      			"callback": "http://www.aliyun.com",
      			// 随机字符串,该值用于回调通知请求中的签名。
      			"seed": "seedCode",
      			// 使用回调通知时(callback),设置对回调通知内容进行签名的算法。
      			"cryptType": "SM3",
      		},
      	)
      	imageModerationRequest := &green20220302.UrlAsyncModerationRequest{
      		//url检测service,示例:url_detection_pro
      		Service:           tea.String("url_detection_pro"),
      		ServiceParameters: tea.String(string(serviceParameters)),
      	}
      
      	return client.UrlAsyncModerationWithOptions(imageModerationRequest, runtime)
      
      }
      
      func main() {
      	/**
      	 * 阿里云账号AccessKey拥有所有API的访问权限,建议您使用RAM用户进行API访问或日常运维。
      	 * 强烈建议不要把AccessKey ID和AccessKey Secret保存到工程代码里,否则可能导致AccessKey泄露,威胁您账号下所有资源的安全。
      	 * 常见获取环境变量方式:
      	 * 获取RAM用户AccessKey ID:os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_ID")
      	 * 获取RAM用户AccessKey Secret:os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")
      	 */
      	//var accessKeyId= tea.String("建议从环境变量中获取RAM用户AccessKey ID");
      	//var accessKeySecret= tea.String("建议从环境变量中获取RAM用户AccessKey Secret");
      	var accessKeyId = tea.String(os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"))
      	var accessKeySecret = tea.String(os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"))
      	//接入区域和地址请根据实际情况修改
      	var endpoint = tea.String("green-cip.cn-shanghai.aliyuncs.com")
      	response, _err := invoke(accessKeyId, accessKeySecret, endpoint)
      
      	if response != nil {
      		statusCode := tea.IntValue(tea.ToInt(response.StatusCode))
      		body := response.Body
      		imageModerationResponseData := body.Data
      		if statusCode == http.StatusOK {
      			fmt.Println("response success. response:" + body.String())
      			if tea.IntValue(tea.ToInt(body.Code)) == 200 {
      				// 返回结果中包含ReqId字段,获取异步检测结果时将该字段作为入参,获取图片检测结果
      				fmt.Println("response ReqId:" + tea.StringValue(imageModerationResponseData.ReqId))
      			} else {
      				fmt.Println("url moderation not success. status" + tea.ToString(body.Code))
      			}
      		} else {
      			fmt.Print("response not success. status:" + tea.ToString(statusCode))
      			fmt.Println("Error:", _err)
      		}
      	}
      }
    • 获取URL风险检测任务结果代码示例

      package main
      
      import (
      	"fmt"
      	openapi "github.com/alibabacloud-go/darabonba-openapi/v2/client"
      	green20220302 "github.com/alibabacloud-go/green-20220302/v2/client"
      	util "github.com/alibabacloud-go/tea-utils/v2/service"
      	"github.com/alibabacloud-go/tea/tea"
      	"net/http"
      	"os"
      )
      
      //创建请求客户端
      func createClient(accessKeyId *string, accessKeySecret *string, endpoint *string) (*green20220302.Client, error) {
      	config := &openapi.Config{
      		/**
      		 * 阿里云账号AccessKey拥有所有API的访问权限,建议您使用RAM用户进行API访问或日常运维。
      		 * 强烈建议不要把AccessKey ID和AccessKey Secret保存到工程代码里,否则可能导致AccessKey泄露,威胁您账号下所有资源的安全。
      		 * 常见获取环境变量方式:
      		 * 获取RAM用户AccessKey ID:os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_ID")
      		 * 获取RAM用户AccessKey Secret:os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")
      		 */
      		AccessKeyId:     accessKeyId,
      		AccessKeySecret: accessKeySecret,
      		// 设置HTTP代理。
      		// HttpProxy: tea.String("http://10.10.xx.xx:xxxx"),
      		// 设置HTTPS代理。
      		// HttpsProxy: tea.String("https://username:password@xxx.xxx.xxx.xxx:9999"),
      		Endpoint: endpoint,
      	}
      	//注意,此处实例化的client请尽可能重复使用,避免重复建立连接,提升检测性能。
      	return green20220302.NewClient(config)
      }
      
      func invoke(accessKeyId *string, accessKeySecret *string, endpoint *string) (_result *green20220302.DescribeUrlModerationResultResponse, _err error) {
      	//注意,此处实例化的client请尽可能重复使用,避免重复建立连接,提升检测性能。
      	client, _err := createClient(accessKeyId, accessKeySecret, endpoint)
      	if _err != nil {
      		return nil, _err
      	}
      	//运行时参数设置,仅对使用了该运行时参数实例的请求有效
      	runtime := &util.RuntimeOptions{}
      
      	//构建请求。
      	imageModerationRequest := &green20220302.DescribeUrlModerationResultRequest{
      		// 将提交异步检测任务时返回值中的ReqId作为获取结果的入参。例如:DFEXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXX44
      		ReqId:           tea.String("DFEXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXX44"),
      	}
      
      	return client.DescribeUrlModerationResultWithOptions(imageModerationRequest, runtime)
      
      }
      
      func main() {
      	/**
      	 * 阿里云账号AccessKey拥有所有API的访问权限,建议您使用RAM用户进行API访问或日常运维。
      	 * 强烈建议不要把AccessKey ID和AccessKey Secret保存到工程代码里,否则可能导致AccessKey泄露,威胁您账号下所有资源的安全。
      	 * 常见获取环境变量方式:
      	 * 获取RAM用户AccessKey ID:os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_ID")
      	 * 获取RAM用户AccessKey Secret:os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")
      	 */
      	//var accessKeyId= tea.String("建议从环境变量中获取RAM用户AccessKey ID");
      	//var accessKeySecret= tea.String("建议从环境变量中获取RAM用户AccessKey Secret");
      	var accessKeyId = tea.String(os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"))
      	var accessKeySecret = tea.String(os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"))
      	//接入区域和地址请根据实际情况修改
      	var endpoint = tea.String("green-cip.cn-shanghai.aliyuncs.com")
      	response, _err := invoke(accessKeyId, accessKeySecret, endpoint)
      
      	if response != nil {
      		statusCode := tea.IntValue(tea.ToInt(response.StatusCode))
      		body := response.Body
      		imageModerationResponseData := body.Data
      		fmt.Println("requestId:" + tea.StringValue(body.RequestId))
      		if statusCode == http.StatusOK {
      			fmt.Println("response success. response:" + imageModerationResponseData.String())
      		} else {
      			fmt.Print("response not success. status:" + tea.ToString(statusCode))
      			fmt.Println("Error:", _err)
      		}
      	}
      }

Nodejs SDK

  1. 执行如下命令引入相关依赖。

    npm install @alicloud/green20220302@2.2.0
  2. 接入Nodejs SDK。

    • 提交URL风险检测任务代码示例

      const RPCClient = require("@alicloud/pop-core");
      const { v4: uuidv4 } = require('uuid');
      
      async function main() {
          // 注意,此处实例化的client请尽可能重复使用,避免重复建立连接,提升检测性能。
          var client = new RPCClient({
              // 阿里云账号AccessKey拥有所有API的访问权限,建议您使用RAM用户进行API访问或日常运维。
              accessKeyId: process.env['ALIBABA_CLOUD_ACCESS_KEY_ID'],
              accessKeySecret: process.env['ALIBABA_CLOUD_ACCESS_KEY_SECRET'],
              // 接入区域和地址请根据实际情况修改
              endpoint: "https://green-cip.cn-shanghai.aliyuncs.com",
              apiVersion: '2022-03-02',
              // 设置http代理
              // httpProxy: "http://xx.xx.xx.xx:xxxx",
              // 设置https代理
              // httpsProxy: "https://username:password@xxx.xxx.xxx.xxx:9999",
          });
          // 通过以下代码创建API请求并设置参数。
          var params = {
              // url检测service,示例:url_detection_pro
              "Service": "url_detection_pro",
              "ServiceParameters": JSON.stringify({
                  //数据ID唯一标识
                  "dataId": uuidv4(),
                  //待检测url链接, 公网可访问。
                  "url": "https://www.aliyun.com",
                  // 检测结果回调通知您的URL。
                  "callback": "http://www.aliyun.com",
                  //随机字符串,该值用于回调通知请求中的签名。
                  "seed": "seedCode",
                  // 使用回调通知时(callback),设置对回调通知内容进行签名的算法。
                  "cryptType": "SM3"
              })
          }
      
          var requestOption = {
              method: 'POST',
              formatParams: false,
          };
      
          try {
              //调用接口获取结果。
              var response = await client.request('UrlAsyncModeration', params, requestOption)
          } catch (err) {
              console.log(err);
          }
          return response;
      }
      
      main().then(function (response) {
          //返回结果中包含ReqId字段,获取异步检测结果时将该字段作为入参,获取图片检测结果
          console.log(JSON.stringify(response))
      });
    • 获取URL风险检测任务结果代码示例

      const RPCClient = require("@alicloud/pop-core");
      const { v4: uuidv4 } = require('uuid');
      
      async function main() {
          // 注意,此处实例化的client请尽可能重复使用,避免重复建立连接,提升检测性能。
          var client = new RPCClient({
              // 阿里云账号AccessKey拥有所有API的访问权限,建议您使用RAM用户进行API访问或日常运维。
              accessKeyId: process.env['ALIBABA_CLOUD_ACCESS_KEY_ID'],
              accessKeySecret: process.env['ALIBABA_CLOUD_ACCESS_KEY_SECRET'],
              // 接入区域和地址请根据实际情况修改
              endpoint: "https://green-cip.cn-shanghai.aliyuncs.com",
              apiVersion: '2022-03-02',
              // 设置http代理
              // httpProxy: "http://xx.xx.xx.xx:xxxx",
              // 设置https代理
              // httpsProxy: "https://username:password@xxx.xxx.xxx.xxx:9999",
          });
          // 通过以下代码创建API请求并设置参数。
          var params = {
              // 将提交异步检测任务时返回值中的ReqId作为获取结果的入参。例如:DFEXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXX44
              "ReqId": "DFEXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXX44",
          }
      
          var requestOption = {
              method: 'POST',
              formatParams: false,
          };
      
          try {
              //调用接口获取检测结果。
              var response = await client.request('DescribeUrlModerationResult', params, requestOption)
          } catch (err) {
              console.log(err);
          }
      
          return response;
      }
      
      main().then(function (response) {
          console.log(JSON.stringify(response))
      });

C# SDK

  1. 执行如下命令引入相关依赖。

    dotnet add package AlibabaCloud.SDK.Green20220302 --version 2.2.0
  2. 接入C# SDK。

    • 提交URL风险检测任务代码示例

      using Newtonsoft.Json;
      
      namespace AlibabaCloud.SDK.Green20220302
      {
          public class ImageModerationAutoRoute
          {
              public static void Main(string[] args)
              {
                  /**
                  * 阿里云账号AccessKey拥有所有API的访问权限,建议您使用RAM用户进行API访问或日常运维。
                  * 强烈建议不要把AccessKey ID和AccessKey Secret保存到工程代码里,否则可能导致AccessKey泄露,威胁您账号下所有资源的安全。
                  * 常见获取环境变量方式:
                  * 获取RAM用户AccessKey ID:Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_ID")
                  * 获取RAM用户AccessKey Secret:Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_SECRET")
                  */
                  String accessKeyId = Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_ID");
                  String accessKeySecret = Environment.GetEnvironmentVariable(
                      "ALIBABA_CLOUD_ACCESS_KEY_SECRET"
                  );
                  // 接入区域和地址请根据实际情况修改
                  String endpoint = "green-cip.cn-shanghai.aliyuncs.com";
                  //注意,此处实例化的client请尽可能重复使用,避免重复建立连接,提升检测性能。
                  Client client = createClient(accessKeyId, accessKeySecret, endpoint);
      
                  // 运行时参数设置,仅对使用了该运行时参数实例的请求有效
                  AlibabaCloud.TeaUtil.Models.RuntimeOptions runtimeOptions =
                      new AlibabaCloud.TeaUtil.Models.RuntimeOptions();
      
                  //构建URL检测请求。
                  Models.UrlAsyncModerationRequest imageModerationRequest =
                      new Models.UrlAsyncModerationRequest();
                  //url检测service,示例:url_detection_pro
                  imageModerationRequest.Service = "url_detection_pro";
                  Dictionary<string, object> task = new Dictionary<string, object>();
                  //待检测url链接,公网可访问的URL。
                  task.Add(
                      "url",
                      "https://www.aliyun.com"
                  );
                  //待检测数据的ID。
                  task.Add("dataId", Guid.NewGuid().ToString());
                  // 检测结果回调通知您的URL。
                  task.Add("callback", "http://www.aliyun.com");
                  // 随机字符串,该值用于回调通知请求中的签名。
                  task.Add("seed", "seedCode");
                  // 使用回调通知时(callback),设置对回调通知内容进行签名的算法。
                  task.Add("cryptType", "SM3");
                  imageModerationRequest.ServiceParameters = JsonConvert.SerializeObject(task);
      
                  try
                  {
                      //调用API获取检测结果。
                      Models.UrlAsyncModerationResponse response =
                          client.UrlAsyncModerationWithOptions(imageModerationRequest, runtimeOptions);
                      // 返回结果中包含ReqId字段,获取异步检测结果时将该字段作为入参,获取图片检测结果
                      Console.WriteLine(response.Body.RequestId);
                      Console.WriteLine(JsonConvert.SerializeObject(response.Body));
                  }
                  catch (Exception _err)
                  {
                      Console.WriteLine(_err);
                  }
              }
      
              //创建请求客户端
              public static Client createClient(
                  String accessKeyId,
                  String accessKeySecret,
                  String endpoint
              )
              {
                  AlibabaCloud.OpenApiClient.Models.Config config =
                      new AlibabaCloud.OpenApiClient.Models.Config
                      {
                          AccessKeyId = accessKeyId,
                          AccessKeySecret = accessKeySecret,
                          //设置HTTP代理。
                          //HttpProxy = "http://10.10.xx.xx:xxxx",
                          //设置HTTPS代理。
                          //HttpsProxy = "https://username:password@xxx.xxx.xxx.xxx:9999",
                          //访问的域名。
                          Endpoint = endpoint,
                      };
                  return new Client(config);
              }
          }
      }
    • 获取URL风险检测任务结果代码示例

      using Newtonsoft.Json;
      
      namespace AlibabaCloud.SDK.Green20220302
      {
          public class ImageModerationAutoRoute
          {
              public static void Main(string[] args)
              {
                  /**
                  * 阿里云账号AccessKey拥有所有API的访问权限,建议您使用RAM用户进行API访问或日常运维。
                  * 强烈建议不要把AccessKey ID和AccessKey Secret保存到工程代码里,否则可能导致AccessKey泄露,威胁您账号下所有资源的安全。
                  * 常见获取环境变量方式:
                  * 获取RAM用户AccessKey ID:Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_ID")
                  * 获取RAM用户AccessKey Secret:Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_SECRET")
                  */
                  String accessKeyId = Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_ID");
                  String accessKeySecret = Environment.GetEnvironmentVariable(
                      "ALIBABA_CLOUD_ACCESS_KEY_SECRET"
                  );
                  // 接入区域和地址请根据实际情况修改
                  String endpoint = "green-cip.cn-shanghai.aliyuncs.com";
                  //注意,此处实例化的client请尽可能重复使用,避免重复建立连接,提升检测性能。
                  Client client = createClient(accessKeyId, accessKeySecret, endpoint);
      
                  // 运行时参数设置,仅对使用了该运行时参数实例的请求有效
                  AlibabaCloud.TeaUtil.Models.RuntimeOptions runtimeOptions =
                      new AlibabaCloud.TeaUtil.Models.RuntimeOptions();
      
                  //构建URL检测请求。
                  Models.DescribeUrlModerationResultRequest imageModerationRequest =
                      new Models.DescribeUrlModerationResultRequest();
                  //将提交异步检测任务时返回值中的ReqId作为获取结果的入参。例如:DFEXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXX44
                  imageModerationRequest.ReqId = "DFEXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXX44";
      
                  try
                  {
                      //调用API获取检测结果。
                      Models.DescribeUrlModerationResultResponse response = client.DescribeUrlModerationResultWithOptions(
                          imageModerationRequest,
                          runtimeOptions
                      );
      
                      Console.WriteLine(response.Body.RequestId);
                      Console.WriteLine(JsonConvert.SerializeObject(response.Body));
                  }
                  catch (Exception _err)
                  {
                      Console.WriteLine(_err);
                  }
              }
      
              //创建请求客户端
              public static Client createClient(
                  String accessKeyId,
                  String accessKeySecret,
                  String endpoint
              )
              {
                  AlibabaCloud.OpenApiClient.Models.Config config =
                      new AlibabaCloud.OpenApiClient.Models.Config
                      {
                          AccessKeyId = accessKeyId,
                          AccessKeySecret = accessKeySecret,
                          //设置HTTP代理。
                          //HttpProxy = "http://10.10.xx.xx:xxxx",
                          //设置HTTPS代理。
                          //HttpsProxy = "https://username:password@xxx.xxx.xxx.xxx:9999",
                          //访问的域名。
                          Endpoint = endpoint,
                      };
                  return new Client(config);
              }
          }
      }

如果您在使用过程中出现问题,请加入钉群(钉群号:35573806),联系产品技术专家进行咨询。