tencentcloud-sdk-python-waf 3.1.99__tar.gz → 3.1.102__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (17) hide show
  1. {tencentcloud_sdk_python_waf-3.1.99 → tencentcloud_sdk_python_waf-3.1.102}/PKG-INFO +2 -2
  2. {tencentcloud_sdk_python_waf-3.1.99 → tencentcloud_sdk_python_waf-3.1.102}/setup.py +1 -1
  3. {tencentcloud_sdk_python_waf-3.1.99 → tencentcloud_sdk_python_waf-3.1.102}/tencentcloud/__init__.py +1 -1
  4. {tencentcloud_sdk_python_waf-3.1.99 → tencentcloud_sdk_python_waf-3.1.102}/tencentcloud/waf/v20180125/errorcodes.py +39 -0
  5. {tencentcloud_sdk_python_waf-3.1.99 → tencentcloud_sdk_python_waf-3.1.102}/tencentcloud/waf/v20180125/models.py +877 -104
  6. {tencentcloud_sdk_python_waf-3.1.99 → tencentcloud_sdk_python_waf-3.1.102}/tencentcloud/waf/v20180125/waf_client.py +46 -0
  7. {tencentcloud_sdk_python_waf-3.1.99 → tencentcloud_sdk_python_waf-3.1.102}/tencentcloud/waf/v20180125/waf_client_async.py +36 -0
  8. {tencentcloud_sdk_python_waf-3.1.99 → tencentcloud_sdk_python_waf-3.1.102}/tencentcloud_sdk_python_waf.egg-info/PKG-INFO +2 -2
  9. tencentcloud_sdk_python_waf-3.1.102/tencentcloud_sdk_python_waf.egg-info/requires.txt +1 -0
  10. tencentcloud_sdk_python_waf-3.1.99/tencentcloud_sdk_python_waf.egg-info/requires.txt +0 -1
  11. {tencentcloud_sdk_python_waf-3.1.99 → tencentcloud_sdk_python_waf-3.1.102}/README.rst +0 -0
  12. {tencentcloud_sdk_python_waf-3.1.99 → tencentcloud_sdk_python_waf-3.1.102}/setup.cfg +0 -0
  13. {tencentcloud_sdk_python_waf-3.1.99 → tencentcloud_sdk_python_waf-3.1.102}/tencentcloud/waf/__init__.py +0 -0
  14. {tencentcloud_sdk_python_waf-3.1.99 → tencentcloud_sdk_python_waf-3.1.102}/tencentcloud/waf/v20180125/__init__.py +0 -0
  15. {tencentcloud_sdk_python_waf-3.1.99 → tencentcloud_sdk_python_waf-3.1.102}/tencentcloud_sdk_python_waf.egg-info/SOURCES.txt +0 -0
  16. {tencentcloud_sdk_python_waf-3.1.99 → tencentcloud_sdk_python_waf-3.1.102}/tencentcloud_sdk_python_waf.egg-info/dependency_links.txt +0 -0
  17. {tencentcloud_sdk_python_waf-3.1.99 → tencentcloud_sdk_python_waf-3.1.102}/tencentcloud_sdk_python_waf.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: tencentcloud-sdk-python-waf
3
- Version: 3.1.99
3
+ Version: 3.1.102
4
4
  Summary: Tencent Cloud Waf SDK for Python
5
5
  Home-page: https://github.com/TencentCloud/tencentcloud-sdk-python
6
6
  Author: Tencent Cloud
@@ -15,7 +15,7 @@ Classifier: Programming Language :: Python :: 2.7
15
15
  Classifier: Programming Language :: Python :: 3
16
16
  Classifier: Programming Language :: Python :: 3.6
17
17
  Classifier: Programming Language :: Python :: 3.7
18
- Requires-Dist: tencentcloud-sdk-python-common<4.0.0,>=3.1.99
18
+ Requires-Dist: tencentcloud-sdk-python-common<4.0.0,>=3.1.102
19
19
 
20
20
  ============================
21
21
  Tencent Cloud SDK for Python
@@ -8,7 +8,7 @@ ROOT = os.path.dirname(__file__)
8
8
 
