POST-病毒检查

介绍如何调用接口在针对文本内容的进行病毒查杀。

接口介绍

病毒检查接口用于发送内容进行病毒检查相关的安全审查。

请求方式

POST

接口地址

/skg/v1/swg/antivirus/<mode>

请求参数

参数名称 参数位置 是否必须 描述
<mode> URL参数 调用模式。
  • sync
  • async
  • bulk_async
<文本请求模式> URL参数 指定文本内容的请求模式为同步或异步。

元数据参数

支持文本内容的扫描

metadata参数定义

参数名 类型 适用状态 说明
queryID String(必选) 同步和异步 与此请求关联的事件查询ID,保持唯一。若请求无事件生成则无法查询到事件详情。
注: queryid的值对应于第三方云服务中的流量UUID。
filename String(可选) 同步 文件名 - 可做根据文件名设置的策略匹配
md5 String(可选) 同步和异步 文件MD5值,用于记录和缓存加速。支持MD5和文档一同送检,也支持仅送检MD5。
"md5":"09e066b382d4225de3c0594aa89b5fi"
uploadtype String(必选) 异步 只限于异步。支持AWS S3、阿里云OSS、腾讯云COS、Swift等云存储,以及本地文件和下载URL。
  • swift
  • oss
  • cos
  • s3
  • file
  • http
callback_url String(可选) 异步 只限于异步模式填写回调函数的url
objectInfo

Dict(可选)

异步 只限于异步模式并使用对象存储时使用。参考下面表格查看objectInfo具体参数配置
以下表格列出了objectInfo参数的具体属性。
参数名 类型 说明
以下参数适用于s3(aws)

s3Region String(可选) 使用s3时的region name,如果运行在EC2上并使用AWS IAM role,则以下三项可省略
accessKey String(可选) 使用s3时的access key
secretKey String(可选) 使用s3时的secret key
endpointUrl String(可选) 使用s3时的endpoint url
s3Bucket String(必选) 使用s3时的对象bucket
s3Key String(必选) 使用s3时的对象key(文件名)

以下参数适用于swift(openstack)

X-Auth-Token

String(可选) 使用swift时的认证token,如果提供有效的X-Auth-Token,则以下三项可省略

authUrl

String(可选) 使用swift时的认证url
X-Auth-User String(可选) 使用swift时的认证user
X-Auth-Key String(可选) 使用swift时的认证key(密码)
objectUrl String(必选)

使用swift时完整的对象访问路径

以下参数适用于oss(阿里云)

ossEndpoint

String(可选)

使用oss时的endpoint

accessKeyId

String(可选)

使用oss时的accessKeyId

accessKeySecret

String(可选)

使用oss时的accessKeySecret

ossBucket

String(必选)

使用oss时的对象bucket

ossKey

String(必选)

使用oss时的对象key(文件名)

以下参数适用于cos(腾讯云)

cosRegion

String(必选)

使用cos时的region name

secretId

String(必选)

使用cos时的secretId

secretKey

String(必选)

使用cos时的secretKey

cosBucket

String(必选)

使用cos时的对象bucket

cosKey

String(必选)

使用cos时的对象key

Python请求示例 - 病毒检查(同步模式 )

# -*- coding: utf-8 -*-
from requests.packages.urllib3.exceptions import InsecureRequestWarning
from ucwi_config import UCWIConfig
from ucwi_auth import get_headers
import requests
import json
import uuid

requests.packages.urllib3.disable_warnings(InsecureRequestWarning)

api = "/skg/v1/swg/antivirus/sync"
url = "{0}{1}".format(UCWIConfig.base_url, api)
file_path = "test.txt"

metadata = {
    # 与此次请求关联的ID,需要唯一,异步时用于事件查询
    "queryID": str(uuid.uuid4()),
}

headers = get_headers()
data = {"metadata": json.dumps(metadata)}
fd = open(file_path)
files = {
    "request": fd
}
response = requests.post(url, headers=headers, data=data, files=files, verify=False)
fd.close()

if response.status_code != 200:
    print("Bad request, response code:", response.status_code)
    print(response.text)
else:
    result = response.json()
    if result["responseCode"] != 200:
        print("Bad request, response code:", result["responseCode"])
        print(result["message"])
    else:
        if result["hasVirus"]:
            print("    virus info:")
            for info in result["virus_info"]:
                print(json.dumps(info, indent=2).encode('utf-8').decode('raw_unicode_escape'))
        else:
            print("no virus.")

Python请求示例 - 病毒检查(异步模式 )

以下示例为使用Python代码调用接口,以在异步模式下,对文件内容进行病毒检查。

注: 在如下Python代码示例中,导入的Header文件ucwi_config ucwi_auth的需事先创建,如需详细参考示例,请参阅Header文件示例
# -*- coding: utf-8 -*-
from requests.packages.urllib3.exceptions import InsecureRequestWarning
from ucwi_config import UCWIConfig
from ucwi_auth import get_headers
import requests
import json
import uuid

requests.packages.urllib3.disable_warnings(InsecureRequestWarning)

api = "/skg/v1/swg/antivirus/async"
url = "{0}{1}".format(UCWIConfig.base_url, api)
file_path = "test.txt"

metadata = {
    "queryID": str(uuid.uuid4()),
    # 此次请求关联的UUID,需要唯一,在异步模式下,用于事件查询
    "uploadtype": "file",
    "callback_url": UCWIConfig.callback_url + "/virus"
}

headers = get_headers()
data = {"metadata": json.dumps(metadata)}
fd = open(file_path)
files = {
    "request": fd
}
response = requests.post(url, headers=headers, data=data, files=files, verify=False)
fd.close()

if response.status_code != 200:
    print("Bad request, response code:", response.status_code)
    print(response.text)
else:
    result = response.json()
    print(result["message"])

返回参数

名称 描述
hasVirus 如返回值为True则代表检查到病毒。如果未发现病毒,则返回值显示为false。
queryID 与此请求关联的事件查询ID,保持唯一。若请求无事件生成则无法查询到事件详情。
result 检查结果
responseCode 返回的状态码
localDetectedTime 本地检测事件
virus_info.VirusName 病毒名称
virus_info.VirusType 病毒类型
virus_info.VirusID 病毒ID
virus_info.VirusDesc 病毒解释

返回示例

{
    "hasVirus": true,                       //如果未发现病毒,此处显示为false
    "queryID": "5f08ec98-c948-4e71-b85a-f564e7081572",
    "result": 0,
    "responseCode": 200,
    "localDetectedTime": "2020-02-12T16:10:09.673582""virus_info": [                         //如果未发现病毒,此处显示为空值[]
        {
            "VirusName": "HEUR/AGEN.1044737",
            "VirusType": "heuristic",
            "VirusID": 0,
            "VirusDesc": "Contains suspicious code HEUR/AGEN.1044737"
        }
    ]
}