You need to enable JavaScript to run this app.
文档中心
Web应用防火墙

Web应用防火墙

复制全文
下载 pdf
SDK 参考
Python 使用示例
复制全文
下载 pdf
Python 使用示例
本文为您介绍 Web 应用防火墙 Python SDK 的下载地址、安装方式以及代码示例,帮助您快速了解如何使用 SDK 调用 OpenAPI。​
前提条件​
  • 已安装 Python 2.7 或以上版本。执行python --version可以检查当前 Python 的版本信息。​
步骤一 下载 SDK​
前往volcengine-python-sdk下载 Web 应用防火墙 Python SDK 安装包。​
步骤二 安装 SDK​
您可以使用以下任意一种方式安装SDK。​
方式一​
使用 pip 命令安装 SDK。​
​
pip install volcengine-python-sdk​
​
方式二​
  • 执行python setup.py install --user命令,为指定 user 安装 SDK。​
  • 执行sudo python setup.py install命令,为全部 user 安装 SDK。​
步骤三 调用接口​
​
# -*- coding: utf-8 -*-​
"""​
火山引擎 WAF API 调用示例代码​
​
本示例展示如何使用火山引擎 Python SDK 调用 WAF 服务 API,包括:​
- 初始化服务客户端​
- 注册 API 接口​
- 发送请求并获取响应​
- 处理响应结果​
​
适用场景:需要通过编程方式管理 WAF 配置的开发者​
"""​
​
from volcengine.base.Service import Service​
from volcengine.Credentials import Credentials​
from volcengine.ApiInfo import ApiInfo​
from volcengine.ServiceInfo import ServiceInfo​
import json​
​
# ==================== 配置区域 ====================​
# 请根据实际情况修改以下配置参数​
# 访问密钥:可在火山引擎控制台-访问控制-密钥管理中获取​
ACCESS_KEY = "AKxxxxx" ​
SECRET_KEY = "WXxxxx" ​
# 地域信息:如 cn-beijing、cn-shanghai 等​
REGION = "cn-beijing"​
# API 版本号​
API_VERSION = "2023-12-25"​
# Client 需要注册的 API Action 列表​
API_ACTIONS = [​
"CreateVolcWafServicesByBytePlusCDN",​
"UpdateVulnerabilityConfig",​
"UpdateWafServiceControl",​
"ListDomain",​
]​
​
class WafService(Service):​
"""​
WAF 服务类​
​
用于封装与 WAF API 交互的所有操作,包括初始化、注册 API、发送请求等​
"""​
​
def __init__(self, region, access_key=None, secret_key=None):​
"""​
初始化 WAF 服务​
​
Args:​
region: 地域代码,如 'cn-beijing'​
access_key: 访问密钥 AK(可选,也可通过 set_ak 方法设置)​
secret_key: 访问密钥 SK(可选,也可通过 set_sk 方法设置)​
"""​
# 获取服务配置信息​
self.service_info = self._get_service_info(region)​
# 注册所有需要使用的 API 接口​
self.api_info = self._get_api_info()​
# 调用父类初始化方法​
super(WafService, self).__init__(self.service_info, self.api_info)​
​
# 如果提供了访问密钥,则直接设置​
if access_key:​
self.set_ak(access_key)​
if secret_key:​
self.set_sk(secret_key)​
​
@staticmethod​
def _get_service_info(region):​
"""​
获取服务配置信息(内部方法)​
​
Args:​
region: 地域代码​
​
Returns:​
ServiceInfo 对象​
"""​
# 配置默认请求头​
headers = {​
"Accept": "application/json",​
"Content-Type": "application/json"​
}​
​
# 创建凭证对象,指定服务名称和地域​
credentials = Credentials("", "", "waf", region)​
​
# 返回服务配置信息​
return ServiceInfo(​
"waf.volcengineapi.com", # 服务域名​
headers, # 请求头​
credentials, # 凭证信息​
5, # 连接超时时间(秒)​
5, # 读取超时时间(秒)​
)​
​
@staticmethod​
def _get_api_info():​
"""​
注册所有需要使用的 WAF API 接口信息​
​
用户只需在文件顶部的 API_ACTIONS 列表中添加需要调用的 API Action 名称,​
即可自动完成注册​
​
Returns:​
API 接口信息字典,格式为 {API名称: ApiInfo对象}​
"""​
api_info = {}​
​
# 使用 for 循环批量注册 API​
for action in API_ACTIONS:​
api_info[action] = ApiInfo(​
"POST", # 请求方法​
"/", # 请求路径​
{​
"Action": action, ​
"Version": API_VERSION​
}, # 查询参数​
{}, # 请求头参数​
{} # 路径参数​
)​
​
return api_info​
​
def call_api(self, action_name, body=None, params=None):​
"""​
调用 API 接口并返回原始响应 JSON​
​
Args:​
action_name: API 接口名称,如 'UpdateWafServiceControl'​
body: 请求体,字典类型​
params: 查询参数,字典类型(可选)​
​
Returns:​
解析后的响应 JSON(字典类型)​
"""​
params = params or {}​
body = body or {}​
​
if action_name not in self.api_info:​
raise ValueError(f"未注册的 API Action:{action_name}")​
​
response = self.json(action_name, params, json.dumps(body))​
if not response:​
raise ValueError(f"调用 API {action_name} 失败:API 响应为空")​
​
return json.loads(response)​
​
def main():​
"""​
主函数:展示如何使用 WafService 类调用 API​
"""​
# ==================== 初始化客户端 ====================​
print("=" * 60)​
print("初始化 WAF 服务客户端")​
print("=" * 60)​
​
# 创建 WAF 服务实例​
client = WafService(REGION, ACCESS_KEY, SECRET_KEY)​
​
# ==================== 示例1:更新 WAF 服务控制 ====================​
print("\n" + "=" * 60)​
print("示例1:更新 WAF 服务控制 - 开启自定义响应防护")​
print("=" * 60)​
​
​
# 定义要调用的 API Action,这里使用 UpdateWafServiceControl,注意需要在初始化的时候注册​
demo_action = "UpdateWafServiceControl"​
# 定义请求体参数, 内容参考API文档​
demo_request_body = {​
"Host": "www.test.com",​
"CustomRspEnable": 1,​
"Region": REGION,​
}​
​
response_json = client.call_api(demo_action, demo_request_body)​
print("\n响应 JSON:")​
print(response_json)​
​
​
if __name__ == "__main__":​
main()​
​
最近更新时间:2026.05.26 14:41:40
这个页面对您有帮助吗?
有用
有用
无用
无用