9
9
  setup(
10
10
  name='tencentcloud-sdk-python-waf',
11
- install_requires=["tencentcloud-sdk-python-common>=3.1.99,<4.0.0"],
11
+ install_requires=["tencentcloud-sdk-python-common>=3.1.102,<4.0.0"],
12
12
 
13
13
  version=tencentcloud.__version__,
14
14
  description='Tencent Cloud Waf SDK for Python',
@@ -14,4 +14,4 @@
14
14
  # limitations under the License.
15
15
 
16
16
 
17
- __version__ = '3.1.99'
17
+ __version__ = '3.1.102'
@@ -197,6 +197,45 @@ INVALIDPARAMETER_QUERYSTRINGSYNTAXERR = 'InvalidParameter.QueryStringSyntaxErr'
197
197
  # 语法错误:SQL检索语句必须遵循特定的语法规则,如果语法错误,就会导致SQL语句无法执行。例如,缺少关键字、拼写错误、缺少分号等。
198
198
  INVALIDPARAMETER_SQLSYNTAXERR = 'InvalidParameter.SQLSyntaxErr'
199
199
 
200
+ # API Key 已被禁用
201
+ INVALIDPARAMETER_SKILLSCANAPIKEYDISABLED = 'InvalidParameter.SkillScanApiKeyDisabled'
202
+
203
+ # 创建扫描任务失败(服务内部错误)
204
+ INVALIDPARAMETER_SKILLSCANCREATESCANFAILED = 'InvalidParameter.SkillScanCreateScanFailed'
205
+
206
+ # FileData 不是有效的 Base64 编码
207
+ INVALIDPARAMETER_SKILLSCANINVALIDBASE64 = 'InvalidParameter.SkillScanInvalidBase64'
208
+
209
+ # 文件不是有效的 ZIP 格式
210
+ INVALIDPARAMETER_SKILLSCANINVALIDFILEFORMAT = 'InvalidParameter.SkillScanInvalidFileFormat'
211
+
212
+ # 参数校验失败(如 content_hash 格式不合法、缺少必填字段)
213
+ INVALIDPARAMETER_SKILLSCANINVALIDPARAM = 'InvalidParameter.SkillScanInvalidParam'
214
+
215
+ # 请求格式错误(如 Content-Type 不正确、JSON 解析失败)
216
+ INVALIDPARAMETER_SKILLSCANINVALIDREQUEST = 'InvalidParameter.SkillScanInvalidRequest'
217
+
218
+ # 未检测到上传文件
219
+ INVALIDPARAMETER_SKILLSCANNOFILES = 'InvalidParameter.SkillScanNoFiles'
220
+
221
+ # 查询失败(服务内部错误)
222
+ INVALIDPARAMETER_SKILLSCANQUERYFAILED = 'InvalidParameter.SkillScanQueryFailed'
223
+
224
+ # 请求频率超出限制
225
+ INVALIDPARAMETER_SKILLSCANRATELIMITEXCEEDED = 'InvalidParameter.SkillScanRateLimitExceeded'
226
+
227
+ # ServiceId 为空
228
+ INVALIDPARAMETER_SKILLSCANSERVICEIDEMPTY = 'InvalidParameter.SkillScanServiceIdEmpty'
229
+
230
+ # 防护开关未开启
231
+ INVALIDPARAMETER_SKILLSCANSWITCHOFF = 'InvalidParameter.SkillScanSwitchOff'
232
+
233
+ # 触发检测任务失败(服务内部错误)
234
+ INVALIDPARAMETER_SKILLSCANTRIGGERFAILED = 'InvalidParameter.SkillScanTriggerFailed'
235
+
236
+ # API Key 缺失或无效
237
+ INVALIDPARAMETER_SKILLSCANUNAUTHORIZED = 'InvalidParameter.SkillScanUnauthorized'
238
+
200
239
  # 当前实例版本不支持开启TLS自定义,请升级到高级版及以上
201
240
  INVALIDPARAMETER_SUPPORTTLSCONFFAILED = 'InvalidParameter.SupportTLSConfFailed'
202
241
 
@@ -29060,6 +29060,117 @@ class DescribeSessionResponse(AbstractModel):
29060
29060
  self._RequestId = params.get("RequestId")
29061
29061
 
29062
29062
 
29063
+ class DescribeSkillSecScanResultRequest(AbstractModel):
29064
+ r"""DescribeSkillSecScanResult请求参数结构体
29065
+
29066
+ """
29067
+
29068
+ def __init__(self):
29069
+ r"""
29070
+ :param _ServiceId: <p>服务ID</p>
29071
+ :type ServiceId: str
29072
+ :param _ContentHash: <p>ZIP 文件的 SHA256 哈希值,格式为 sha256:hex_digest,请严格遵循文档中的zip打包规范</p>
29073
+ :type ContentHash: str
29074
+ :param _Lang: <p>返回语言。支持 zh / en,默认 zh</p>
29075
+ :type Lang: str
29076
+ """
29077
+ self._ServiceId = None
29078
+ self._ContentHash = None
29079
+ self._Lang = None
29080
+
29081
+ @property
29082
+ def ServiceId(self):
29083
+ r"""<p>服务ID</p>
29084
+ :rtype: str
29085
+ """
29086
+ return self._ServiceId
29087
+
29088
+ @ServiceId.setter
29089
+ def ServiceId(self, ServiceId):
29090
+ self._ServiceId = ServiceId
29091
+
29092
+ @property
29093
+ def ContentHash(self):
29094
+ r"""<p>ZIP 文件的 SHA256 哈希值,格式为 sha256:hex_digest,请严格遵循文档中的zip打包规范</p>
29095
+ :rtype: str
29096
+ """
29097
+ return self._ContentHash
29098
+
29099
+ @ContentHash.setter
29100
+ def ContentHash(self, ContentHash):
29101
+ self._ContentHash = ContentHash
29102
+
29103
+ @property
29104
+ def Lang(self):
29105
+ r"""<p>返回语言。支持 zh / en,默认 zh</p>
29106
+ :rtype: str
29107
+ """
29108
+ return self._Lang
29109
+
29110
+ @Lang.setter
29111
+ def Lang(self, Lang):
29112
+ self._Lang = Lang
29113
+
29114
+
29115
+ def _deserialize(self, params):
29116
+ self._ServiceId = params.get("ServiceId")
29117
+ self._ContentHash = params.get("ContentHash")
29118
+ self._Lang = params.get("Lang")
29119
+ memeber_set = set(params.keys())
29120
+ for name, value in vars(self).items():
29121
+ property_name = name[1:]
29122
+ if property_name in memeber_set:
29123
+ memeber_set.remove(property_name)
29124
+ if len(memeber_set) > 0:
29125
+ warnings.warn("%s fileds are useless." % ",".join(memeber_set))
29126
+
29127
+
29128
+
29129
+ class DescribeSkillSecScanResultResponse(AbstractModel):
29130
+ r"""DescribeSkillSecScanResult返回参数结构体
29131
+
29132
+ """
29133
+
29134
+ def __init__(self):
29135
+ r"""
29136
+ :param _Data: <p>检测结果</p>
29137
+ :type Data: :class:`tencentcloud.waf.v20180125.models.SkillScanQueryData`
29138
+ :param _RequestId: 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
29139
+ :type RequestId: str
29140
+ """
29141
+ self._Data = None
29142
+ self._RequestId = None
29143
+
29144
+ @property
29145
+ def Data(self):
29146
+ r"""<p>检测结果</p>
29147
+ :rtype: :class:`tencentcloud.waf.v20180125.models.SkillScanQueryData`
29148
+ """
29149
+ return self._Data
29150
+
29151
+ @Data.setter
29152
+ def Data(self, Data):
29153
+ self._Data = Data
29154
+
29155
+ @property
29156
+ def RequestId(self):
29157
+ r"""唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
29158
+ :rtype: str
29159
+ """
29160
+ return self._RequestId
29161
+
29162
+ @RequestId.setter
29163
+ def RequestId(self, RequestId):
29164
+ self._RequestId = RequestId
29165
+
29166
+
29167
+ def _deserialize(self, params):
29168
+ if params.get("Data") is not None:
29169
+ self._Data = SkillScanQueryData()
29170
+ self._Data._deserialize(params.get("Data"))
29171
+ self._RequestId = params.get("RequestId")
29172
+
29173
+
29063
29174
  class DescribeSpartaProtectionInfoRequest(AbstractModel):
29064
29175
  r"""DescribeSpartaProtectionInfo请求参数结构体
29065
29176
 
@@ -56212,92 +56323,98 @@ class SessionItem(AbstractModel):
56212
56323
 
56213
56324
 
56214
56325
 
56215
- class SpartaProtectionPort(AbstractModel):
56216
- r"""waf斯巴达-编辑防护域名中的端口结构
56326
+ class SkillRuleCatalogItem(AbstractModel):
56327
+ r"""skills检测命中规则名录
56217
56328
 
56218
56329
  """
56219
56330
 
56220
56331
  def __init__(self):
56221
56332
  r"""
56222
- :param _NginxServerId: 分配的服务器id。首次接入的域名和端口该参数填0,已接入的域名和端口分配的id可以通过DescribeDomainDetailsSaas或DescribeDomains接口获取。
56223
- :type NginxServerId: int
56224
- :param _Port: 端口
56225
- :type Port: str
56226
- :param _Protocol: 协议
56227
- :type Protocol: str
56228
- :param _UpstreamPort: 后端端口
56229
- :type UpstreamPort: str
56230
- :param _UpstreamProtocol: 后端协议
56231
- :type UpstreamProtocol: str
56333
+ :param _Key: <p>规则分类标识(如 static_analysis、ai_analysis)</p>
56334
+ :type Key: str
56335
+ :param _Value: <p>规则分类中文名称</p>
56336
+ :type Value: str
56232
56337
  """
56233
- self._NginxServerId = None
56234
- self._Port = None
56235
- self._Protocol = None
56236
- self._UpstreamPort = None
56237
- self._UpstreamProtocol = None
56338
+ self._Key = None
56339
+ self._Value = None
56238
56340
 
56239
56341
  @property
56240
- def NginxServerId(self):
56241
- r"""分配的服务器id。首次接入的域名和端口该参数填0,已接入的域名和端口分配的id可以通过DescribeDomainDetailsSaas或DescribeDomains接口获取。
56242
- :rtype: int
56342
+ def Key(self):
56343
+ r"""<p>规则分类标识(如 static_analysis、ai_analysis)</p>
56344
+ :rtype: str
56243
56345
  """
56244
- return self._NginxServerId
56346
+ return self._Key
56245
56347
 
56246
- @NginxServerId.setter
56247
- def NginxServerId(self, NginxServerId):
56248
- self._NginxServerId = NginxServerId
56348
+ @Key.setter
56349
+ def Key(self, Key):
56350
+ self._Key = Key
56249
56351
 
56250
56352
  @property
56251
- def Port(self):
56252
- r"""端口
56353
+ def Value(self):
56354
+ r"""<p>规则分类中文名称</p>
56253
56355
  :rtype: str
56254
56356
  """
56255
- return self._Port
56357
+ return self._Value
56256
56358
 
56257
- @Port.setter
56258
- def Port(self, Port):
56259
- self._Port = Port
56359
+ @Value.setter
56360
+ def Value(self, Value):
56361
+ self._Value = Value
56260
56362
 
56261
- @property
56262
- def Protocol(self):
56263
- r"""协议
56264
- :rtype: str
56265
- """
56266
- return self._Protocol
56267
56363
 
56268
- @Protocol.setter
56269
- def Protocol(self, Protocol):
56270
- self._Protocol = Protocol
56364
+ def _deserialize(self, params):
56365
+ self._Key = params.get("Key")
56366
+ self._Value = params.get("Value")
56367
+ memeber_set = set(params.keys())
56368
+ for name, value in vars(self).items():
56369
+ property_name = name[1:]
56370
+ if property_name in memeber_set:
56371
+ memeber_set.remove(property_name)
56372
+ if len(memeber_set) > 0:
56373
+ warnings.warn("%s fileds are useless." % ",".join(memeber_set))
56374
+
56375
+
56376
+
56377
+ class SkillScanCapabilityTag(AbstractModel):
56378
+ r"""skills检测能力标签
56379
+
56380
+ """
56381
+
56382
+ def __init__(self):
56383
+ r"""
56384
+ :param _Id: <p>标签唯一ID</p>
56385
+ :type Id: str
56386
+ :param _Name: <p>标签名称(如 network_access、file_system 等)</p>
56387
+ :type Name: str
56388
+ """
56389
+ self._Id = None
56390
+ self._Name = None
56271
56391
 
56272
56392
  @property
56273
- def UpstreamPort(self):
56274
- r"""后端端口
56393
+ def Id(self):
56394
+ r"""<p>标签唯一ID</p>
56275
56395
  :rtype: str
56276
56396
  """
56277
- return self._UpstreamPort
56397
+ return self._Id
56278
56398
 
56279
- @UpstreamPort.setter
56280
- def UpstreamPort(self, UpstreamPort):
56281
- self._UpstreamPort = UpstreamPort
56399
+ @Id.setter
56400
+ def Id(self, Id):
56401
+ self._Id = Id
56282
56402
 
56283
56403
  @property
56284
- def UpstreamProtocol(self):
56285
- r"""后端协议
56404
+ def Name(self):
56405
+ r"""<p>标签名称(如 network_access、file_system 等)</p>
56286
56406
  :rtype: str
56287
56407
  """
56288
- return self._UpstreamProtocol
56408
+ return self._Name
56289
56409
 
56290
- @UpstreamProtocol.setter
56291
- def UpstreamProtocol(self, UpstreamProtocol):
56292
- self._UpstreamProtocol = UpstreamProtocol
56410
+ @Name.setter
56411
+ def Name(self, Name):
56412
+ self._Name = Name
56293
56413
 
56294
56414
 
56295
56415
  def _deserialize(self, params):
56296
- self._NginxServerId = params.get("NginxServerId")
56297
- self._Port = params.get("Port")
56298
- self._Protocol = params.get("Protocol")
56299
- self._UpstreamPort = params.get("UpstreamPort")
56300
- self._UpstreamProtocol = params.get("UpstreamProtocol")
56416
+ self._Id = params.get("Id")
56417
+ self._Name = params.get("Name")
56301
56418
  memeber_set = set(params.keys())
56302
56419
  for name, value in vars(self).items():
56303
56420
  property_name = name[1:]
@@ -56308,65 +56425,610 @@ class SpartaProtectionPort(AbstractModel):
56308
56425
 
56309
56426
 
56310
56427
 
56311
- class Strategy(AbstractModel):
56312
- r"""规则的匹配条件结构体
56428
+ class SkillScanItem(AbstractModel):
56429
+ r"""扫描结果详情(按子引擎分组)
56313
56430
 
56314
56431
  """
56315
56432
 
56316
56433
  def __init__(self):
56317
56434
  r"""
56318
- :param _Field: 匹配字段
56435
+ :param _ScanType: <p>子引擎类型:AI(AI 分析)/ STATIC(静态分析)</p>
56436
+ :type ScanType: str
56437
+ :param _RuleList: <p>该引擎命中的规则列表</p>
56438
+ :type RuleList: list of SkillScanRuleHit
56439
+ """
56440
+ self._ScanType = None
56441
+ self._RuleList = None
56319
56442
 
56320
- 匹配字段不同,相应的匹配参数、逻辑符号、匹配内容有所不同 具体如下所示:
56321
- <table><thead><tr><th>匹配字段</th><th>匹配参数</th><th>逻辑符号</th><th>匹配内容</th></tr></thead><tbody><tr><td>IP(来源IP)</td><td>不支持参数</td><td>ipmatch(匹配)<br/>ipnmatch(不匹配)</td><td>多个IP以英文逗号隔开,最多20个</td></tr><tr><td>IPV6(来源IPv6)</td><td>不支持参数</td><td>ipmatch(匹配)<br/>ipnmatch(不匹配)</td><td>支持单个IPV6地址</td></tr><tr><td>Referer(Referer)</td><td>不支持参数</td><td>empty(内容为空)<br/>null(不存在)<br/>eq(等于)<br/>neq(不等于)<br/>contains(包含)<br/>ncontains(不包含)<br/>len_eq(长度等于)<br/>len_gt(长度大于)<br/>len_lt(长度小于)<br/>strprefix(前缀匹配)<br/>strsuffix(后缀匹配)<br/>rematch(正则匹配)</td><td>请输入内容,512个字符以内</td></tr><tr><td>URL(请求路径)</td><td>不支持参数</td><td>eq(等于)<br/>neq(不等于)<br/>contains(包含)<br/>ncontains(不包含)<br/>len_eq(长度等于)<br/>len_gt(长度大于)<br/>len_lt(长度小于)<br/>strprefix(前缀匹配)<br/>strsuffix(后缀匹配)<br/>rematch(正则匹配)<br/></td><td>请以/开头,512个字符以内</td></tr><tr><td>UserAgent(UserAgent)</td><td>不支持参数</td><td>同匹配字段<font color="Red">Referer</font>逻辑符号</td><td>请输入内容,512个字符以内</td></tr><tr><td>HTTP_METHOD(HTTP请求方法)</td><td>不支持参数</td><td>eq(等于)<br/>neq(不等于)</td><td>请输入方法名称,建议大写</td></tr><tr><td>QUERY_STRING(请求字符串)</td><td>不支持参数</td><td>同匹配字段<font color="Red">请求路径</font>逻辑符号</td><td>请输入内容,512个字符以内</td></tr><tr><td>GET(GET参数值)</td><td>支持参数录入</td><td>contains(包含)<br/>ncontains(不包含)<br/>len_eq(长度等于)<br/>len_gt(长度大于)<br/>len_lt(长度小于)<br/>strprefix(前缀匹配)<br/>strsuffix(后缀匹配)</td><td>请输入内容,512个字符以内</td></tr><tr><td>GET_PARAMS_NAMES(GET参数名)</td><td>不支持参数</td><td>exsit(存在参数)<br/>nexsit(不存在参数)<br/>len_eq(长度等于)<br/>len_gt(长度大于)<br/>len_lt(长度小于)<br/>strprefix(前缀匹配)<br/>strsuffix(后缀匹配)</td><td>请输入内容,512个字符以内</td></tr><tr><td>POST(POST参数值)</td><td>支持参数录入</td><td>同匹配字段<font color="Red">GET参数值</font>逻辑符号</td><td>请输入内容,512个字符以内</td></tr><tr><td>GET_POST_NAMES(POST参数名)</td><td>不支持参数</td><td>同匹配字段<font color="Red">GET参数名</font>逻辑符号</td><td>请输入内容,512个字符以内</td></tr><tr><td>POST_BODY(完整BODY)</td><td>不支持参数</td><td>同匹配字段<font color="Red">请求路径</font>逻辑符号</td><td>请输入BODY内容,512个字符以内</td></tr><tr><td>COOKIE(Cookie)</td><td>不支持参数</td><td>empty(内容为空)<br/>null(不存在)<br/>rematch(正则匹配)</td><td><font color="Red">暂不支持</font></td></tr><tr><td>GET_COOKIES_NAMES(Cookie参数名)</td><td>不支持参数</td><td>同匹配字段<font color="Red">GET参数名</font>逻辑符号</td><td>请输入内容,512个字符以内</td></tr><tr><td>ARGS_COOKIE(Cookie参数值)</td><td>支持参数录入</td><td>同匹配字段<font color="Red">GET参数值</font>逻辑符号</td><td>请输入内容,512个字符以内</td></tr><tr><td>GET_HEADERS_NAMES(Header参数名)</td><td>不支持参数</td><td>exsit(存在参数)<br/>nexsit(不存在参数)<br/>len_eq(长度等于)<br/>len_gt(长度大于)<br/>len_lt(长度小于)<br/>strprefix(前缀匹配)<br/>strsuffix(后缀匹配)<br/>rematch(正则匹配)</td><td>请输入内容,建议小写,512个字符以内</td></tr><tr><td>ARGS_HEADER(Header参数值)</td><td>支持参数录入</td><td>contains(包含)<br/>ncontains(不包含)<br/>len_eq(长度等于)<br/>len_gt(长度大于)<br/>len_lt(长度小于)<br/>strprefix(前缀匹配)<br/>strsuffix(后缀匹配)<br/>rematch(正则匹配)</td><td>请输入内容,512个字符以内</td></tr><tr><td>CONTENT_LENGTH(Content-length)</td><td>支持参数录入</td><td>numgt(数值大于)<br/>numlt(数值小于)<br/>numeq(数值等于)<br/></td><td>请输入0-9999999999999之间的整数</td></tr><tr><td>IP_GEO(来源IP归属地)</td><td>支持参数录入</td><td>geo_in(属于)<br/>geo_not_in(不属于)<br/></td><td>请输入内容,10240字符以内,格式为序列化的JSON,格式为:[{"Country":"中国","Region":"广东","City":"深圳"}]</td></tr><tr><td>CAPTCHA_RISK(验证码风险)</td><td>不支持参数</td><td>eq(等于)<br/>neq(不等于)<br/>belong(属于)<br/>not_belong(不属于)<br/>null(不存在)<br/>exist(存在)</td><td>请输入风险等级值,支持数值范围0-255</td></tr><tr><td>CAPTCHA_DEVICE_RISK(验证码设备风险)</td><td>不支持参数</td><td>eq(等于)<br/>neq(不等于)<br/>belong(属于)<br/>not_belong(不属于)<br/>null(不存在)<br/>exist(存在)</td><td>请输入设备风险代码,支持取值:101、201、301、401、501、601、701</td></tr><tr><td>CAPTCHAR_SCORE(验证码风险评估分)</td><td>不支持参数</td><td>numeq(数值等于)<br/>numgt(数值大于)<br/>numlt(数值小于)<br/>numle(数值小于等于)<br/>numge(数值大于等于)<br/>null(不存在)<br/>exist(存在)</td><td>请输入评估分数,支持数值范围0-100</td></tr>
56322
- </tbody></table>
56323
- :type Field: str
56324
- :param _CompareFunc: 逻辑符号
56443
+ @property
56444
+ def ScanType(self):
56445
+ r"""<p>子引擎类型:AI(AI 分析)/ STATIC(静态分析)</p>
56446
+ :rtype: str
56447
+ """
56448
+ return self._ScanType
56325
56449
 
56326
- 逻辑符号一共分为以下几种类型:
56327
- empty 内容为空)
56328
- null (不存在)
56329
- eq ( 等于)
56330
- neq ( 不等于)
56331
- contains ( 包含)
56332
- ncontains ( 不包含)
56333
- strprefix ( 前缀匹配)
56334
- strsuffix ( 后缀匹配)
56335
- len_eq ( 长度等于)
56336
- len_gt ( 长度大于)
56337
- len_lt ( 长度小于)
56338
- ipmatch ( 属于)
56339
- ipnmatch ( 不属于)
56340
- numgt ( 数值大于)
56341
- numlt ( 数值小于)
56342
- numeq ( 数值等于)
56343
- numneq ( 数值不等于)
56344
- numle ( 数值小于等于)
56345
- numge ( 数值大于等于)
56346
- geo_in ( IP地理属于)
56347
- geo_not_in ( IP地理不属于)
56348
- 各匹配字段对应的逻辑符号不同,详见上述匹配字段表格
56349
- :type CompareFunc: str
56350
- :param _Content: 匹配内容
56450
+ @ScanType.setter
56451
+ def ScanType(self, ScanType):
56452
+ self._ScanType = ScanType
56351
56453
 
56352
- 目前 当匹配字段为COOKIE(Cookie)时,不需要输入 匹配内容 其他都需要
56454
+ @property
56455
+ def RuleList(self):
56456
+ r"""<p>该引擎命中的规则列表</p>
56457
+ :rtype: list of SkillScanRuleHit
56458
+ """
56459
+ return self._RuleList
56353
56460
 
56354
- :type Content: str
56355
- :param _Arg: 匹配参数
56461
+ @RuleList.setter
56462
+ def RuleList(self, RuleList):
56463
+ self._RuleList = RuleList
56356
56464
 
56357
- 配置参数一共分2种类型 不支持参数与支持参数
56358
- 当匹配字段为以下4个时,匹配参数才能录入,否则不支持该参数
56359
- GET(GET参数值)
56360
- POST(POST参数值)
56361
- ARGS_COOKIE(Cookie参数值)
56362
- ARGS_HEADER(Header参数值)
56363
56465
 
56364
- :type Arg: str
56365
- :param _CaseNotSensitive: 0:大小写敏感
56366
- 1:大小写不敏感
56367
- :type CaseNotSensitive: int
56368
- """
56369
- self._Field = None
56466
+ def _deserialize(self, params):
56467
+ self._ScanType = params.get("ScanType")
56468
+ if params.get("RuleList") is not None:
56469
+ self._RuleList = []
56470
+ for item in params.get("RuleList"):
56471
+ obj = SkillScanRuleHit()
56472
+ obj._deserialize(item)
56473
+ self._RuleList.append(obj)
56474
+ memeber_set = set(params.keys())
56475
+ for name, value in vars(self).items():
56476
+ property_name = name[1:]
56477
+ if property_name in memeber_set:
56478
+ memeber_set.remove(property_name)
56479
+ if len(memeber_set) > 0:
56480
+ warnings.warn("%s fileds are useless." % ",".join(memeber_set))
56481
+
56482
+
56483
+
56484
+ class SkillScanQueryData(AbstractModel):
56485
+ r"""skills检测结果列表
56486
+
56487
+ """
56488
+
56489
+ def __init__(self):
56490
+ r"""
56491
+ :param _Status: <p>检测状态:success(检测完成,有结果)、scanning(检测进行中)、not_found(无记录)、failed(检测失败)</p><p>枚举值:</p><ul><li>success: 检测完成,有结果</li><li>scanning: 检测进行中</li><li>not_found: 无记录</li><li>failed: 检测失败</li></ul>
56492
+ :type Status: str
56493
+ :param _SkillName: <p>Skill 名称,用于页面展示、结果列表呈现和人工研判</p>
56494
+ :type SkillName: str
56495
+ :param _SkillDescription: <p>Skill 描述,通常来自 Skill 元数据或说明信息,用于帮助调用方理解 Skill 的用途</p>
56496
+ :type SkillDescription: str
56497
+ :param _ContentHash: <p>ZIP 文件的 SHA256 哈希值,格式为 sha256:hex_digest</p>
56498
+ :type ContentHash: str
56499
+ :param _RiskLevel: <p>风险等级:malicious(恶意)、suspicious(可疑)、benign(可信)</p>
56500
+ :type RiskLevel: str
56501
+ :param _Mitigation: <p>综合处置建议字段,位于 data 顶层,用于给出本次检测结果的总体修复、缓解或人工处置建议</p>
56502
+ :type Mitigation: str
56503
+ :param _SecurityScore: <p>安全评分(0-100,分数越高越安全)</p><p>取值范围:[0, 100]</p>
56504
+ :type SecurityScore: int
56505
+ :param _EngineVersion: <p>本次扫描使用的引擎版本号</p>
56506
+ :type EngineVersion: int
56507
+ :param _CapabilityTags: <p>Skill 的能力标签列表,对外固定返回格式为 [{id,name}]。该字段用于描述 Skill 具备的能力特征或适用场景,便于调用方做检索、展示或分类;不等同于风险标签,也不表示风险高低或命中规则结果。当 lang=en 时,仅 name 会切换为英文,id 保持不变</p>
56508
+ :type CapabilityTags: list of SkillScanCapabilityTag
56509
+ :param _RuleCatalog: <p>融合规则目录全集,key 为融合 rule_id(9xxxx),value 为风险类别名称;包含所有融合规则类别,调用方可据此展示分类标签,无需本地维护映射表。传 lang=en 时返回英文名称。该对象是名称映射表,不表达主标签优先级</p>
56510
+ :type RuleCatalog: list of SkillRuleCatalogItem
56511
+ :param _ScanItems: <p>扫描结果详情,按子引擎分组,每个元素包含 scan_type(引擎类型)和 rule_list(命中的规则列表);规则中的 rule_id 使用融合编码(9xxxx),可与 rule_catalog 交叉引用。传 lang=en 时,description 返回英文文本</p>
56512
+ :type ScanItems: list of SkillScanItem
56513
+ :param _ReportUrl: <p>综合安全审计报告地址。调用方可通过 report_url_expire_hours 指定有效期,不传时默认返回 1 年有效期地址</p>
56514
+ :type ReportUrl: str
56515
+ :param _ScannedAt: <p>扫描完成时间</p>
56516
+ :type ScannedAt: str
56517
+ :param _CreatedAt: <p>任务创建时间</p>
56518
+ :type CreatedAt: str
56519
+ :param _FailedAt: <p>失败时间</p>
56520
+ :type FailedAt: str
56521
+ :param _Message: <p>失败原因描述</p>
56522
+ :type Message: str
56523
+ """
56524
+ self._Status = None
56525
+ self._SkillName = None
56526
+ self._SkillDescription = None
56527
+ self._ContentHash = None
56528
+ self._RiskLevel = None
56529
+ self._Mitigation = None
56530
+ self._SecurityScore = None
56531
+ self._EngineVersion = None
56532
+ self._CapabilityTags = None
56533
+ self._RuleCatalog = None
56534
+ self._ScanItems = None
56535
+ self._ReportUrl = None
56536
+ self._ScannedAt = None
56537
+ self._CreatedAt = None
56538
+ self._FailedAt = None
56539
+ self._Message = None
56540
+
56541
+ @property
56542
+ def Status(self):
56543
+ r"""<p>检测状态:success(检测完成,有结果)、scanning(检测进行中)、not_found(无记录)、failed(检测失败)</p><p>枚举值:</p><ul><li>success: 检测完成,有结果</li><li>scanning: 检测进行中</li><li>not_found: 无记录</li><li>failed: 检测失败</li></ul>
56544
+ :rtype: str
56545
+ """
56546
+ return self._Status
56547
+
56548
+ @Status.setter
56549
+ def Status(self, Status):
56550
+ self._Status = Status
56551
+
56552
+ @property
56553
+ def SkillName(self):
56554
+ r"""<p>Skill 名称,用于页面展示、结果列表呈现和人工研判</p>
56555
+ :rtype: str
56556
+ """
56557
+ return self._SkillName
56558
+
56559
+ @SkillName.setter
56560
+ def SkillName(self, SkillName):
56561
+ self._SkillName = SkillName
56562
+
56563
+ @property
56564
+ def SkillDescription(self):
56565
+ r"""<p>Skill 描述,通常来自 Skill 元数据或说明信息,用于帮助调用方理解 Skill 的用途</p>
56566
+ :rtype: str
56567
+ """
56568
+ return self._SkillDescription
56569
+
56570
+ @SkillDescription.setter
56571
+ def SkillDescription(self, SkillDescription):
56572
+ self._SkillDescription = SkillDescription
56573
+
56574
+ @property
56575
+ def ContentHash(self):
56576
+ r"""<p>ZIP 文件的 SHA256 哈希值,格式为 sha256:hex_digest</p>
56577
+ :rtype: str
56578
+ """
56579
+ return self._ContentHash
56580
+
56581
+ @ContentHash.setter
56582
+ def ContentHash(self, ContentHash):
56583
+ self._ContentHash = ContentHash
56584
+
56585
+ @property
56586
+ def RiskLevel(self):
56587
+ r"""<p>风险等级:malicious(恶意)、suspicious(可疑)、benign(可信)</p>
56588
+ :rtype: str
56589
+ """
56590
+ return self._RiskLevel
56591
+
56592
+ @RiskLevel.setter
56593
+ def RiskLevel(self, RiskLevel):
56594
+ self._RiskLevel = RiskLevel
56595
+
56596
+ @property
56597
+ def Mitigation(self):
56598
+ r"""<p>综合处置建议字段,位于 data 顶层,用于给出本次检测结果的总体修复、缓解或人工处置建议</p>
56599
+ :rtype: str
56600
+ """
56601
+ return self._Mitigation
56602
+
56603
+ @Mitigation.setter
56604
+ def Mitigation(self, Mitigation):
56605
+ self._Mitigation = Mitigation
56606
+
56607
+ @property
56608
+ def SecurityScore(self):
56609
+ r"""<p>安全评分(0-100,分数越高越安全)</p><p>取值范围:[0, 100]</p>
56610
+ :rtype: int
56611
+ """
56612
+ return self._SecurityScore
56613
+
56614
+ @SecurityScore.setter
56615
+ def SecurityScore(self, SecurityScore):
56616
+ self._SecurityScore = SecurityScore
56617
+
56618
+ @property
56619
+ def EngineVersion(self):
56620
+ r"""<p>本次扫描使用的引擎版本号</p>
56621
+ :rtype: int
56622
+ """
56623
+ return self._EngineVersion
56624
+
56625
+ @EngineVersion.setter
56626
+ def EngineVersion(self, EngineVersion):
56627
+ self._EngineVersion = EngineVersion
56628
+
56629
+ @property
56630
+ def CapabilityTags(self):
56631
+ r"""<p>Skill 的能力标签列表,对外固定返回格式为 [{id,name}]。该字段用于描述 Skill 具备的能力特征或适用场景,便于调用方做检索、展示或分类;不等同于风险标签,也不表示风险高低或命中规则结果。当 lang=en 时,仅 name 会切换为英文,id 保持不变</p>
56632
+ :rtype: list of SkillScanCapabilityTag
56633
+ """
56634
+ return self._CapabilityTags
56635
+
56636
+ @CapabilityTags.setter
56637
+ def CapabilityTags(self, CapabilityTags):
56638
+ self._CapabilityTags = CapabilityTags
56639
+
56640
+ @property
56641
+ def RuleCatalog(self):
56642
+ r"""<p>融合规则目录全集,key 为融合 rule_id(9xxxx),value 为风险类别名称;包含所有融合规则类别,调用方可据此展示分类标签,无需本地维护映射表。传 lang=en 时返回英文名称。该对象是名称映射表,不表达主标签优先级</p>
56643
+ :rtype: list of SkillRuleCatalogItem
56644
+ """
56645
+ return self._RuleCatalog
56646
+
56647
+ @RuleCatalog.setter
56648
+ def RuleCatalog(self, RuleCatalog):
56649
+ self._RuleCatalog = RuleCatalog
56650
+
56651
+ @property
56652
+ def ScanItems(self):
56653
+ r"""<p>扫描结果详情,按子引擎分组,每个元素包含 scan_type(引擎类型)和 rule_list(命中的规则列表);规则中的 rule_id 使用融合编码(9xxxx),可与 rule_catalog 交叉引用。传 lang=en 时,description 返回英文文本</p>
56654
+ :rtype: list of SkillScanItem
56655
+ """
56656
+ return self._ScanItems
56657
+
56658
+ @ScanItems.setter
56659
+ def ScanItems(self, ScanItems):
56660
+ self._ScanItems = ScanItems
56661
+
56662
+ @property
56663
+ def ReportUrl(self):
56664
+ r"""<p>综合安全审计报告地址。调用方可通过 report_url_expire_hours 指定有效期,不传时默认返回 1 年有效期地址</p>
56665
+ :rtype: str
56666
+ """
56667
+ return self._ReportUrl
56668
+
56669
+ @ReportUrl.setter
56670
+ def ReportUrl(self, ReportUrl):
56671
+ self._ReportUrl = ReportUrl
56672
+
56673
+ @property
56674
+ def ScannedAt(self):
56675
+ r"""<p>扫描完成时间</p>
56676
+ :rtype: str
56677
+ """
56678
+ return self._ScannedAt
56679
+
56680
+ @ScannedAt.setter
56681
+ def ScannedAt(self, ScannedAt):
56682
+ self._ScannedAt = ScannedAt
56683
+
56684
+ @property
56685
+ def CreatedAt(self):
56686
+ r"""<p>任务创建时间</p>
56687
+ :rtype: str
56688
+ """
56689
+ return self._CreatedAt
56690
+
56691
+ @CreatedAt.setter
56692
+ def CreatedAt(self, CreatedAt):
56693
+ self._CreatedAt = CreatedAt
56694
+
56695
+ @property
56696
+ def FailedAt(self):
56697
+ r"""<p>失败时间</p>
56698
+ :rtype: str
56699
+ """
56700
+ return self._FailedAt
56701
+
56702
+ @FailedAt.setter
56703
+ def FailedAt(self, FailedAt):
56704
+ self._FailedAt = FailedAt
56705
+
56706
+ @property
56707
+ def Message(self):
56708
+ r"""<p>失败原因描述</p>
56709
+ :rtype: str
56710
+ """
56711
+ return self._Message
56712
+
56713
+ @Message.setter
56714
+ def Message(self, Message):
56715
+ self._Message = Message
56716
+
56717
+
56718
+ def _deserialize(self, params):
56719
+ self._Status = params.get("Status")
56720
+ self._SkillName = params.get("SkillName")
56721
+ self._SkillDescription = params.get("SkillDescription")
56722
+ self._ContentHash = params.get("ContentHash")
56723
+ self._RiskLevel = params.get("RiskLevel")
56724
+ self._Mitigation = params.get("Mitigation")
56725
+ self._SecurityScore = params.get("SecurityScore")
56726
+ self._EngineVersion = params.get("EngineVersion")
56727
+ if params.get("CapabilityTags") is not None:
56728
+ self._CapabilityTags = []
56729
+ for item in params.get("CapabilityTags"):
56730
+ obj = SkillScanCapabilityTag()
56731
+ obj._deserialize(item)
56732
+ self._CapabilityTags.append(obj)
56733
+ if params.get("RuleCatalog") is not None:
56734
+ self._RuleCatalog = []
56735
+ for item in params.get("RuleCatalog"):
56736
+ obj = SkillRuleCatalogItem()
56737
+ obj._deserialize(item)
56738
+ self._RuleCatalog.append(obj)
56739
+ if params.get("ScanItems") is not None:
56740
+ self._ScanItems = []
56741
+ for item in params.get("ScanItems"):
56742
+ obj = SkillScanItem()
56743
+ obj._deserialize(item)
56744
+ self._ScanItems.append(obj)
56745
+ self._ReportUrl = params.get("ReportUrl")
56746
+ self._ScannedAt = params.get("ScannedAt")
56747
+ self._CreatedAt = params.get("CreatedAt")
56748
+ self._FailedAt = params.get("FailedAt")
56749
+ self._Message = params.get("Message")
56750
+ memeber_set = set(params.keys())
56751
+ for name, value in vars(self).items():
56752
+ property_name = name[1:]
56753
+ if property_name in memeber_set:
56754
+ memeber_set.remove(property_name)
56755
+ if len(memeber_set) > 0:
56756
+ warnings.warn("%s fileds are useless." % ",".join(memeber_set))
56757
+
56758
+
56759
+
56760
+ class SkillScanRuleHit(AbstractModel):
56761
+ r"""SkillScanRuleHit 命中的规则
56762
+
56763
+ """
56764
+
56765
+ def __init__(self):
56766
+ r"""
56767
+ :param _RuleId: <p>规则唯一ID</p>
56768
+ :type RuleId: str
56769
+ :param _Description: <p>规则描述(命中原因说明)</p>
56770
+ :type Description: str
56771
+ """
56772
+ self._RuleId = None
56773
+ self._Description = None
56774
+
56775
+ @property
56776
+ def RuleId(self):
56777
+ r"""<p>规则唯一ID</p>
56778
+ :rtype: str
56779
+ """
56780
+ return self._RuleId
56781
+
56782
+ @RuleId.setter
56783
+ def RuleId(self, RuleId):
56784
+ self._RuleId = RuleId
56785
+
56786
+ @property
56787
+ def Description(self):
56788
+ r"""<p>规则描述(命中原因说明)</p>
56789
+ :rtype: str
56790
+ """
56791
+ return self._Description
56792
+
56793
+ @Description.setter
56794
+ def Description(self, Description):
56795
+ self._Description = Description
56796
+
56797
+
56798
+ def _deserialize(self, params):
56799
+ self._RuleId = params.get("RuleId")
56800
+ self._Description = params.get("Description")
56801
+ memeber_set = set(params.keys())
56802
+ for name, value in vars(self).items():
56803
+ property_name = name[1:]
56804
+ if property_name in memeber_set:
56805
+ memeber_set.remove(property_name)
56806
+ if len(memeber_set) > 0:
56807
+ warnings.warn("%s fileds are useless." % ",".join(memeber_set))
56808
+
56809
+
56810
+
56811
+ class SkillScanUploadData(AbstractModel):
56812
+ r"""skills 上检测接口返回信息
56813
+
56814
+ """
56815
+
56816
+ def __init__(self):
56817
+ r"""
56818
+ :param _ContentHash: <p>文件的 SHA256 Hash,用于轮询查询接口</p>
56819
+ :type ContentHash: str
56820
+ :param _Status: <p>固定为 scanning,表示任务已接收</p>
56821
+ :type Status: str
56822
+ :param _Message: <p>可读的操作结果描述</p>
56823
+ :type Message: str
56824
+ """
56825
+ self._ContentHash = None
56826
+ self._Status = None
56827
+ self._Message = None
56828
+
56829
+ @property
56830
+ def ContentHash(self):
56831
+ r"""<p>文件的 SHA256 Hash,用于轮询查询接口</p>
56832
+ :rtype: str
56833
+ """
56834
+ return self._ContentHash
56835
+
56836
+ @ContentHash.setter
56837
+ def ContentHash(self, ContentHash):
56838
+ self._ContentHash = ContentHash
56839
+
56840
+ @property
56841
+ def Status(self):
56842
+ r"""<p>固定为 scanning,表示任务已接收</p>
56843
+ :rtype: str
56844
+ """
56845
+ return self._Status
56846
+
56847
+ @Status.setter
56848
+ def Status(self, Status):
56849
+ self._Status = Status
56850
+
56851
+ @property
56852
+ def Message(self):
56853
+ r"""<p>可读的操作结果描述</p>
56854
+ :rtype: str
56855
+ """
56856
+ return self._Message
56857
+
56858
+ @Message.setter
56859
+ def Message(self, Message):
56860
+ self._Message = Message
56861
+
56862
+
56863
+ def _deserialize(self, params):
56864
+ self._ContentHash = params.get("ContentHash")
56865
+ self._Status = params.get("Status")
56866
+ self._Message = params.get("Message")
56867
+ memeber_set = set(params.keys())
56868
+ for name, value in vars(self).items():
56869
+ property_name = name[1:]
56870
+ if property_name in memeber_set:
56871
+ memeber_set.remove(property_name)
56872
+ if len(memeber_set) > 0:
56873
+ warnings.warn("%s fileds are useless." % ",".join(memeber_set))
56874
+
56875
+
56876
+
56877
+ class SpartaProtectionPort(AbstractModel):
56878
+ r"""waf斯巴达-编辑防护域名中的端口结构
56879
+
56880
+ """
56881
+
56882
+ def __init__(self):
56883
+ r"""
56884
+ :param _NginxServerId: 分配的服务器id。首次接入的域名和端口该参数填0,已接入的域名和端口分配的id可以通过DescribeDomainDetailsSaas或DescribeDomains接口获取。
56885
+ :type NginxServerId: int
56886
+ :param _Port: 端口
56887
+ :type Port: str
56888
+ :param _Protocol: 协议
56889
+ :type Protocol: str
56890
+ :param _UpstreamPort: 后端端口
56891
+ :type UpstreamPort: str
56892
+ :param _UpstreamProtocol: 后端协议
56893
+ :type UpstreamProtocol: str
56894
+ """
56895
+ self._NginxServerId = None
56896
+ self._Port = None
56897
+ self._Protocol = None
56898
+ self._UpstreamPort = None
56899
+ self._UpstreamProtocol = None
56900
+
56901
+ @property
56902
+ def NginxServerId(self):
56903
+ r"""分配的服务器id。首次接入的域名和端口该参数填0,已接入的域名和端口分配的id可以通过DescribeDomainDetailsSaas或DescribeDomains接口获取。
56904
+ :rtype: int
56905
+ """
56906
+ return self._NginxServerId
56907
+
56908
+ @NginxServerId.setter
56909
+ def NginxServerId(self, NginxServerId):
56910
+ self._NginxServerId = NginxServerId
56911
+
56912
+ @property
56913
+ def Port(self):
56914
+ r"""端口
56915
+ :rtype: str
56916
+ """
56917
+ return self._Port
56918
+
56919
+ @Port.setter
56920
+ def Port(self, Port):
56921
+ self._Port = Port
56922
+
56923
+ @property
56924
+ def Protocol(self):
56925
+ r"""协议
56926
+ :rtype: str
56927
+ """
56928
+ return self._Protocol
56929
+
56930
+ @Protocol.setter
56931
+ def Protocol(self, Protocol):
56932
+ self._Protocol = Protocol
56933
+
56934
+ @property
56935
+ def UpstreamPort(self):
56936
+ r"""后端端口
56937
+ :rtype: str
56938
+ """
56939
+ return self._UpstreamPort
56940
+
56941
+ @UpstreamPort.setter
56942
+ def UpstreamPort(self, UpstreamPort):
56943
+ self._UpstreamPort = UpstreamPort
56944
+
56945
+ @property
56946
+ def UpstreamProtocol(self):
56947
+ r"""后端协议
56948
+ :rtype: str
56949
+ """
56950
+ return self._UpstreamProtocol
56951
+
56952
+ @UpstreamProtocol.setter
56953
+ def UpstreamProtocol(self, UpstreamProtocol):
56954
+ self._UpstreamProtocol = UpstreamProtocol
56955
+
56956
+
56957
+ def _deserialize(self, params):
56958
+ self._NginxServerId = params.get("NginxServerId")
56959
+ self._Port = params.get("Port")
56960
+ self._Protocol = params.get("Protocol")
56961
+ self._UpstreamPort = params.get("UpstreamPort")
56962
+ self._UpstreamProtocol = params.get("UpstreamProtocol")
56963
+ memeber_set = set(params.keys())
56964
+ for name, value in vars(self).items():
56965
+ property_name = name[1:]
56966
+ if property_name in memeber_set:
56967
+ memeber_set.remove(property_name)
56968
+ if len(memeber_set) > 0:
56969
+ warnings.warn("%s fileds are useless." % ",".join(memeber_set))
56970
+
56971
+
56972
+
56973
+ class Strategy(AbstractModel):
56974
+ r"""规则的匹配条件结构体
56975
+
56976
+ """
56977
+
56978
+ def __init__(self):
56979
+ r"""
56980
+ :param _Field: 匹配字段
56981
+
56982
+ 匹配字段不同,相应的匹配参数、逻辑符号、匹配内容有所不同 具体如下所示:
56983
+ <table><thead><tr><th>匹配字段</th><th>匹配参数</th><th>逻辑符号</th><th>匹配内容</th></tr></thead><tbody><tr><td>IP(来源IP)</td><td>不支持参数</td><td>ipmatch(匹配)<br/>ipnmatch(不匹配)</td><td>多个IP以英文逗号隔开,最多20个</td></tr><tr><td>IPV6(来源IPv6)</td><td>不支持参数</td><td>ipmatch(匹配)<br/>ipnmatch(不匹配)</td><td>支持单个IPV6地址</td></tr><tr><td>Referer(Referer)</td><td>不支持参数</td><td>empty(内容为空)<br/>null(不存在)<br/>eq(等于)<br/>neq(不等于)<br/>contains(包含)<br/>ncontains(不包含)<br/>len_eq(长度等于)<br/>len_gt(长度大于)<br/>len_lt(长度小于)<br/>strprefix(前缀匹配)<br/>strsuffix(后缀匹配)<br/>rematch(正则匹配)</td><td>请输入内容,512个字符以内</td></tr><tr><td>URL(请求路径)</td><td>不支持参数</td><td>eq(等于)<br/>neq(不等于)<br/>contains(包含)<br/>ncontains(不包含)<br/>len_eq(长度等于)<br/>len_gt(长度大于)<br/>len_lt(长度小于)<br/>strprefix(前缀匹配)<br/>strsuffix(后缀匹配)<br/>rematch(正则匹配)<br/></td><td>请以/开头,512个字符以内</td></tr><tr><td>UserAgent(UserAgent)</td><td>不支持参数</td><td>同匹配字段<font color="Red">Referer</font>逻辑符号</td><td>请输入内容,512个字符以内</td></tr><tr><td>HTTP_METHOD(HTTP请求方法)</td><td>不支持参数</td><td>eq(等于)<br/>neq(不等于)</td><td>请输入方法名称,建议大写</td></tr><tr><td>QUERY_STRING(请求字符串)</td><td>不支持参数</td><td>同匹配字段<font color="Red">请求路径</font>逻辑符号</td><td>请输入内容,512个字符以内</td></tr><tr><td>GET(GET参数值)</td><td>支持参数录入</td><td>contains(包含)<br/>ncontains(不包含)<br/>len_eq(长度等于)<br/>len_gt(长度大于)<br/>len_lt(长度小于)<br/>strprefix(前缀匹配)<br/>strsuffix(后缀匹配)</td><td>请输入内容,512个字符以内</td></tr><tr><td>GET_PARAMS_NAMES(GET参数名)</td><td>不支持参数</td><td>exsit(存在参数)<br/>nexsit(不存在参数)<br/>len_eq(长度等于)<br/>len_gt(长度大于)<br/>len_lt(长度小于)<br/>strprefix(前缀匹配)<br/>strsuffix(后缀匹配)</td><td>请输入内容,512个字符以内</td></tr><tr><td>POST(POST参数值)</td><td>支持参数录入</td><td>同匹配字段<font color="Red">GET参数值</font>逻辑符号</td><td>请输入内容,512个字符以内</td></tr><tr><td>GET_POST_NAMES(POST参数名)</td><td>不支持参数</td><td>同匹配字段<font color="Red">GET参数名</font>逻辑符号</td><td>请输入内容,512个字符以内</td></tr><tr><td>POST_BODY(完整BODY)</td><td>不支持参数</td><td>同匹配字段<font color="Red">请求路径</font>逻辑符号</td><td>请输入BODY内容,512个字符以内</td></tr><tr><td>COOKIE(Cookie)</td><td>不支持参数</td><td>empty(内容为空)<br/>null(不存在)<br/>rematch(正则匹配)</td><td><font color="Red">暂不支持</font></td></tr><tr><td>GET_COOKIES_NAMES(Cookie参数名)</td><td>不支持参数</td><td>同匹配字段<font color="Red">GET参数名</font>逻辑符号</td><td>请输入内容,512个字符以内</td></tr><tr><td>ARGS_COOKIE(Cookie参数值)</td><td>支持参数录入</td><td>同匹配字段<font color="Red">GET参数值</font>逻辑符号</td><td>请输入内容,512个字符以内</td></tr><tr><td>GET_HEADERS_NAMES(Header参数名)</td><td>不支持参数</td><td>exsit(存在参数)<br/>nexsit(不存在参数)<br/>len_eq(长度等于)<br/>len_gt(长度大于)<br/>len_lt(长度小于)<br/>strprefix(前缀匹配)<br/>strsuffix(后缀匹配)<br/>rematch(正则匹配)</td><td>请输入内容,建议小写,512个字符以内</td></tr><tr><td>ARGS_HEADER(Header参数值)</td><td>支持参数录入</td><td>contains(包含)<br/>ncontains(不包含)<br/>len_eq(长度等于)<br/>len_gt(长度大于)<br/>len_lt(长度小于)<br/>strprefix(前缀匹配)<br/>strsuffix(后缀匹配)<br/>rematch(正则匹配)</td><td>请输入内容,512个字符以内</td></tr><tr><td>CONTENT_LENGTH(Content-length)</td><td>支持参数录入</td><td>numgt(数值大于)<br/>numlt(数值小于)<br/>numeq(数值等于)<br/></td><td>请输入0-9999999999999之间的整数</td></tr><tr><td>IP_GEO(来源IP归属地)</td><td>支持参数录入</td><td>geo_in(属于)<br/>geo_not_in(不属于)<br/></td><td>请输入内容,10240字符以内,格式为序列化的JSON,格式为:[{"Country":"中国","Region":"广东","City":"深圳"}]</td></tr><tr><td>CAPTCHA_RISK(验证码风险)</td><td>不支持参数</td><td>eq(等于)<br/>neq(不等于)<br/>belong(属于)<br/>not_belong(不属于)<br/>null(不存在)<br/>exist(存在)</td><td>请输入风险等级值,支持数值范围0-255</td></tr><tr><td>CAPTCHA_DEVICE_RISK(验证码设备风险)</td><td>不支持参数</td><td>eq(等于)<br/>neq(不等于)<br/>belong(属于)<br/>not_belong(不属于)<br/>null(不存在)<br/>exist(存在)</td><td>请输入设备风险代码,支持取值:101、201、301、401、501、601、701</td></tr><tr><td>CAPTCHAR_SCORE(验证码风险评估分)</td><td>不支持参数</td><td>numeq(数值等于)<br/>numgt(数值大于)<br/>numlt(数值小于)<br/>numle(数值小于等于)<br/>numge(数值大于等于)<br/>null(不存在)<br/>exist(存在)</td><td>请输入评估分数,支持数值范围0-100</td></tr>
56984
+ </tbody></table>
56985
+ :type Field: str
56986
+ :param _CompareFunc: 逻辑符号
56987
+
56988
+ 逻辑符号一共分为以下几种类型:
56989
+ empty ( 内容为空)
56990
+ null (不存在)
56991
+ eq ( 等于)
56992
+ neq ( 不等于)
56993
+ contains ( 包含)
56994
+ ncontains ( 不包含)
56995
+ strprefix ( 前缀匹配)
56996
+ strsuffix ( 后缀匹配)
56997
+ len_eq ( 长度等于)
56998
+ len_gt ( 长度大于)
56999
+ len_lt ( 长度小于)
57000
+ ipmatch ( 属于)
57001
+ ipnmatch ( 不属于)
57002
+ numgt ( 数值大于)
57003
+ numlt ( 数值小于)
57004
+ numeq ( 数值等于)
57005
+ numneq ( 数值不等于)
57006
+ numle ( 数值小于等于)
57007
+ numge ( 数值大于等于)
57008
+ geo_in ( IP地理属于)
57009
+ geo_not_in ( IP地理不属于)
57010
+ 各匹配字段对应的逻辑符号不同,详见上述匹配字段表格
57011
+ :type CompareFunc: str
57012
+ :param _Content: 匹配内容
57013
+
57014
+ 目前 当匹配字段为COOKIE(Cookie)时,不需要输入 匹配内容 其他都需要
57015
+
57016
+ :type Content: str
57017
+ :param _Arg: 匹配参数
57018
+
57019
+ 配置参数一共分2种类型 不支持参数与支持参数
57020
+ 当匹配字段为以下4个时,匹配参数才能录入,否则不支持该参数
57021
+ GET(GET参数值)
57022
+ POST(POST参数值)
57023
+ ARGS_COOKIE(Cookie参数值)
57024
+ ARGS_HEADER(Header参数值)
57025
+
57026
+ :type Arg: str
57027
+ :param _CaseNotSensitive: 0:大小写敏感
57028
+ 1:大小写不敏感
57029
+ :type CaseNotSensitive: int
57030
+ """
57031
+ self._Field = None
56370
57032
  self._CompareFunc = None
56371
57033
  self._Content = None
56372
57034
  self._Arg = None
@@ -58573,6 +59235,117 @@ class UpdateRateLimitV2Response(AbstractModel):
58573
59235
  self._RequestId = params.get("RequestId")
58574
59236
 
58575
59237
 
59238
+ class UploadSkillSecScanRequest(AbstractModel):
59239
+ r"""UploadSkillSecScan请求参数结构体
59240
+
59241
+ """
59242
+
59243
+ def __init__(self):
59244
+ r"""
59245
+ :param _ServiceId: <p>服务ID</p>
59246
+ :type ServiceId: str
59247
+ :param _FileData: <p>zip压缩包base64编码后的数据</p>
59248
+ :type FileData: str
59249
+ :param _FileName: <p>skills文件压缩之后的文件名,.zip结尾</p>
59250
+ :type FileName: str
59251
+ """
59252
+ self._ServiceId = None
59253
+ self._FileData = None
59254
+ self._FileName = None
59255
+
59256
+ @property
59257
+ def ServiceId(self):
59258
+ r"""<p>服务ID</p>
59259
+ :rtype: str
59260
+ """
59261
+ return self._ServiceId
59262
+
59263
+ @ServiceId.setter
59264
+ def ServiceId(self, ServiceId):
59265
+ self._ServiceId = ServiceId
59266
+
59267
+ @property
59268
+ def FileData(self):
59269
+ r"""<p>zip压缩包base64编码后的数据</p>
59270
+ :rtype: str
59271
+ """
59272
+ return self._FileData
59273
+
59274
+ @FileData.setter
59275
+ def FileData(self, FileData):
59276
+ self._FileData = FileData
59277
+
59278
+ @property
59279
+ def FileName(self):
59280
+ r"""<p>skills文件压缩之后的文件名,.zip结尾</p>
59281
+ :rtype: str
59282
+ """
59283
+ return self._FileName
59284
+
59285
+ @FileName.setter
59286
+ def FileName(self, FileName):
59287
+ self._FileName = FileName
59288
+
59289
+
59290
+ def _deserialize(self, params):
59291
+ self._ServiceId = params.get("ServiceId")
59292
+ self._FileData = params.get("FileData")
59293
+ self._FileName = params.get("FileName")
59294
+ memeber_set = set(params.keys())
59295
+ for name, value in vars(self).items():
59296
+ property_name = name[1:]
59297
+ if property_name in memeber_set:
59298
+ memeber_set.remove(property_name)
59299
+ if len(memeber_set) > 0:
59300
+ warnings.warn("%s fileds are useless." % ",".join(memeber_set))
59301
+
59302
+
59303
+
59304
+ class UploadSkillSecScanResponse(AbstractModel):
59305
+ r"""UploadSkillSecScan返回参数结构体
59306
+
59307
+ """
59308
+
59309
+ def __init__(self):
59310
+ r"""
59311
+ :param _Data: <p>上传结果</p>
59312
+ :type Data: :class:`tencentcloud.waf.v20180125.models.SkillScanUploadData`
59313
+ :param _RequestId: 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
59314
+ :type RequestId: str
59315
+ """
59316
+ self._Data = None
59317
+ self._RequestId = None
59318
+
59319
+ @property
59320
+ def Data(self):
59321
+ r"""<p>上传结果</p>
59322
+ :rtype: :class:`tencentcloud.waf.v20180125.models.SkillScanUploadData`
59323
+ """
59324
+ return self._Data
59325
+
59326
+ @Data.setter
59327
+ def Data(self, Data):
59328
+ self._Data = Data
59329
+
59330
+ @property
59331
+ def RequestId(self):
59332
+ r"""唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
59333
+ :rtype: str
59334
+ """
59335
+ return self._RequestId
59336
+
59337
+ @RequestId.setter
59338
+ def RequestId(self, RequestId):
59339
+ self._RequestId = RequestId
59340
+
59341
+
59342
+ def _deserialize(self, params):
59343
+ if params.get("Data") is not None:
59344
+ self._Data = SkillScanUploadData()
59345
+ self._Data._deserialize(params.get("Data"))
59346
+ self._RequestId = params.get("RequestId")
59347
+
59348
+
58576
59349
  class UpsertCCAutoStatusRequest(AbstractModel):
58577
59350
  r"""UpsertCCAutoStatus请求参数结构体
58578
59351
 
@@ -2694,6 +2694,29 @@ class WafClient(AbstractClient):
2694
2694
  raise TencentCloudSDKException(type(e).__name__, str(e))
2695
2695
 
2696
2696
 
2697
+ def DescribeSkillSecScanResult(self, request):
2698
+ r"""根据文件Hash查询Skill安全检测结果
2699
+
2700
+ :param request: Request instance for DescribeSkillSecScanResult.
2701
+ :type request: :class:`tencentcloud.waf.v20180125.models.DescribeSkillSecScanResultRequest`
2702
+ :rtype: :class:`tencentcloud.waf.v20180125.models.DescribeSkillSecScanResultResponse`
2703
+
2704
+ """
2705
+ try:
2706
+ params = request._serialize()
2707
+ headers = request.headers
2708
+ body = self.call("DescribeSkillSecScanResult", params, headers=headers)
2709
+ response = json.loads(body)
2710
+ model = models.DescribeSkillSecScanResultResponse()
2711
+ model._deserialize(response["Response"])
2712
+ return model
2713
+ except Exception as e:
2714
+ if isinstance(e, TencentCloudSDKException):
2715
+ raise
2716
+ else:
2717
+ raise TencentCloudSDKException(type(e).__name__, str(e))
2718
+
2719
+
2697
2720
  def DescribeSpartaProtectionInfo(self, request):
2698
2721
  r"""waf斯巴达-获取防护域名信息
2699
2722
 
@@ -4972,6 +4995,29 @@ class WafClient(AbstractClient):
4972
4995
  raise TencentCloudSDKException(type(e).__name__, str(e))
4973
4996
 
4974
4997
 
4998
+ def UploadSkillSecScan(self, request):
4999
+ r"""上传Skill ZIP文件,触发异步安全检测
5000
+
5001
+ :param request: Request instance for UploadSkillSecScan.
5002
+ :type request: :class:`tencentcloud.waf.v20180125.models.UploadSkillSecScanRequest`
5003
+ :rtype: :class:`tencentcloud.waf.v20180125.models.UploadSkillSecScanResponse`
5004
+
5005
+ """
5006
+ try:
5007
+ params = request._serialize()
5008
+ headers = request.headers
5009
+ body = self.call("UploadSkillSecScan", params, headers=headers)
5010
+ response = json.loads(body)
5011
+ model = models.UploadSkillSecScanResponse()
5012
+ model._deserialize(response["Response"])
5013
+ return model
5014
+ except Exception as e:
5015
+ if isinstance(e, TencentCloudSDKException):
5016
+ raise
5017
+ else:
5018
+ raise TencentCloudSDKException(type(e).__name__, str(e))
5019
+
5020
+
4975
5021
  def UpsertCCAutoStatus(self, request):
4976
5022
  r"""编辑SAAS型接入的紧急CC防护状态
4977
5023
 
@@ -2113,6 +2113,24 @@ class WafClient(AbstractClient):
2113
2113
 
2114
2114
  return await self.call_and_deserialize(**kwargs)
2115
2115
 
2116
+ async def DescribeSkillSecScanResult(
2117
+ self,
2118
+ request: models.DescribeSkillSecScanResultRequest,
2119
+ opts: Dict = None,
2120
+ ) -> models.DescribeSkillSecScanResultResponse:
2121
+ """
2122
+ 根据文件Hash查询Skill安全检测结果
2123
+ """
2124
+
2125
+ kwargs = {}
2126
+ kwargs["action"] = "DescribeSkillSecScanResult"
2127
+ kwargs["params"] = request._serialize()
2128
+ kwargs["resp_cls"] = models.DescribeSkillSecScanResultResponse
2129
+ kwargs["headers"] = request.headers
2130
+ kwargs["opts"] = opts or {}
2131
+
2132
+ return await self.call_and_deserialize(**kwargs)
2133
+
2116
2134
  async def DescribeSpartaProtectionInfo(
2117
2135
  self,
2118
2136
  request: models.DescribeSpartaProtectionInfoRequest,
@@ -3901,6 +3919,24 @@ class WafClient(AbstractClient):
3901
3919
 
3902
3920
  return await self.call_and_deserialize(**kwargs)
3903
3921
 
3922
+ async def UploadSkillSecScan(
3923
+ self,
3924
+ request: models.UploadSkillSecScanRequest,
3925
+ opts: Dict = None,
3926
+ ) -> models.UploadSkillSecScanResponse:
3927
+ """
3928
+ 上传Skill ZIP文件,触发异步安全检测
3929
+ """
3930
+
3931
+ kwargs = {}
3932
+ kwargs["action"] = "UploadSkillSecScan"
3933
+ kwargs["params"] = request._serialize()
3934
+ kwargs["resp_cls"] = models.UploadSkillSecScanResponse
3935
+ kwargs["headers"] = request.headers
3936
+ kwargs["opts"] = opts or {}
3937
+
3938
+ return await self.call_and_deserialize(**kwargs)
3939
+
3904
3940
  async def UpsertCCAutoStatus(
3905
3941
  self,
3906
3942
  request: models.UpsertCCAutoStatusRequest,
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: tencentcloud-sdk-python-waf
3
- Version: 3.1.99
3
+ Version: 3.1.102
4
4
  Summary: Tencent Cloud Waf SDK for Python
5
5
  Home-page: https://github.com/TencentCloud/tencentcloud-sdk-python
6
6
  Author: Tencent Cloud
@@ -15,7 +15,7 @@ Classifier: Programming Language :: Python :: 2.7
15
15
  Classifier: Programming Language :: Python :: 3
16
16
  Classifier: Programming Language :: Python :: 3.6
17
17
  Classifier: Programming Language :: Python :: 3.7
18
- Requires-Dist: tencentcloud-sdk-python-common<4.0.0,>=3.1.99
18
+ Requires-Dist: tencentcloud-sdk-python-common<4.0.0,>=3.1.102
19
19
 
20
20
  ============================
21
21
  Tencent Cloud SDK for Python
@@ -0,0 +1 @@
1
+ tencentcloud-sdk-python-common<4.0.0,>=3.1.102
@@ -1 +0,0 @@
1
- tencentcloud-sdk-python-common<4.0.0,>=3.1.99