Merge pull request #460 from Herries/new-website

feat: update website style and doc content
This commit is contained in:
delong.wang 2023-11-23 10:18:21 +08:00 committed by GitHub
commit 611b8b3940
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
24 changed files with 504 additions and 264 deletions

View file

@ -23,7 +23,7 @@ bash -c "$(curl -fsSLk https://waf-ce.chaitin.cn/release/latest/setup.sh)"
### 在线安装演示
<iframe src="//player.bilibili.com/player.html?aid=236214137&bvid=BV1Je411f7hQ&cid=1339309164&p=1" scrolling="no" border="0" frameborder="no" framespacing="0" allowfullscreen="true"
<iframe src="//player.bilibili.com/player.html?aid=236214137&bvid=BV1Je411f7hQ&cid=1339309164&p=1" scrolling="no" border="0" frameBorder="no" framespacing="0" allowFullScreen='{true}'
style={{ width: '100%', height: '350px' }}
>
</iframe>
@ -71,15 +71,12 @@ docker compose up -d
### 离线安装演示
<iframe src="//player.bilibili.com/player.html?aid=236214137&bvid=BV1Je411f7hQ&cid=1339309164&p=1" scrolling="no" border="0" frameborder="no" framespacing="0" allowfullscreen="true"
<iframe src="//player.bilibili.com/player.html?aid=278701847&bvid=BV1gw411P7om&cid=1339618895&p=1" scrolling="no" border="0" frameBorder="no" framespacing="0" allowFullScreen='{true}'
style={{ width: '100%', height: '350px' }}
>
</iframe>
## 使用牧云助手安装
使用 [牧云主机管理助手](https://collie.chaitin.cn/) 进行一键安装
@ -122,7 +119,7 @@ lscpu | grep ssse3 # 确认CPU是否支持 ssse3 指令
### 配置检测演示
<iframe src="//player.bilibili.com/player.html?aid=918634668&bvid=BV1Uu4y1L7Ko&cid=1339439164&p=1" scrolling="no" border="0" frameborder="no" framespacing="0" allowfullscreen="true"
<iframe src="//player.bilibili.com/player.html?aid=918634668&bvid=BV1Uu4y1L7Ko&cid=1339439164&p=1" scrolling="no" border="0" frameBorder="no" framespacing="0" allowFullScreen='{true}'
style={{ width: '100%', height: '350px' }}
></iframe>

View file

@ -10,7 +10,7 @@ title: "登录雷池"
根据界面提示,使用 **支持 TOTP 的认证软件或者小程序** 扫描二维码,然后输入动态口令登录:
<iframe src="//player.bilibili.com/player.html?aid=748637002&bvid=BV1wC4y177zN&cid=1339420830&p=1" scrolling="no" border="0" frameborder="no" framespacing="0" allowfullscreen="true"
<iframe src="//player.bilibili.com/player.html?aid=748637002&bvid=BV1wC4y177zN&cid=1339420830&p=1" scrolling="no" border="0" frameBorder="no" framespacing="0" allowFullScreen='{true}'
style={{ width: '100%', height: '350px' }}
></iframe>

View file

@ -17,6 +17,8 @@ title: "配置问题"
3. 访问雷池配置的站点端口网络不通,对于雷池端已配置的端口没有被开放访问(防火墙、安全组等)
4. 同时存在其他错误的配置可能会导致新的配置一直不生效,检查有没有存在其他错误的配置
## 排查步骤:
1. 明确 “网站无法访问” 的具体表现:

View file

@ -7,5 +7,5 @@ title: "检测效果对比"
雷池社区版与其他WAF的检测能力对比
![gift.png](./sample-screenshot.png)
![gift.png](/images/docs/sample-screenshot.png)

View file

@ -0,0 +1,34 @@
---
title: "免费黑 IP 情报源"
---
# 免费黑 IP 情报源
长亭免费开放 WAF 黑 IP 情报源
## IP 情报赋能 WAF
在过去的几年,各种大小重保活动期间,总会看到甲方的安全工程师们会拉一个群,用于共享攻击源 IP这些 IP 也是重保防护能力的重要支撑。
威胁情报对于 Web 攻击防护的作用毋庸置疑,可以精准识别 Bot、C2、VPN、僵尸网络对于防 0Day 攻击、防自动化攻击、降低误报漏报等方面都有着非常不错的效果。
## 情报从哪来
安装雷池社区版后,若选择 “加入 IP 情报共享计划”,雷池将定时自动聚合攻击 IP 数据(只有攻击 IP不涉及任何敏感信息发送到长亭百川云平台。
长亭百川云平台收到来自五湖四海的社区版兄弟们共享的 IP 情报,使用算法进行汇总和优选,生成雷池社区黑 IP 库,最终再回馈给社区。
### 使用方式
1. 在 “通用配置” 页面选择 “加入 IP 情报共享计划”:
![join_ip_intelligence](/images/docs/join_ip_intelligence.png)
2. IP 组页面中将会出现 “长亭社区恶意 IP 情报”:
![malicious_ip_intelligence](/images/docs/malicious_ip_intelligence.png)
3. 在 “黑白名单” 页面增加黑名单规则,条件设置为对应的 IP 组:
![ip_intelligence_blacklist](/images/docs/ip_intelligence_blacklist.png)
4. 坐等 IP 情报拦截。

View file

@ -0,0 +1,153 @@
---
title: "APISIX 联动雷池"
---
# APISIX 联动雷池
Apache APISIX 是一个动态、实时、高性能的云原生 API 网关,提供了负载均衡、动态上游、灰度发布、服务熔断、身份认证、可观测性等丰富的流量管理功能。
雷池是由长亭科技开发的 WAF 系统,提供对 HTTP 请求的安全请求,提供完整的 API 管理和防护能力。
自 APISIX 3.5.0 之后的版本将内置长亭雷池 WAF 插件,在启用 chaitin-waf 插件后,流量将被转发给长亭 WAF 服务,用以检测和防止各种 Web 应用程序攻击,以保护应用程序和用户数据的安全。
## 开源仓库
apisixhttps://github.com/apache/apisix
## 使用方式
### 安装 APISIX
>注意,要使用 APISIX 3.5.0 及以上版本的 APISIX
本文使用 apisix 的 docker 版本来做演示,克隆 apisix-docker 仓库,运行以下命令来安装:
```
git clone <https://github.com/apache/apisix-docker>
cd apisix-docker/compose
echo 'APISIX_DOCKER_TAG=3.5.0-debian' >> .env
docker compose -f docker-compose-release.yaml up -d
```
业务地址http://127.0.0.1:9080/
管理地址http://127.0.0.1:9180/
### 安装雷池
使用雷池官方提供的一句话安装命令即可:
```
bash -c "$(curl -fsSLk <https://waf-ce.chaitin.cn/release/latest/setup.sh>)"
```
不出意外的话,一路回车就能安装成功。
安装目录:/data/safeline/
### 修改雷池检测引擎的工作模式
社区版雷池的检测引擎默认以 unix socket 的方式提供服务,我们需要把他修改为 tcp 方式,供 APISIX 调用。
进入雷池检测引擎的配置目录:
```
cd /data/safeline/resources/detector/
```
用文本编辑器打开目录里的 snserver.yml 文件,寻找这样的三行内容:
```
bind_addr: unix:///resources/detector/snserver.sock
# bind_addr: 0.0.0.0
# listen_port: 8000
```
找到以后,我们需要将 bind 方式从 unix socket 改为 tcp将这三行修改为以下内容即可
```
# bind_addr: unix:///resources/detector/snserver.sock
bind_addr: 0.0.0.0
listen_port: 8000
```
这样我们就把雷池引擎的服务监听到了 8000 端口,现在只需要把容器内的 8000 端口映射到宿主机即可。
进入雷池的安装目录
> cd /data/safeline/
用文本编辑器打开目录里的 compose.yaml 文件,为 detector 容器增加 ports 字段,暴露其 8000
端口,参考如下:
```
......
detector:
......
ports:
- 8000:8000
......
```
OK改好了在雷池安装目录下执行以下命令重启雷池即可生效。
```
docker compose down
docker compose up -d
```
### 修改雷池的默认端口
雷池和 apisix 默认都监听 9443 端口,如果在同一台机器上安装,需要修改雷池的默认端口。
在雷池的安装目录下,有一个名为 .env 的隐藏文件,其中的 MGT_PORT 字段,修改这里后使用上面的方法再重启雷池即可生效。
### 在 apisix 里绑定雷池
调用 apisix 的 api设置雷池检测引擎的地址供 apisix 调用,参考以下请求:
192.168.99.11 是我本地雷池的地址,替换为你的 IP 即可
```
curl <http://127.0.0.1:9180/apisix/admin/plugin_metadata/chaitin-waf> -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d '
{
"nodes":[
{
"host": "192.168.99.11",
"port": 8000
}
]
}'
```
调用 apisix 的 api设置一条路由参考以下请求
> 192.168.99.12:80 是上游服务器的地址apisix 会将请求反向代理到这个地址。
```
curl <http://127.0.0.1:9180/apisix/admin/routes/1> -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d '
{
"uri": "/*",
"plugins": {
"chaitin-waf": {}
},
"upstream": {
"type": "roundrobin",
"nodes": {
"192.168.99.12:80": 1
}
}
}'
```
### 测试防护效果
经过以上步骤,雷池 + apisix 基本配置完成,可以试试效果了,请求 9080 端口,可以看到 apisix 成功代理了上游服务器的页面:
>curl '<http://127.0.0.1:9080/>'
在请求中加入一个 a 参数,模拟 SQL 注入攻击:
>curl '<http://127.0.0.1:9080/>' -d 'a=1 and 1=1'
返回了 HTTP 403 错误,从错误消息中可以看出,雷池成功抵御了此次攻击。
>{"code": 403, "success":false, "message": "blocked by Chaitin SafeLine Web Application Firewall", "event_id": "18e0f220f7a94127acb21ad3c1b4ac47"}
打开雷池的控制台界面,可以看到雷池记录了完整的攻击信息

View file

@ -0,0 +1,89 @@
---
title: "关于我们"
---
# 关于我们
## 关于长亭
雷池是长亭科技耗时近 10 年倾情打造的 Web 应用防护产品,核心检测能力由智能语义分析算法驱动。
北京长亭未来科技有限公司是国际顶尖的网络信息安全公司之一,创始人团队 5 人均为清华博士,并引入阿里云安全核心人才团队。全球首发基于智能语义分析的下一代 Web 应用防火墙产品,目前,公司已形成以攻(安全评估系统)、防(下一代 Web 应用防火墙)、知(安全分析与管理平台)、查(主机安全管理平台)、抓(伪装欺骗系统)为核心的新一代安全防护体系,并提供优质的安全测试及咨询服务,为企业级客户带来智能的全新安全防护思路。
长亭专注为企业级用户提供专业的网络信息安全解决方案。2016 年即发布基于人工智能语义分析的下一代 Web 应用防火墙,颠覆了传统依赖规则防护的工作原理,为企业用户带来智能、简单、省心的安全产品及服务。
长亭雷池坚持以技术为导向,产品与服务所涉及到的算法与核心技术均领先国际行业前沿标准,不仅颠覆了繁琐耗时的传统工作原理,更将产品性能提升至领先水准,为企业用户带来更快、更精准、更智能的安全防护。
## 荣誉 & 资质
### 2021 年
- 入选 IDC《中国硬件 Web 应用防火墙WAF市场份额》前四
- 重磅发布《实战攻防-企业红蓝对抗实践指南》
- 荣获 2021 网信自主创新优秀产品 “补天奖”
- 荣膺 CNNVD 2020 年度优秀技术支撑单位
- 10 项虚拟机漏洞获 Oracle 官方致谢
- 入选安全牛第八版中国网络安全行业全景图
- 入选 CCSIP 2021 中国网络安全产业全景图
- 入选嘶吼 2021 网络安全产业链图谱
### 2020 年
- 2020 年金融科技产品创新突出贡献奖
- 2020 年网络安全创新能力 100 强
- 入选数世咨询《蜜罐诱捕能力指南》
- 入选数说安全中国网络安全市场全景图
- Network Products Guide IT World Award
- 2020 年中国人工智能商业落地价值潜力 100 强
- 2020 Application Security and Testing 铜奖
- 入选安全牛《2020 中国网络安全企业 100 强报告》
- 发现并命名幽灵猫(Ghostcat)漏洞
- 联合发布《国家区块链漏洞库-区块链漏洞定级细则》
### 2019 年
- 入选 Forrester《Now TechWeb Application Firewalls, Q4 2019》报告
- 2019 年关键信息基础设施“盘古奖”
- 荣获《金融电子化》“2019 年度金融科技产品创新突出贡献奖”
- 中国网络安全与信息产业 “金智奖” 2019 年度优秀单位
### 2018 年
- 通过国家保密局涉密信息系统产品认证
- 通信网络安全服务能力一级资质认证
- 中国 IT 思想力奖-金融科技产品创新奖
- TSRC 2017 最佳客户端洞主 & 年度最佳合作伙伴
- 获 Info Security Products Guide 全球卓越奖
- 入选《CIO Advisor》亚太地区 25 家最热门人工智能公司
- 入围 Gartner 2018《Web 应用防火墙魔力象限报告亚太版》
- 2018 年度金融科技优秀产品创新奖
- “2018 年度金牌服务机构” 安全服务奖
### 2017 年
- OWASP 认证雷池SafeLine下一代 Web 应用防火墙
- 通过国家测评中心/信息安全服务资质测评单位
- Gartner 魔力象限报告提名
- 再次登上 Black Hat USA 演讲
- 《财富》杂志评选中国创新百强 “人工智能和机器人” 领域全国第一
- 受邀出席世界互联网大会网络安全闭门会
- 阿里巴巴年度优秀生态合作伙伴
- 入选 Cyber Defense Magazine 全球网络安全领导者 Top 25
### 2016 年
- ISO9001 国际质量体系认证
- ISO27001 国际质量体系认证
- 长亭雷池 Web 应用防火墙(增强级)销售许可证
- 国家信息安全漏洞库CNNVD二级技术支撑单位资质
- 中国年度最佳产品奖、IT 行业最具影响力企业奖
- 年度特殊贡献奖
- GeekPwn 三周年特别贡献奖
### 2015 年
- 中国国家高新技术企业称号
- 中关村高新技术企业称号
- “最具价值安全问题” 荣誉认证
- 首次登上 Black Hat USA 演讲

View file

@ -77,7 +77,18 @@ const config = {
navbar: {
title: "",
logo: { alt: "Logo", src: "images/safeline.svg", href: "https://waf-ce.chaitin.cn" },
items: [],
items: [
{
to: "https://www.bilibili.com/medialist/detail/ml2342694989",
label: "教学视频",
position: "right",
},
{
to: "https://demo.waf-ce.chaitin.cn:9443/dashboard",
label: "演示环境",
position: "right",
},
],
},
footer: {
style: "dark",

View file

@ -22,7 +22,7 @@ a:hover {
--ifm-footer-background-color: #121427;
--ifm-navbar-link-hover-color: #0fc6c2;
--ifm-navbar-background-color: #fff;
--ifm-navbar-link-color: white;
--ifm-navbar-link-color: #000;
}
/* Overriding root Infima variables */

View file

@ -1,222 +1,167 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="798px" height="597px" viewBox="0 0 798 597" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>人机验证1</title>
<svg width="590px" height="679px" viewBox="0 0 590 679" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>人机验证</title>
<defs>
<polygon id="path-1" points="64.644 85.600597 70.3868571 85.600597 75.244 65.600597 70.3297143 65.600597 67.4725714 80.6863112 67.3582857 80.6863112 64.5011429 65.600597 60.1868571 65.600597 57.3297143 80.6863112 57.2154286 80.6863112 54.3582857 65.600597 49.444 65.600597 54.3011429 85.600597 60.044 85.600597 62.3011429 72.6577398 62.4154286 72.6577398"></polygon>
<filter x="-27.1%" y="-25.0%" width="154.3%" height="170.0%" filterUnits="objectBoundingBox" id="filter-2">
<feOffset dx="0" dy="2" in="SourceAlpha" result="shadowOffsetOuter1"></feOffset>
<feGaussianBlur stdDeviation="2" in="shadowOffsetOuter1" result="shadowBlurOuter1"></feGaussianBlur>
<feColorMatrix values="0 0 0 0 0.258823529 0 0 0 0 0.560784314 0 0 0 0 0.976470588 0 0 0 0.3 0" type="matrix" in="shadowBlurOuter1"></feColorMatrix>
<rect id="path-1" x="114.52863" y="0" width="180" height="64" rx="4"></rect>
<filter x="-38.9%" y="-78.1%" width="177.8%" height="318.8%" filterUnits="objectBoundingBox" id="filter-2">
<feOffset dx="0" dy="20" in="SourceAlpha" result="shadowOffsetOuter1"></feOffset>
<feGaussianBlur stdDeviation="20" in="shadowOffsetOuter1" result="shadowBlurOuter1"></feGaussianBlur>
<feColorMatrix values="0 0 0 0 0.0588235294 0 0 0 0 0.776470588 0 0 0 0 0.760784314 0 0 0 0.2 0" type="matrix" in="shadowBlurOuter1"></feColorMatrix>
</filter>
<path d="M89.1125714,85.600597 L94.1411429,85.600597 L88.3411429,65.600597 L80.484,65.600597 L74.684,85.600597 L79.684,85.600597 L81.1982857,79.9434541 L87.5982857,79.9434541 L89.1125714,85.600597 Z M82.1125714,76.5148827 L84.3697143,68.1434541 L84.4268571,68.1434541 L86.684,76.5148827 L82.1125714,76.5148827 Z" id="path-3"></path>
<filter x="-36.0%" y="-25.0%" width="172.0%" height="170.0%" filterUnits="objectBoundingBox" id="filter-4">
<feOffset dx="0" dy="2" in="SourceAlpha" result="shadowOffsetOuter1"></feOffset>
<feGaussianBlur stdDeviation="2" in="shadowOffsetOuter1" result="shadowBlurOuter1"></feGaussianBlur>
<feColorMatrix values="0 0 0 0 0.258823529 0 0 0 0 0.560784314 0 0 0 0 0.976470588 0 0 0 0.3 0" type="matrix" in="shadowBlurOuter1"></feColorMatrix>
<rect id="path-3" x="114.52863" y="535" width="180" height="64" rx="4"></rect>
<filter x="-38.9%" y="-78.1%" width="177.8%" height="318.8%" filterUnits="objectBoundingBox" id="filter-4">
<feOffset dx="0" dy="20" in="SourceAlpha" result="shadowOffsetOuter1"></feOffset>
<feGaussianBlur stdDeviation="20" in="shadowOffsetOuter1" result="shadowBlurOuter1"></feGaussianBlur>
<feColorMatrix values="0 0 0 0 0.0588235294 0 0 0 0 0.776470588 0 0 0 0 0.760784314 0 0 0 0.2 0" type="matrix" in="shadowBlurOuter1"></feColorMatrix>
</filter>
<polygon id="path-5" points="96.892 85.600597 101.606286 85.600597 101.606286 77.400597 108.977714 77.400597 108.977714 73.800597 101.606286 73.800597 101.606286 69.4577398 110.149143 69.4577398 110.149143 65.600597 96.892 65.600597"></polygon>
<filter x="-52.8%" y="-25.0%" width="205.6%" height="170.0%" filterUnits="objectBoundingBox" id="filter-6">
<feOffset dx="0" dy="2" in="SourceAlpha" result="shadowOffsetOuter1"></feOffset>
<feGaussianBlur stdDeviation="2" in="shadowOffsetOuter1" result="shadowBlurOuter1"></feGaussianBlur>
<feColorMatrix values="0 0 0 0 0.258823529 0 0 0 0 0.560784314 0 0 0 0 0.976470588 0 0 0 0.3 0" type="matrix" in="shadowBlurOuter1"></feColorMatrix>
<rect id="path-5" x="408.52863" y="214" width="140" height="64" rx="4"></rect>
<filter x="-50.0%" y="-78.1%" width="200.0%" height="318.8%" filterUnits="objectBoundingBox" id="filter-6">
<feOffset dx="0" dy="20" in="SourceAlpha" result="shadowOffsetOuter1"></feOffset>
<feGaussianBlur stdDeviation="20" in="shadowOffsetOuter1" result="shadowBlurOuter1"></feGaussianBlur>
<feColorMatrix values="0 0 0 0 1 0 0 0 0 0.352941176 0 0 0 0 0.368627451 0 0 0 0.2 0" type="matrix" in="shadowBlurOuter1"></feColorMatrix>
</filter>
<linearGradient x1="-9.91948373e-13%" y1="64.1273363%" x2="100%" y2="64.1273363%" id="linearGradient-7">
<stop stop-color="#E8E9FD" offset="0%"></stop>
<stop stop-color="#F5F5FF" offset="100%"></stop>
<linearGradient x1="50%" y1="0%" x2="50%" y2="100%" id="linearGradient-7">
<stop stop-color="#0FC6C2" offset="0%"></stop>
<stop stop-color="#428FF9" offset="100%"></stop>
</linearGradient>
<path d="M18.7,0 C20.5225397,0 22,1.47746032 22,3.3 L22,18.7 C22,20.5225397 20.5225397,22 18.7,22 L3.3,22 C2.42508045,21.9992298 1.58627636,21.6510469 0.967999983,21.032 C0.348953047,20.4137236 0.000770226696,19.5749195 0,18.7 L0,3.3 C0,1.47746032 1.47746033,0 3.3,0 L18.7,0 Z M15.9576946,12 C15.679997,12 15.413799,12.1149992 15.2182439,12.3194473 L15.2182439,12.3194473 L12.2396115,15.3973035 L10.7815397,13.8853741 C10.5192199,13.6114357 10.1358878,13.5034213 9.77594105,13.6020191 C9.41599427,13.7006168 9.13411726,13.9908473 9.03649035,14.3633835 C8.93886344,14.7359197 9.04031849,15.1341645 9.30263836,15.408103 L9.30263836,15.408103 L11.5001608,17.6867966 C11.6967077,17.8889486 11.9627831,18.0016415 12.2396115,18 C12.5179427,17.9987838 12.7842311,17.8821115 12.9790622,17.6759971 L12.9790622,17.6759971 L16.6971453,13.8421761 C17.1009516,13.4209554 17.1009516,12.740668 16.6971453,12.3194473 C16.5015901,12.1149992 16.2353922,12 15.9576946,12 Z M8.46642223,8.66666665 L5.15892224,8.66666665 C4.75695743,8.66660285 4.3855003,8.8889543 4.18450013,9.24994843 C3.98349996,9.61094255 3.98349996,10.0557241 4.18450013,10.4167182 C4.36316695,10.7376019 4.67651581,10.9489407 5.02625586,10.9918986 L5.15892224,11 L8.46642223,11 C9.08767531,10.9999013 9.59125001,10.4775958 9.59125001,9.83333332 C9.59125001,9.18907086 9.08767531,8.6667653 8.46642223,8.66666665 Z M11.8751722,4.00000001 L5.12517224,4.00000001 C4.72320743,3.99993621 4.3517503,4.22228766 4.15075013,4.58328179 C3.94974996,4.94427592 3.94974996,5.38905745 4.15075013,5.75005157 C4.32941695,6.07093524 4.64276581,6.28227408 4.99250586,6.32523193 L5.12517224,6.33333335 L11.8751722,6.33333335 C12.4964253,6.3332347 13,5.81092914 13,5.16666668 C13,4.52240422 12.4964253,4.00009866 11.8751722,4.00000001 Z" id="path-8"></path>
<filter x="-31.8%" y="-22.7%" width="163.6%" height="163.6%" filterUnits="objectBoundingBox" id="filter-9">
<feOffset dx="0" dy="2" in="SourceAlpha" result="shadowOffsetOuter1"></feOffset>
<feGaussianBlur stdDeviation="2" in="shadowOffsetOuter1" result="shadowBlurOuter1"></feGaussianBlur>
<feColorMatrix values="0 0 0 0 0.0588235294 0 0 0 0 0.776470588 0 0 0 0 0.760784314 0 0 0 0.5 0" type="matrix" in="shadowBlurOuter1"></feColorMatrix>
</filter>
<path d="M346.2,236.800597 C348.02254,236.800597 349.5,238.278057 349.5,240.100597 L349.5,255.500597 C349.5,257.323137 348.02254,258.800597 346.2,258.800597 L330.8,258.800597 C329.92508,258.799827 329.086276,258.451644 328.468,257.832597 C327.848953,257.214321 327.50077,256.375517 327.5,255.500597 L327.5,240.100597 C327.5,238.278057 328.97746,236.800597 330.8,236.800597 L346.2,236.800597 Z M341.792893,249.97217 C341.402369,249.581646 340.769204,249.581646 340.37868,249.97217 C339.988155,250.362694 339.988155,250.995859 340.37868,251.386383 L340.37868,251.386383 L341.438786,252.446277 L340.37868,253.507704 C339.988155,253.898228 339.988155,254.531393 340.37868,254.921917 C340.769204,255.312442 341.402369,255.312442 341.792893,254.921917 L341.792893,254.921917 L342.852786,253.861277 L343.914214,254.921917 C344.304738,255.312442 344.937903,255.312442 345.328427,254.921917 C345.718951,254.531393 345.718951,253.898228 345.328427,253.507704 L345.328427,253.507704 L344.267786,252.446277 L345.328427,251.386383 C345.718951,250.995859 345.718951,250.362694 345.328427,249.97217 C344.937903,249.581646 344.304738,249.581646 343.914214,249.97217 L343.914214,249.97217 L342.852786,251.032277 Z M335.966422,245.467264 L332.658922,245.467264 C332.256957,245.4672 331.8855,245.689551 331.6845,246.050545 C331.4835,246.41154 331.4835,246.856321 331.6845,247.217315 C331.863167,247.538199 332.176516,247.749538 332.526256,247.792496 L332.658922,247.800597 L335.966422,247.800597 C336.587675,247.800498 337.09125,247.278193 337.09125,246.63393 C337.09125,245.989668 336.587675,245.467362 335.966422,245.467264 Z M339.375172,240.800597 L332.625172,240.800597 C332.223207,240.800533 331.85175,241.022885 331.65075,241.383879 C331.44975,241.744873 331.44975,242.189654 331.65075,242.550649 C331.829417,242.871532 332.142766,243.082871 332.492506,243.125829 L332.625172,243.13393 L339.375172,243.13393 C339.996425,243.133832 340.5,242.611526 340.5,241.967264 C340.5,241.323001 339.996425,240.800696 339.375172,240.800597 Z" id="path-10"></path>
<filter x="-31.8%" y="-22.7%" width="163.6%" height="163.6%" filterUnits="objectBoundingBox" id="filter-11">
<feOffset dx="0" dy="2" in="SourceAlpha" result="shadowOffsetOuter1"></feOffset>
<feGaussianBlur stdDeviation="2" in="shadowOffsetOuter1" result="shadowBlurOuter1"></feGaussianBlur>
<feColorMatrix values="0 0 0 0 1 0 0 0 0 0.352941176 0 0 0 0 0.368627451 0 0 0 0.3 0" type="matrix" in="shadowBlurOuter1"></feColorMatrix>
</filter>
<path d="M1,8 C0.399992184,8 0,7.60000194 0,7 L0,3 C0,1.39999415 1.39999415,0 3,0 L7,0 C7.60000194,0 8,0.399992205 8,1 C8,1.6000117 7.60000192,2 7,2 L3,2 C2.39999609,2 2,2.39999611 2,3 L2,7 C2,7.60000194 1.6000117,8 1,8 Z M7,22 L3,22 C1.39999415,22 0,20.6000059 0,19.0000156 L0,14.9999844 C0,14.399998 0.399992205,13.9999844 1,13.9999844 C1.6000117,13.9999844 1.99998242,14.3999981 1.99998242,14.9999844 L1.99998242,18.9999844 C1.99998242,19.5999824 2.39997463,19.9999844 2.99998437,19.9999844 L6.9999707,19.9999844 C7.59998046,19.9999844 7.99997264,20.3999883 7.99997264,20.999998 C7.99997264,21.6000078 7.60000194,22 7,22 Z M18.9999844,22 L14.9999844,22 C14.399998,22 13.9999844,21.6000078 13.9999844,20.9999981 C13.9999844,20.3999883 14.3999981,19.9999844 14.9999844,19.9999844 L18.9999727,19.9999844 C19.5999824,19.9999844 19.9999961,19.5999824 19.9999961,18.9999844 L19.9999961,14.9999844 C19.9999961,14.399998 20.3999883,13.9999844 20.999998,13.9999844 C21.6000078,13.9999844 22,14.3999981 22,14.9999844 L22,18.9999844 C22,20.6000059 20.6000059,22 18.9999844,22 Z M20.9999981,8.00000002 C20.3999883,8.00000002 19.9999961,7.60000194 19.9999961,7.00000002 L19.9999961,3.00000002 C19.9999961,2.39999609 19.5999824,2.00000002 18.9999727,2.00000002 L14.9999844,2.00000002 C14.399998,2.00000002 13.9999844,1.6000117 13.9999844,1.00000002 C13.9999844,0.399992205 14.3999981,2.14843752e-08 14.9999844,2.14843752e-08 L18.9999727,2.14843752e-08 C20.6000058,2.14843752e-08 21.9999844,1.39999417 21.9999844,3.00000002 L21.9999844,7.00000002 C21.9999844,7.60000194 21.6000078,8.00000002 20.9999981,8.00000002 Z M21,11.9999981 L1,11.9999981 C0.399992205,11.9999981 0,11.5999883 0,10.9999981 C0,10.3999902 0.399992205,9.99999806 1,9.99999806 L21,9.99999806 C21.6000078,9.99999806 22,10.3999903 22,10.9999981 C22,11.5999883 21.6000078,11.9999981 21,11.9999981 Z" id="path-12"></path>
<filter x="-31.8%" y="-22.7%" width="163.6%" height="163.6%" filterUnits="objectBoundingBox" id="filter-13">
<feOffset dx="0" dy="2" in="SourceAlpha" result="shadowOffsetOuter1"></feOffset>
<feGaussianBlur stdDeviation="2" in="shadowOffsetOuter1" result="shadowBlurOuter1"></feGaussianBlur>
<feColorMatrix values="0 0 0 0 0.258823529 0 0 0 0 0.560784314 0 0 0 0 0.976470588 0 0 0 0.3 0" type="matrix" in="shadowBlurOuter1"></feColorMatrix>
</filter>
<linearGradient x1="50%" y1="0%" x2="50%" y2="100%" id="linearGradient-14">
<stop stop-color="#428FF9" stop-opacity="0.3" offset="0%"></stop>
<stop stop-color="#77C2FD" stop-opacity="0" offset="100%"></stop>
<linearGradient x1="100%" y1="50%" x2="-2.85746241e-13%" y2="50%" id="linearGradient-8">
<stop stop-color="#FF5A5E" offset="0%"></stop>
<stop stop-color="#428FF9" offset="100%"></stop>
</linearGradient>
<path d="M414.461232,17.268361 L414.088304,17.2354076 C413.412627,17.2150179 412.822599,17.3807566 412.332332,17.6634293 C411.885756,17.9483246 411.693409,18.3719943 411.763213,18.8089997 L414.963629,39.6966077 L397.385385,38.8723061 C395.966946,38.8141318 394.875275,39.9393868 395.193512,41.2857792 C395.511749,42.6321717 396.646595,43.3201927 398.068128,43.4064891 L418.264789,44.3360262 L418.352173,44.3404714 C418.590931,44.3386348 418.762605,44.3194031 418.954577,44.2872216 L419.254232,44.2465356 C419.550793,44.1777274 419.800568,44.0785743 420.003557,43.9490764 C420.226845,43.8066288 420.403346,43.6338363 420.509669,43.4155266 L420.569206,43.166872 C420.569206,43.166872 420.614633,42.9874116 420.622555,42.861973 L420.708579,42.6566131 L420.591614,42.580751 L416.909572,18.986903 C416.839768,18.5498976 416.510906,18.1276786 415.996261,17.7938855 C415.575187,17.520782 415.035414,17.3534995 414.484625,17.2835334 L414.461232,17.268361 Z" id="path-15"></path>
<filter x="-27.4%" y="-18.4%" width="154.8%" height="151.6%" filterUnits="objectBoundingBox" id="filter-16">
<feOffset dx="0" dy="2" in="SourceAlpha" result="shadowOffsetOuter1"></feOffset>
<feGaussianBlur stdDeviation="2" in="shadowOffsetOuter1" result="shadowBlurOuter1"></feGaussianBlur>
<feColorMatrix values="0 0 0 0 0.0588235294 0 0 0 0 0.776470588 0 0 0 0 0.760784314 0 0 0 0.3 0" type="matrix" in="shadowBlurOuter1"></feColorMatrix>
<linearGradient x1="50%" y1="0%" x2="50%" y2="100%" id="linearGradient-9">
<stop stop-color="#428FF9" offset="0%"></stop>
<stop stop-color="#0FC6C2" offset="100%"></stop>
</linearGradient>
<linearGradient x1="50%" y1="0%" x2="50%" y2="100%" id="linearGradient-10">
<stop stop-color="#FF5A5E" offset="0%"></stop>
<stop stop-color="#428FF9" offset="100%"></stop>
</linearGradient>
<linearGradient x1="50%" y1="0%" x2="50%" y2="100%" id="linearGradient-11">
<stop stop-color="#FF5A5E" offset="0%"></stop>
<stop stop-color="#428FF9" offset="100%"></stop>
</linearGradient>
<polygon id="path-12" points="204.207865 214 133.52863 246.17422 204.207865 278.348439 274.207865 246"></polygon>
<filter x="-49.8%" y="-77.7%" width="199.5%" height="317.6%" filterUnits="objectBoundingBox" id="filter-13">
<feOffset dx="0" dy="20" in="SourceAlpha" result="shadowOffsetOuter1"></feOffset>
<feGaussianBlur stdDeviation="20" in="shadowOffsetOuter1" result="shadowBlurOuter1"></feGaussianBlur>
<feColorMatrix values="0 0 0 0 0.258823529 0 0 0 0 0.560784314 0 0 0 0 0.976470588 0 0 0 0.2 0" type="matrix" in="shadowBlurOuter1"></feColorMatrix>
</filter>
<path d="M563.316513,119.495414 C563.320309,119.849713 563.100706,120.188249 562.706031,120.436448 C562.311356,120.684646 561.773986,120.822145 561.212296,120.818656 L544.287362,120.719454 L544.393824,131.395243 C544.398583,131.872426 543.999389,132.310996 543.346616,132.545747 C542.693842,132.780499 541.886661,132.775768 541.229128,132.533336 C540.571596,132.290904 540.163608,131.847604 540.15885,131.37042 L540.052387,120.694631 L523.127454,120.595429 C522.272314,120.588812 521.499497,120.258245 521.16877,119.757616 C520.838042,119.256986 521.014401,118.684681 521.615746,118.307123 C522.008116,118.059974 522.541974,117.922291 523.100814,117.924122 L540.025748,118.023324 L539.919286,107.347535 C539.91645,106.808161 540.428525,106.32577 541.217126,106.124927 C542.005726,105.924084 542.915871,106.044261 543.523864,106.429512 C543.921837,106.680896 544.148454,107.019833 544.15426,107.372357 L544.260723,118.048147 L561.185656,118.147349 C561.747343,118.150444 562.287518,118.294259 562.68719,118.547113 C563.086862,118.799967 563.313242,119.141118 563.316513,119.495414 Z" id="path-17"></path>
<filter x="-16.5%" y="-18.7%" width="133.1%" height="152.5%" filterUnits="objectBoundingBox" id="filter-18">
<feOffset dx="0" dy="2" in="SourceAlpha" result="shadowOffsetOuter1"></feOffset>
<feGaussianBlur stdDeviation="2" in="shadowOffsetOuter1" result="shadowBlurOuter1"></feGaussianBlur>
<feColorMatrix values="0 0 0 0 1 0 0 0 0 0.352941176 0 0 0 0 0.368627451 0 0 0 0.3 0" type="matrix" in="shadowBlurOuter1"></feColorMatrix>
<polygon id="path-14" points="204.207865 321 133.52863 353.17422 204.207865 385.348439 274.207865 353"></polygon>
<filter x="-49.8%" y="-77.7%" width="199.5%" height="317.6%" filterUnits="objectBoundingBox" id="filter-15">
<feOffset dx="0" dy="20" in="SourceAlpha" result="shadowOffsetOuter1"></feOffset>
<feGaussianBlur stdDeviation="20" in="shadowOffsetOuter1" result="shadowBlurOuter1"></feGaussianBlur>
<feColorMatrix values="0 0 0 0 0.258823529 0 0 0 0 0.560784314 0 0 0 0 0.976470588 0 0 0 0.2 0" type="matrix" in="shadowBlurOuter1"></feColorMatrix>
</filter>
<path d="M13.5807692,24.9192308 L20.9846154,24.9192308 C21.5346154,24.9192308 21.9153846,25.3 21.9153846,25.7653846 C21.9153846,26.2307692 21.5346154,26.6115385 20.9846154,26.6115385 L13.5807692,26.6115385 C13.7076923,26.3576923 13.7923077,26.0615385 13.7923077,25.7653846 C13.7923077,25.4692308 13.7076923,25.2153846 13.5807692,24.9192308 Z M11,23.65 C12.1423077,23.65 13.1153846,24.6230769 13.1153846,25.7653846 C13.1153846,26.9076923 12.1423077,27.8807693 11,27.8807693 C9.85769232,27.8807693 8.88461537,26.9076923 8.88461537,25.7653846 C8.88461537,24.6230769 9.85769229,23.65 11,23.65 L11,23.65 Z M10.1538461,23.2269231 L11.8461538,23.2269231 L11.8461538,21.5346154 L10.1538461,21.5346154 L10.1538461,23.2269231 L10.1538461,23.2269231 Z M0.930769234,24.9192308 L8.46153846,24.9192308 C8.33461539,25.173077 8.24999999,25.4692308 8.24999999,25.7653846 C8.24999999,26.0615384 8.33461536,26.3576923 8.46153846,26.6115385 L0.930769234,26.6115385 C0.380769226,26.6115385 8.8817842e-16,26.2307693 8.8817842e-16,25.7653846 C8.8817842e-16,25.3 0.423076915,24.9192308 0.930769234,24.9192308 Z M17.7692308,3.76538463 L19.4615385,3.76538463 L19.4615385,2.07307694 L17.7692308,2.07307694 L17.7692308,3.76538463 Z M15.6538461,2.07307694 C15.1884615,2.07307694 14.8076923,2.45384617 14.8076923,2.91923077 C14.8076923,3.38461537 15.1884615,3.76538463 15.6538461,3.76538463 C16.1192307,3.76538463 16.5,3.3846154 16.5,2.91923077 C16.5,2.45384614 16.1192308,2.07307694 15.6538461,2.07307694 Z M12.6923077,2.07307694 C12.2269231,2.07307694 11.8461538,2.45384617 11.8461538,2.91923077 C11.8461538,3.38461537 12.2269231,3.76538463 12.6923077,3.76538463 C13.1576923,3.76538463 13.5384615,3.3846154 13.5384615,2.91923077 C13.5384615,2.45384614 13.1576923,2.07307694 12.6923077,2.07307694 Z M20.7307692,5.88076923 L1.26923077,5.88076923 C0.592307697,5.88076923 0,5.33076922 0,4.56923077 L0,1.31153846 C0,0.634615386 0.550000008,5.88311451e-16 1.26923077,5.88311451e-16 L20.7307692,5.88311451e-16 C21.4076923,5.88311451e-16 22,0.550000008 22,1.31153846 L22,4.56923077 C22,5.33076922 21.4076923,5.88076923 20.7307692,5.88076923 Z M17.7692308,11.3807693 L19.4615385,11.3807693 L19.4615385,9.68846154 L17.7692308,9.68846154 L17.7692308,11.3807693 Z M15.6538461,9.68846154 C15.1884615,9.68846154 14.8076923,10.0692308 14.8076923,10.5346154 C14.8076923,11 15.1884615,11.3807693 15.6538461,11.3807693 C16.1192307,11.3807693 16.5,11 16.5,10.5346154 C16.5,10.1115385 16.1192308,9.68846154 15.6538461,9.68846154 Z M12.6923077,9.68846154 C12.2269231,9.68846154 11.8461538,10.0692308 11.8461538,10.5346154 C11.8461538,11 12.2269231,11.3807693 12.6923077,11.3807693 C13.1576923,11.3807693 13.5384615,11 13.5384615,10.5346154 C13.5807692,10.1115385 13.1576923,9.68846154 12.6923077,9.68846154 Z M20.7307692,13.4961539 L1.26923077,13.4961539 C0.592307697,13.4961539 0,12.9461538 0,12.1846154 L0,8.92692309 C0,8.25000001 0.550000008,7.61538463 1.26923077,7.61538463 L20.7307692,7.61538463 C21.4076923,7.61538463 22,8.16538464 22,8.92692309 L22,12.1846154 C22,12.9461538 21.4076923,13.4961539 20.7307692,13.4961539 Z M17.7692308,18.9961539 L19.4615385,18.9961539 L19.4615385,17.3038462 L17.7692308,17.3038462 L17.7692308,18.9961539 Z M15.6538461,17.3038462 C15.1884615,17.3038462 14.8076923,17.6846154 14.8076923,18.15 C14.8076923,18.6153847 15.1884615,18.9961539 15.6538461,18.9961539 C16.1192307,18.9961539 16.5,18.6153846 16.5,18.15 C16.5,17.6846154 16.1192308,17.3038462 15.6538461,17.3038462 Z M12.6923077,17.3038462 C12.2269231,17.3038462 11.8461538,17.6846154 11.8461538,18.15 C11.8461538,18.6153847 12.2269231,18.9961539 12.6923077,18.9961539 C13.1576923,18.9961539 13.5384615,18.6153846 13.5384615,18.15 C13.5807692,17.6846154 13.1576923,17.3038462 12.6923077,17.3038462 Z M20.7307692,21.1115385 L1.26923077,21.1115385 C0.592307697,21.1115385 0,20.5615385 0,19.8 L0,16.5423077 C0,15.8653846 0.550000008,15.2307693 1.26923077,15.2307693 L20.7307692,15.2307693 C21.4076923,15.2307693 22,15.7807693 22,16.5423077 L22,19.8 C22,20.4769231 21.4076923,21.1115385 20.7307692,21.1115385 Z" id="path-19"></path>
<filter x="-31.8%" y="-17.9%" width="163.6%" height="150.2%" filterUnits="objectBoundingBox" id="filter-20">
<feOffset dx="0" dy="2" in="SourceAlpha" result="shadowOffsetOuter1"></feOffset>
<feGaussianBlur stdDeviation="2" in="shadowOffsetOuter1" result="shadowBlurOuter1"></feGaussianBlur>
<feColorMatrix values="0 0 0 0 0.258823529 0 0 0 0 0.560784314 0 0 0 0 0.976470588 0 0 0 0.3 0" type="matrix" in="shadowBlurOuter1"></feColorMatrix>
<polygon id="path-16" points="204.207865 107 133.52863 139.17422 204.207865 171.348439 274.207865 139"></polygon>
<filter x="-49.8%" y="-77.7%" width="199.5%" height="317.6%" filterUnits="objectBoundingBox" id="filter-17">
<feOffset dx="0" dy="20" in="SourceAlpha" result="shadowOffsetOuter1"></feOffset>
<feGaussianBlur stdDeviation="20" in="shadowOffsetOuter1" result="shadowBlurOuter1"></feGaussianBlur>
<feColorMatrix values="0 0 0 0 0.258823529 0 0 0 0 0.560784314 0 0 0 0 0.976470588 0 0 0 0.2 0" type="matrix" in="shadowBlurOuter1"></feColorMatrix>
</filter>
<path d="M11.2682927,0 L21.3292683,2.95121951 C21.7317073,3.08536585 22,3.35365854 22,3.8902439 L22,3.8902439 L22,9.92682927 C22,16.7682927 17.7073171,22.6707317 11.2682927,24.8170732 L11.2682927,24.8170732 L10.7317073,24.8170732 C4.29268293,22.6707317 0,16.6341463 0,9.92682927 L0,9.92682927 L0,3.8902439 C0,3.35365854 0.268292683,3.08536585 0.670731707,2.95121951 L0.670731707,2.95121951 L10.7317073,0 L11.2682927,0 Z M10.195122,5.23170732 C7.51219512,5.36585366 5.36585366,7.51219512 5.36585366,10.3292683 C5.36585366,13.1463415 7.64634146,15.4268293 10.4634146,15.4268293 C11.5365854,15.4268293 12.4756098,15.1585366 13.2804878,14.6219512 L13.6829268,15.0243902 L15.2926829,16.6341463 C15.695122,17.0365854 16.3658537,17.0365854 16.7682927,16.6341463 C17.1707317,16.2317073 17.1707317,15.5609756 16.7682927,15.1585366 L15.0243902,13.6829268 L14.4878049,13.1463415 C15.0243902,12.3414634 15.2926829,11.402439 15.2926829,10.3292683 C15.2926829,7.51219512 13.0121951,5.23170732 10.195122,5.23170732 Z M10.4634146,7.37804878 C12.0731707,7.37804878 13.4146341,8.7195122 13.4146341,10.3292683 C13.4146341,11.9390244 12.0731707,13.2804878 10.4634146,13.2804878 C8.85365854,13.2804878 7.51219512,11.9390244 7.51219512,10.3292683 C7.51219512,8.7195122 8.85365854,7.37804878 10.4634146,7.37804878 Z" id="path-21"></path>
<filter x="-31.8%" y="-20.1%" width="163.6%" height="156.4%" filterUnits="objectBoundingBox" id="filter-22">
<feOffset dx="0" dy="2" in="SourceAlpha" result="shadowOffsetOuter1"></feOffset>
<feGaussianBlur stdDeviation="2" in="shadowOffsetOuter1" result="shadowBlurOuter1"></feGaussianBlur>
<feColorMatrix values="0 0 0 0 0.258823529 0 0 0 0 0.560784314 0 0 0 0 0.976470588 0 0 0 0.3 0" type="matrix" in="shadowBlurOuter1"></feColorMatrix>
<polygon id="path-18" points="204.207865 428 133.52863 460.17422 204.207865 492.348439 274.207865 460"></polygon>
<filter x="-49.8%" y="-77.7%" width="199.5%" height="317.6%" filterUnits="objectBoundingBox" id="filter-19">
<feOffset dx="0" dy="20" in="SourceAlpha" result="shadowOffsetOuter1"></feOffset>
<feGaussianBlur stdDeviation="20" in="shadowOffsetOuter1" result="shadowBlurOuter1"></feGaussianBlur>
<feColorMatrix values="0 0 0 0 0.258823529 0 0 0 0 0.560784314 0 0 0 0 0.976470588 0 0 0 0.2 0" type="matrix" in="shadowBlurOuter1"></feColorMatrix>
</filter>
<linearGradient x1="50%" y1="0%" x2="50%" y2="100%" id="linearGradient-20">
<stop stop-color="#428FF9" offset="0%"></stop>
<stop stop-color="#0FC6C2" offset="100%"></stop>
</linearGradient>
</defs>
<g id="官网设计" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="人机验证1" transform="translate(-173.000000, -35.000000)">
<g transform="translate(173.500000, 35.199403)">
<path d="M739.191712,564.537418 L739.191712,533.950451 L739.191712,533.950451 L685.690071,500.116231 C685.223293,499.821042 684.605596,499.960143 684.310408,500.426922 C684.209271,500.586847 684.155585,500.772186 684.155585,500.961408 L684.155585,528.998029 C684.155585,530.013735 684.669522,530.960464 685.52128,531.513789 L737.646944,565.376005 C738.110082,565.676872 738.729431,565.545325 739.030298,565.082187 C739.135644,564.920024 739.191712,564.730795 739.191712,564.537418 Z" id="路径-115备份-7" fill="#F5F5FF"></path>
<path d="M79.1917118,140.537418 L79.1917118,109.950451 L79.1917118,109.950451 L25.6900711,76.116231 C25.2232927,75.8210423 24.6055963,75.9601431 24.3104075,76.4269215 C24.209271,76.5868475 24.1555846,76.7721861 24.1555846,76.961408 L24.1555846,104.998029 C24.1555846,106.013735 24.6695219,106.960464 25.52128,107.513789 L77.6469436,141.376005 C78.1100822,141.676872 78.7294313,141.545325 79.0302984,141.082187 C79.1356438,140.920024 79.1917118,140.730795 79.1917118,140.537418 Z" id="路径-115" fill="#F5F5FF"></path>
<path d="M409.191712,100.537418 L409.191712,69.9504505 L409.191712,69.9504505 L355.690071,36.116231 C355.223293,35.8210423 354.605596,35.9601431 354.310408,36.4269215 C354.209271,36.5868475 354.155585,36.7721861 354.155585,36.961408 L354.155585,64.9980287 C354.155585,66.0137353 354.669522,66.9604641 355.52128,67.5137887 L407.646944,101.376005 C408.110082,101.676872 408.729431,101.545325 409.030298,101.082187 C409.135644,100.920024 409.191712,100.730795 409.191712,100.537418 Z" id="路径-115备份-2" fill="#F5F5FF"></path>
<path d="M541.191712,185.537418 L541.191712,154.950451 L541.191712,154.950451 L487.690071,121.116231 C487.223293,120.821042 486.605596,120.960143 486.310408,121.426922 C486.209271,121.586847 486.155585,121.772186 486.155585,121.961408 L486.155585,149.998029 C486.155585,151.013735 486.669522,151.960464 487.52128,152.513789 L539.646944,186.376005 C540.110082,186.676872 540.729431,186.545325 541.030298,186.082187 C541.135644,185.920024 541.191712,185.730795 541.191712,185.537418 Z" id="路径-115备份-4" fill="#F5F5FF"></path>
<path d="M79.1917118,109.950451 L135.146515,76.065107 C135.618928,75.7790215 136.233812,75.9300693 136.519897,76.4024818 C136.614503,76.5587035 136.664519,76.7378507 136.664519,76.9204854 L136.664519,104.959735 C136.664519,105.996345 136.129366,106.959507 135.249171,107.507062 L80.7199292,141.428848 C80.2509792,141.720574 79.6343291,141.576906 79.3426026,141.107956 C79.2439812,140.949422 79.1917118,140.766445 79.1917118,140.579738 L79.1917118,109.950451 L79.1917118,109.950451 Z" id="路径-116" fill="#E8E9FD"></path>
<path d="M79.1917118,109.950451 L25.4855428,75.9868881 C25.0187644,75.6916994 24.8796635,75.074003 25.1748523,74.6072246 C25.2533053,74.4831678 25.3581064,74.3779028 25.4818155,74.2989027 L76.031302,42.0182237 C77.964953,40.7834027 80.4334887,40.7593727 82.3908118,41.9563169 L135.262616,74.2885349 C135.733784,74.5766644 135.882167,75.1921971 135.594037,75.6633657 C135.510614,75.7997844 135.395694,75.9142084 135.258915,75.9970395 L79.1917118,109.950451 L79.1917118,109.950451 Z" id="路径-118" fill="#FFFFFF"></path>
<path d="M409.191712,69.9504505 L355.485543,35.9868881 C355.018764,35.6916994 354.879664,35.074003 355.174852,34.6072246 C355.253305,34.4831678 355.358106,34.3779028 355.481816,34.2989027 L406.031302,2.01822373 C407.964953,0.783402743 410.433489,0.759372693 412.390812,1.95631686 L465.262616,34.2885349 C465.733784,34.5766644 465.882167,35.1921971 465.594037,35.6633657 C465.510614,35.7997844 465.395694,35.9142084 465.258915,35.9970395 L409.191712,69.9504505 L409.191712,69.9504505 Z" id="路径-118" fill="#FFFFFF"></path>
<path d="M541.191712,154.950451 L487.485543,120.986888 C487.018764,120.691699 486.879664,120.074003 487.174852,119.607225 C487.253305,119.483168 487.358106,119.377903 487.481816,119.298903 L538.031302,87.0182237 C539.964953,85.7834027 542.433489,85.7593727 544.390812,86.9563169 L597.262616,119.288535 C597.733784,119.576664 597.882167,120.192197 597.594037,120.663366 C597.510614,120.799784 597.395694,120.914208 597.258915,120.99704 L541.191712,154.950451 L541.191712,154.950451 Z" id="路径-118" fill="#FFFFFF"></path>
<path d="M739.191712,533.950451 L685.485543,499.986888 C685.018764,499.691699 684.879664,499.074003 685.174852,498.607225 C685.253305,498.483168 685.358106,498.377903 685.481816,498.298903 L736.031302,466.018224 C737.964953,464.783403 740.433489,464.759373 742.390812,465.956317 L795.262616,498.288535 C795.733784,498.576664 795.882167,499.192197 795.594037,499.663366 C795.510614,499.799784 795.395694,499.914208 795.258915,499.99704 L739.191712,533.950451 L739.191712,533.950451 Z" id="路径-118备份" fill="#FFFFFF"></path>
<path d="M409.191712,69.9504505 L465.146515,36.065107 C465.618928,35.7790215 466.233812,35.9300693 466.519897,36.4024818 C466.614503,36.5587035 466.664519,36.7378507 466.664519,36.9204854 L466.664519,64.9597348 C466.664519,65.9963451 466.129366,66.9595066 465.249171,67.5070622 L410.719929,101.428848 C410.250979,101.720574 409.634329,101.576906 409.342603,101.107956 C409.243981,100.949422 409.191712,100.766445 409.191712,100.579738 L409.191712,69.9504505 L409.191712,69.9504505 Z" id="路径-116备份-2" fill="#E8E9FD"></path>
<path d="M541.191712,154.950451 L597.146515,121.065107 C597.618928,120.779021 598.233812,120.930069 598.519897,121.402482 C598.614503,121.558704 598.664519,121.737851 598.664519,121.920485 L598.664519,149.959735 C598.664519,150.996345 598.129366,151.959507 597.249171,152.507062 L542.719929,186.428848 C542.250979,186.720574 541.634329,186.576906 541.342603,186.107956 C541.243981,185.949422 541.191712,185.766445 541.191712,185.579738 L541.191712,154.950451 L541.191712,154.950451 Z" id="路径-116备份-4" fill="#E8E9FD"></path>
<path d="M24.1555846,78.4333103 L24.1555846,103.369461 C24.1555846,105.400874 25.1834593,107.294331 26.8869754,108.400981 L75.9928244,140.301445 C77.9448616,141.569541 80.4542072,141.594149 82.4307383,140.36458 L133.833823,108.387528 C135.594214,107.292417 136.664519,105.366093 136.664519,103.292873 L136.664519,78.5096591 C136.664519,76.4200985 135.577405,74.4810352 133.794746,73.3909019 L82.3908118,41.9563169 C80.4334887,40.7593727 77.964953,40.7834027 76.031302,42.0182237 L26.9263022,73.3764599 C25.200214,74.4787323 24.1555846,76.3852905 24.1555846,78.4333103 Z" id="路径-114" stroke="#979797"></path>
<path d="M739.191712,533.950451 L795.146515,500.065107 C795.618928,499.779021 796.233812,499.930069 796.519897,500.402482 C796.614503,500.558704 796.664519,500.737851 796.664519,500.920485 L796.664519,528.959735 C796.664519,529.996345 796.129366,530.959507 795.249171,531.507062 L740.719929,565.428848 C740.250979,565.720574 739.634329,565.576906 739.342603,565.107956 C739.243981,564.949422 739.191712,564.766445 739.191712,564.579738 L739.191712,533.950451 L739.191712,533.950451 Z" id="路径-116备份-7" fill="#E8E9FD"></path>
<path d="M684.155585,502.43331 L684.155585,527.369461 C684.155585,529.400874 685.183459,531.294331 686.886975,532.400981 L735.992824,564.301445 C737.944862,565.569541 740.454207,565.594149 742.430738,564.36458 L793.833823,532.387528 C795.594214,531.292417 796.664519,529.366093 796.664519,527.292873 L796.664519,502.509659 C796.664519,500.420099 795.577405,498.481035 793.794746,497.390902 L742.390812,465.956317 C740.433489,464.759373 737.964953,464.783403 736.031302,466.018224 L686.926302,497.37646 C685.200214,498.478732 684.155585,500.38529 684.155585,502.43331 Z" id="路径-114备份-7" stroke="#979797"></path>
<path d="M354.155585,38.4333103 L354.155585,63.3694607 C354.155585,65.400874 355.183459,67.2943314 356.886975,68.4009808 L405.992824,100.301445 C407.944862,101.569541 410.454207,101.594149 412.430738,100.36458 L463.833823,68.3875278 C465.594214,67.2924165 466.664519,65.3660934 466.664519,63.292873 L466.664519,38.5096591 C466.664519,36.4200985 465.577405,34.4810352 463.794746,33.3909019 L412.390812,1.95631686 C410.433489,0.759372693 407.964953,0.783402743 406.031302,2.01822373 L356.926302,33.3764599 C355.200214,34.4787323 354.155585,36.3852905 354.155585,38.4333103 Z" id="路径-114备份-2" stroke="#979797"></path>
<path d="M486.155585,123.43331 L486.155585,148.369461 C486.155585,150.400874 487.183459,152.294331 488.886975,153.400981 L537.992824,185.301445 C539.944862,186.569541 542.454207,186.594149 544.430738,185.36458 L595.833823,153.387528 C597.594214,152.292417 598.664519,150.366093 598.664519,148.292873 L598.664519,123.509659 C598.664519,121.420099 597.577405,119.481035 595.794746,118.390902 L544.390812,86.9563169 C542.433489,85.7593727 539.964953,85.7834027 538.031302,87.0182237 L488.926302,118.37646 C487.200214,119.478732 486.155585,121.38529 486.155585,123.43331 Z" id="路径-114备份-4" stroke="#979797"></path>
<line x1="111.155585" y1="122.626597" x2="170.492517" y2="161.674593" id="路径-112" stroke="#979797"></line>
<line x1="231.21192" y1="204.106856" x2="301.699029" y2="248.800597" id="路径-112备份" stroke="#979797"></line>
<line x1="364.957201" y1="288.342068" x2="430.699029" y2="329.846213" id="路径-112备份-2" stroke="#979797"></line>
<line x1="454.155585" y1="203.626597" x2="505.581156" y2="236.837719" id="路径-112备份-5" stroke="#979797"></line>
<line x1="494.409979" y1="370.791784" x2="563.699029" y2="415.088919" id="路径-112备份-3" stroke="#979797"></line>
<line x1="627.9449" y1="455.427453" x2="690.581156" y2="494.837719" id="路径-112备份-4" stroke="#979797"></line>
<line x1="243.747682" y1="167.893752" x2="378.664519" y2="82.6265967" id="路径-113" stroke="#979797"></line>
<line x1="375.747682" y1="252.893752" x2="510.664519" y2="167.626597" id="路径-113备份" stroke="#979797"></line>
<polyline id="路径-117" stroke="#979797" points="454.155585 203.626597 581.237797 285.636799 505.300971 333.794177"></polyline>
<polyline id="路径-117备份" stroke="#979797" points="488.155585 182.626597 750.973511 349.230747 638.300971 420.903431"></polyline>
<text id="请求到达-WAF" font-family="AlimamaShuHeiTi-Bold, Alimama ShuHeiTi" font-size="16" font-weight="bold" fill="#000000">
<tspan x="0.124" y="168.800597">请求到达 WAF</tspan>
</text>
<g id="W" fill-rule="nonzero">
<g id="人机验证1备份" transform="translate(-199.000000, -43.000000)">
<g id="人机验证" transform="translate(200.471370, 63.000000)">
<g id="矩形备份-2">
<use fill="black" fill-opacity="1" filter="url(#filter-2)" xlink:href="#path-1"></use>
<use fill="#428FF9" xlink:href="#path-1"></use>
<use fill="#0FC6C2" fill-rule="evenodd" xlink:href="#path-1"></use>
</g>
<g id="A" fill-rule="nonzero">
<g id="矩形备份-4">
<use fill="black" fill-opacity="1" filter="url(#filter-4)" xlink:href="#path-3"></use>
<use fill="#428FF9" xlink:href="#path-3"></use>
<use fill="#0FC6C2" fill-rule="evenodd" xlink:href="#path-3"></use>
</g>
<g id="F" fill-rule="nonzero">
<g id="矩形备份-5">
<use fill="black" fill-opacity="1" filter="url(#filter-6)" xlink:href="#path-5"></use>
<use fill="#428FF9" xlink:href="#path-5"></use>
<use fill="#FF5A5E" fill-rule="evenodd" xlink:href="#path-5"></use>
</g>
<text id="是否命中白名单" font-family="AlimamaShuHeiTi-Bold, Alimama ShuHeiTi" font-size="16" font-weight="bold" fill="#000000">
<tspan x="122.5" y="236.800597">是否命中白名单</tspan>
<text id="请求到达雷池" font-family="AlimamaShuHeiTi-Bold, Alimama ShuHeiTi" font-size="20" font-weight="bold" fill="#FFFFFF">
<tspan x="144.02863" y="39">请求到达雷池</tspan>
</text>
<text id="是否命中黑名单" font-family="AlimamaShuHeiTi-Bold, Alimama ShuHeiTi" font-size="16" font-weight="bold" fill="#000000">
<tspan x="254.5" y="320.800597">是否命中黑名单</tspan>
<text id="转发给业务服务器" font-family="AlimamaShuHeiTi-Bold, Alimama ShuHeiTi" font-size="20" font-weight="bold" fill="#FFFFFF">
<tspan x="124.02863" y="574">转发给业务服务器</tspan>
</text>
<text id="人机验证" font-family="AlimamaShuHeiTi-Bold, Alimama ShuHeiTi" font-size="16" font-weight="bold" fill="#000000">
<tspan x="407.5" y="403.800597">人机验证</tspan>
<path id="路径-104备份-2" d="M205.52863,64 L205.528,92.999 L211.52863,93 L204.52863,107 L197.52863,93 L203.528,92.999 L203.52863,64 L205.52863,64 Z" fill="url(#linearGradient-7)" fill-rule="nonzero"></path>
<path id="路径-104备份-8" d="M394.537319,239.156869 L408.52863,246.17422 L394.519962,253.156858 L394.527,247.157 L267.99876,246.999999 L268.00124,245.000001 L394.529,245.157 L394.537319,239.156869 Z" fill="url(#linearGradient-8)" fill-rule="nonzero"></path>
<path id="路径-104备份-3" d="M205.52863,171 L205.528,199.999 L211.52863,200 L204.52863,214 L197.52863,200 L203.528,199.999 L203.52863,171 L205.52863,171 Z" fill="#428FF9" fill-rule="nonzero"></path>
<path id="路径-104备份-4" d="M205.52863,278 L205.528,306.999 L211.52863,307 L204.52863,321 L197.52863,307 L203.528,306.999 L203.52863,278 L205.52863,278 Z" fill="#428FF9" fill-rule="nonzero"></path>
<path id="路径-104备份-5" d="M205.52863,385 L205.528,413.999 L211.52863,414 L204.52863,428 L197.52863,414 L203.528,413.999 L203.52863,385 L205.52863,385 Z" fill="#428FF9" fill-rule="nonzero"></path>
<path id="路径-104备份-6" d="M205.52863,490.864621 L205.528,520.999 L211.52863,521 L204.52863,535 L197.52863,521 L203.528,520.999 L203.52863,490.864621 L205.52863,490.864621 Z" fill="url(#linearGradient-9)" fill-rule="nonzero"></path>
<path id="路径-121" d="M318.798614,246.17422 L325.798614,260.17422 L319.798,260.174 L319.798614,354.17422 L267.464731,354.17422 L267.464731,352.17422 L317.798,352.174 L317.798,260.174 L311.798614,260.17422 L318.798614,246.17422 Z" fill="url(#linearGradient-10)" fill-rule="nonzero"></path>
<path id="路径-122" d="M363.227835,246.17422 L370.227835,260.17422 L364.227,260.174 L364.227835,461 L267.464731,461 L267.464731,459 L362.227,459 L362.227,260.174 L356.227835,260.17422 L363.227835,246.17422 Z" fill="url(#linearGradient-11)" fill-rule="nonzero"></path>
<text id="拒绝" font-family="AlimamaShuHeiTi-Bold, Alimama ShuHeiTi" font-size="16" font-weight="bold" fill="#FFFFFF">
<tspan x="463.02863" y="252">拒绝</tspan>
</text>
<text id="检测引擎检测" font-family="AlimamaShuHeiTi-Bold, Alimama ShuHeiTi" font-size="16" font-weight="bold" fill="#000000">
<tspan x="522.5" y="488.800597">检测引擎检测</tspan>
<rect id="矩形备份-13" fill="#FFFFFF" x="323.52863" y="236" width="34" height="20" rx="4"></rect>
<rect id="矩形备份-14" fill="#FFFFFF" x="194.52863" y="283" width="20" height="20" rx="4"></rect>
<rect id="矩形备份-15" fill="#FFFFFF" x="194.52863" y="176" width="20" height="20" rx="4"></rect>
<rect id="矩形备份-9" fill="#FFFFFF" x="163.52863" y="497" width="82" height="20" rx="4"></rect>
<rect id="矩形备份-10" fill="#FFFFFF" x="163.52863" y="390" width="82" height="20" rx="4"></rect>
<rect id="矩形备份-12" fill="#FFFFFF" x="277.52863" y="295" width="82" height="20" rx="4"></rect>
<rect id="矩形备份-11" fill="#FFFFFF" x="322.52863" y="390" width="82" height="20" rx="4"></rect>
<g id="路径-120备份">
<use fill="black" fill-opacity="1" filter="url(#filter-13)" xlink:href="#path-12"></use>
<use fill="#428FF9" fill-rule="evenodd" xlink:href="#path-12"></use>
</g>
<g id="路径-120备份-2">
<use fill="black" fill-opacity="1" filter="url(#filter-15)" xlink:href="#path-14"></use>
<use fill="#428FF9" fill-rule="evenodd" xlink:href="#path-14"></use>
</g>
<text id="命中" font-family="AlimamaShuHeiTi-Bold, Alimama ShuHeiTi" font-size="14" font-weight="bold" fill="#000000" fill-opacity="0.5">
<tspan x="326.52863" y="251">命中</tspan>
</text>
<text id="到达业务服务器" font-family="AlimamaShuHeiTi-Bold, Alimama ShuHeiTi" font-size="16" font-weight="bold" fill="#000000">
<tspan x="655.5" y="592.800597">到达业务服务器</tspan>
<g id="路径-120">
<use fill="black" fill-opacity="1" filter="url(#filter-17)" xlink:href="#path-16"></use>
<use fill="#428FF9" fill-rule="evenodd" xlink:href="#path-16"></use>
</g>
<text id="未命中" font-family="AlimamaShuHeiTi-Bold, Alimama ShuHeiTi" font-size="14" font-weight="bold" fill="#000000" fill-opacity="0.5">
<tspan x="183.52863" y="298">未命中</tspan>
</text>
<rect id="矩形" fill="#FFFFFF" x="301.5" y="114.800597" width="20" height="20" rx="4"></rect>
<rect id="矩形备份-4" fill="#FFFFFF" x="259.5" y="217.800597" width="20" height="20" rx="4"></rect>
<rect id="矩形备份-5" fill="#FFFFFF" x="388.5" y="299.800597" width="20" height="20" rx="4"></rect>
<rect id="矩形备份" fill="#FFFFFF" x="403.5" y="219.800597" width="20" height="20" rx="4"></rect>
<rect id="矩形备份-2" fill="#FFFFFF" x="475.5" y="227.800597" width="70" height="24" rx="4"></rect>
<rect id="矩形备份-6" fill="#FFFFFF" x="494.5" y="380.800597" width="70" height="24" rx="4"></rect>
<rect id="矩形备份-7" fill="#FFFFFF" x="624.5" y="461.800597" width="70" height="24" rx="4"></rect>
<rect id="矩形备份-3" fill="#FFFFFF" x="606.5" y="266.800597" width="70" height="24" rx="4"></rect>
<text id="拒绝" font-family="AlimamaShuHeiTi-Bold, Alimama ShuHeiTi" font-size="16" font-weight="bold" fill="#000000">
<tspan x="567.5" y="195.800597">拒绝</tspan>
<text id="未命中" font-family="AlimamaShuHeiTi-Bold, Alimama ShuHeiTi" font-size="14" font-weight="bold" fill="#000000" fill-opacity="0.5">
<tspan x="183.52863" y="191">未命中</tspan>
</text>
<text id="放行" font-family="AlimamaShuHeiTi-Bold, Alimama ShuHeiTi" font-size="16" font-weight="bold" fill="#000000">
<tspan x="435.5" y="110.800597">放行</tspan>
<text id="是否命中白名单" font-family="AlimamaShuHeiTi-Bold, Alimama ShuHeiTi" font-size="16" font-weight="bold" fill="#FFFFFF">
<tspan x="149.02863" y="146">是否命中白名单</tspan>
</text>
<text id="Y" font-family="AlimamaShuHeiTi-Bold, Alimama ShuHeiTi" font-size="14" font-weight="bold" fill="#000000" fill-opacity="0.5">
<tspan x="306.964" y="129.800597">Y</tspan>
<text id="是否命中黑名单" font-family="AlimamaShuHeiTi-Bold, Alimama ShuHeiTi" font-size="16" font-weight="bold" fill="#FFFFFF">
<tspan x="149.02863" y="252">是否命中黑名单</tspan>
</text>
<text id="N" font-family="AlimamaShuHeiTi-Bold, Alimama ShuHeiTi" font-size="14" font-weight="bold" fill="#000000" fill-opacity="0.5">
<tspan x="264.425" y="232.800597">N</tspan>
</text>
<text id="N备份" font-family="AlimamaShuHeiTi-Bold, Alimama ShuHeiTi" font-size="14" font-weight="bold" fill="#000000" fill-opacity="0.5">
<tspan x="393.425" y="314.800597">N</tspan>
</text>
<text id="Y备份" font-family="AlimamaShuHeiTi-Bold, Alimama ShuHeiTi" font-size="14" font-weight="bold" fill="#000000" fill-opacity="0.5">
<tspan x="408.964" y="234.800597">Y</tspan>
</text>
<text id="验证失败" font-family="AlimamaShuHeiTi-Bold, Alimama ShuHeiTi" font-size="14" font-weight="bold" fill="#000000" fill-opacity="0.5">
<tspan x="482.5" y="244.800597">验证失败</tspan>
<text id="正常请求" font-family="AlimamaShuHeiTi-Bold, Alimama ShuHeiTi" font-size="14" font-weight="bold" fill="#000000" fill-opacity="0.5">
<tspan x="176.52863" y="512">正常请求</tspan>
</text>
<text id="验证成功" font-family="AlimamaShuHeiTi-Bold, Alimama ShuHeiTi" font-size="14" font-weight="bold" fill="#000000" fill-opacity="0.5">
<tspan x="501.5" y="397.800597">验证成功</tspan>
<tspan x="176.52863" y="405">验证成功</tspan>
</text>
<text id="正常流量" font-family="AlimamaShuHeiTi-Bold, Alimama ShuHeiTi" font-size="14" font-weight="bold" fill="#000000" fill-opacity="0.5">
<tspan x="631.5" y="478.800597">正常流量</tspan>
<text font-family="AlimamaShuHeiTi-Bold, Alimama ShuHeiTi" font-size="16" font-weight="bold" fill="#FFFFFF">
<tspan x="173.02863" y="359">人机验证</tspan>
</text>
<text id="判断为攻击" font-family="AlimamaShuHeiTi-Bold, Alimama ShuHeiTi" font-size="14" font-weight="bold" fill="#000000" fill-opacity="0.5">
<tspan x="606.5" y="283.800597">判断为攻击</tspan>
<g id="路径-120备份-3">
<use fill="black" fill-opacity="1" filter="url(#filter-19)" xlink:href="#path-18"></use>
<use fill="#428FF9" fill-rule="evenodd" xlink:href="#path-18"></use>
</g>
<text id="验证失败" font-family="AlimamaShuHeiTi-Bold, Alimama ShuHeiTi" font-size="14" font-weight="bold" fill="#000000" fill-opacity="0.5">
<tspan x="290.52863" y="310">验证失败</tspan>
</text>
<text id="攻击请求" font-family="AlimamaShuHeiTi-Bold, Alimama ShuHeiTi" font-size="14" font-weight="bold" fill="#000000" fill-opacity="0.5">
<tspan x="335.52863" y="405">攻击请求</tspan>
</text>
<text id="语义分析" font-family="AlimamaShuHeiTi-Bold, Alimama ShuHeiTi" font-size="16" font-weight="bold" fill="#FFFFFF">
<tspan x="173.02863" y="467">语义分析</tspan>
</text>
<path id="路径-123" d="M136.768317,138.17422 L136.768317,140.17422 L1,140.174 L1,565.999 L100.528,565.999 L100.52863,560 L114.52863,567 L100.52863,574 L100.528,567.999 L-1,568 L-1,138.17422 L136.768317,138.17422 Z" fill="url(#linearGradient-20)" fill-rule="nonzero"></path>
<rect id="矩形备份-16" fill="#FFFFFF" x="55.5286296" y="129" width="34" height="20" rx="4"></rect>
<text id="命中备份" font-family="AlimamaShuHeiTi-Bold, Alimama ShuHeiTi" font-size="14" font-weight="bold" fill="#000000" fill-opacity="0.5">
<tspan x="58.5286296" y="144">命中</tspan>
</text>
<path d="M244.300971,210.300597 C244.300971,203.722345 244.300971,196.240144 244.300971,187.853995 C244.300971,175.274771 227.600757,165.077296 207,165.077296 C186.399243,165.077296 169.699029,175.274771 169.699029,187.853995 C169.699029,196.240144 169.699029,203.722345 169.699029,210.300597 L244.300971,210.300597 Z" id="椭圆形备份-2880" stroke="#979797" fill="url(#linearGradient-7)" transform="translate(207.000000, 187.688946) rotate(-180.000000) translate(-207.000000, -187.688946) "></path>
<path d="M376.300971,294.300597 C376.300971,287.722345 376.300971,280.240144 376.300971,271.853995 C376.300971,259.274771 359.600757,249.077296 339,249.077296 C318.399243,249.077296 301.699029,259.274771 301.699029,271.853995 C301.699029,280.240144 301.699029,287.722345 301.699029,294.300597 L376.300971,294.300597 Z" id="椭圆形备份-2881" stroke="#979797" fill="url(#linearGradient-7)" transform="translate(339.000000, 271.688946) rotate(-180.000000) translate(-339.000000, -271.688946) "></path>
<path d="M505.300971,377.300597 C505.300971,370.722345 505.300971,363.240144 505.300971,354.853995 C505.300971,342.274771 488.600757,332.077296 468,332.077296 C447.399243,332.077296 430.699029,342.274771 430.699029,354.853995 C430.699029,363.240144 430.699029,370.722345 430.699029,377.300597 L505.300971,377.300597 Z" id="椭圆形备份-2884" stroke="#979797" fill="url(#linearGradient-7)" transform="translate(468.000000, 354.688946) rotate(-180.000000) translate(-468.000000, -354.688946) "></path>
<path d="M638.300971,462.300597 C638.300971,455.722345 638.300971,448.240144 638.300971,439.853995 C638.300971,427.274771 621.600757,417.077296 601,417.077296 C580.399243,417.077296 563.699029,427.274771 563.699029,439.853995 C563.699029,448.240144 563.699029,455.722345 563.699029,462.300597 L638.300971,462.300597 Z" id="椭圆形备份-2887" stroke="#979797" fill="url(#linearGradient-7)" transform="translate(601.000000, 439.688946) rotate(-180.000000) translate(-601.000000, -439.688946) "></path>
<path d="M207.166667,186.800597 C227.064926,186.800597 243.747682,177.22756 243.747682,165.077296 C243.747682,152.927031 227.064926,142.800597 207.166667,142.800597 C187.268407,142.800597 170.088409,152.650332 170.088409,164.800597 C170.088409,176.950861 187.268407,186.800597 207.166667,186.800597 Z" id="椭圆形" fill="#FFFFFF"></path>
<path d="M339.166667,270.800597 C359.064926,270.800597 375.747682,261.22756 375.747682,249.077296 C375.747682,236.927031 359.064926,226.800597 339.166667,226.800597 C319.268407,226.800597 302.088409,236.650332 302.088409,248.800597 C302.088409,260.950861 319.268407,270.800597 339.166667,270.800597 Z" id="椭圆形备份-2882" fill="#FFFFFF"></path>
<path d="M468.166667,353.800597 C488.064926,353.800597 504.747682,344.22756 504.747682,332.077296 C504.747682,319.927031 488.064926,309.800597 468.166667,309.800597 C448.268407,309.800597 431.088409,319.650332 431.088409,331.800597 C431.088409,343.950861 448.268407,353.800597 468.166667,353.800597 Z" id="椭圆形备份-2885" fill="#FFFFFF"></path>
<path d="M601.166667,438.800597 C621.064926,438.800597 637.747682,429.22756 637.747682,417.077296 C637.747682,404.927031 621.064926,394.800597 601.166667,394.800597 C581.268407,394.800597 564.088409,404.650332 564.088409,416.800597 C564.088409,428.950861 581.268407,438.800597 601.166667,438.800597 Z" id="椭圆形备份-2888" fill="#FFFFFF"></path>
<path d="M244.300971,165.077296 C244.300971,152.498072 227.600757,142.300597 207,142.300597 C186.399243,142.300597 169.699029,152.498072 169.699029,165.077296" id="椭圆形" stroke="#979797" fill="#FFFFFF"></path>
<path d="M376.300971,249.077296 C376.300971,236.498072 359.600757,226.300597 339,226.300597 C318.399243,226.300597 301.699029,236.498072 301.699029,249.077296" id="椭圆形备份-2883" stroke="#979797" fill="#FFFFFF"></path>
<path d="M505.300971,332.077296 C505.300971,319.498072 488.600757,309.300597 468,309.300597 C447.399243,309.300597 430.699029,319.498072 430.699029,332.077296" id="椭圆形备份-2886" stroke="#979797" fill="#FFFFFF"></path>
<path d="M638.300971,417.077296 C638.300971,404.498072 621.600757,394.300597 601,394.300597 C580.399243,394.300597 563.699029,404.498072 563.699029,417.077296" id="椭圆形备份-2889" stroke="#979797" fill="#FFFFFF"></path>
<g id="白名单" transform="translate(195.500000, 152.800597)" fill-rule="nonzero">
<g id="形状结合">
<use fill="black" fill-opacity="1" filter="url(#filter-9)" xlink:href="#path-8"></use>
<use fill="#0FC6C2" xlink:href="#path-8"></use>
</g>
</g>
<g id="形状结合" fill-rule="nonzero">
<use fill="black" fill-opacity="1" filter="url(#filter-11)" xlink:href="#path-10"></use>
<use fill="#FF5A5E" xlink:href="#path-10"></use>
</g>
<g id="扫描-(5)" transform="translate(456.500000, 319.800597)">
<g id="形状" fill-rule="nonzero">
<use fill="black" fill-opacity="1" filter="url(#filter-13)" xlink:href="#path-12"></use>
<use fill="#428FF9" xlink:href="#path-12"></use>
</g>
<path d="M3.71421428,6.00000001 L3.71421428,16 C3.71421428,17.1045695 4.60964478,18 5.71421428,18 L15.9999815,18 C17.104551,18 17.9999815,17.1045695 17.9999815,16 L17.9999815,6.00000001 C17.9999815,4.89543051 17.104551,4.00000001 15.9999815,4.00000001 L5.71421428,4.00000001 C4.60964478,4.00000001 3.71421428,4.89543051 3.71421428,6.00000001 Z" id="路径-2" fill="url(#linearGradient-14)"></path>
</g>
<g id="路径" fill-rule="nonzero">
<use fill="black" fill-opacity="1" filter="url(#filter-16)" xlink:href="#path-15"></use>
<use fill="#0FC6C2" xlink:href="#path-15"></use>
</g>
<g id="路径" fill-rule="nonzero">
<use fill="black" fill-opacity="1" filter="url(#filter-18)" xlink:href="#path-17"></use>
<use fill="#FF5A5E" xlink:href="#path-17"></use>
</g>
<g id="服务器-(4)" transform="translate(728.500000, 484.800597)" fill-rule="nonzero">
<g id="形状">
<use fill="black" fill-opacity="1" filter="url(#filter-20)" xlink:href="#path-19"></use>
<use fill="#428FF9" xlink:href="#path-19"></use>
</g>
</g>
<g id="安全验证" transform="translate(589.500000, 403.800597)" fill-rule="nonzero">
<g id="形状结合">
<use fill="black" fill-opacity="1" filter="url(#filter-22)" xlink:href="#path-21"></use>
<use fill="#428FF9" xlink:href="#path-21"></use>
</g>
</g>
</g>
</g>
</g>

Before

Width:  |  Height:  |  Size: 42 KiB

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 125 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 274 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 125 KiB

View file

Before

Width:  |  Height:  |  Size: 158 KiB

After

Width:  |  Height:  |  Size: 158 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 1.3 MiB

After

Width:  |  Height:  |  Size: 1.3 MiB

View file

@ -11,7 +11,7 @@ export {
}
function getSetupCount() {
return fetch(BASE_API + "/count").then((res) => res.json());
return fetch("https://waf-ce.chaitin.cn/api/count").then((res) => res.json());
}
function getDiscussions(query: string) {

View file

@ -69,7 +69,7 @@ export default function Footer() {
{items.map((item, index) => (
<Box key={index} component="span" mr={5}>
{item.to ? (
<Link sx={{ fontSize: '16px', fontWeight: 600 }} href={item.to} rel={item.label}>
<Link sx={{ fontSize: '16px', fontWeight: 600, color: "common.white" }} href={item.to} rel={item.label}>
{item.label}
</Link>
) : (
@ -93,7 +93,7 @@ export default function Footer() {
<Grid container>
{link.items.map((item, index) => (
<Grid key={index} item xs={link.xs} md={12}>
<Link sx={{ fontSize: '14px', opacity: 0.5, fontWeight: 400, lineHeight: "38px" }} href={item.to} target="_blank" rel={item.label}>
<Link sx={{ fontSize: '14px', color: "common.white", opacity: 0.5, fontWeight: 400, lineHeight: "38px" }} href={item.to} target="_blank" rel={item.label}>
{item.label}
</Link>
</Grid>

View file

@ -59,7 +59,6 @@ export default function NavBar() {
mr: 7,
display: 'flex',
alignItems: 'center',
color: "common.black",
fontFamily: "AlimamaShuHeiTi-Bold",
}}
>

View file

@ -367,7 +367,7 @@ function componentStyleOverrides(color: Color) {
MuiLink: {
styleOverrides: {
root: {
color: color.primary.contrastText,
color: color.text.primary,
'&:hover': {
color: color.primary.main,
},

View file

@ -139,7 +139,7 @@ const Version = () => {
}}
>
<Description content={item.apply_desc} />
<Typography variant="h3" sx={{ mt: 3, mb: 1, lineHeight: "46px" }}>
<Typography variant="h3" sx={{ mt: 3, lineHeight: "46px" }}>
{item.fee}
{item.fee_desc && (
<Typography component="span" variant="subtitle2" sx={{ color: alpha("#000", 0.5), height: "20px" }}>
@ -147,7 +147,7 @@ const Version = () => {
</Typography>
)}
</Typography>
<Description content={item.desc} />
{/* <Description content={item.desc} /> */}
<Box>{item.operation}</Box>
<FunctionItems items={item.functions} />
</Box>

View file

@ -17,6 +17,7 @@ import {
IconButton,
InputBase,
SxProps,
Link,
} from "@mui/material";
import SearchIcon from '@mui/icons-material/Search';
import TableCell from "@mui/material/TableCell";
@ -158,7 +159,9 @@ export default function DiscussionList({ value }: DiscussionListProps) {
<Box dangerouslySetInnerHTML={{ __html: discussion.category?.emoji_html }}></Box>
</Box>
<Box>
<Link href={discussion.url} target="_blank">
<Typography variant="h6">{discussion.title}</Typography>
</Link>
<Labels value={discussion.labels} />
<Box>
<Typography component="span" variant="subtitle2" sx={{ color: alpha('#000', 0.5) }}>

View file

@ -1,6 +1,7 @@
import React, { useState } from "react";
import {
Box,
Link,
List,
ListItem,
Button,
@ -199,7 +200,9 @@ export const IssueItem: React.FC<IssueItemProps> = ({ issue }) => {
flex: 1,
}}
>
<Link href={issue.url} target="_blank">
<Typography variant="h6">{issue.title}</Typography>
</Link>
<Labels value={issue.labels} />
<Box mt={1}>
<Typography component="span" variant="subtitle2" sx={{ color: alpha('#000', 0.5) }}>

View file

@ -6,22 +6,22 @@ import Icon from "@/components/Icon";
const ABILITY_LIST = [
{
title: "人机验证",
href: "https://waf-ce.chaitin.cn/",
href: "https://waf-ce.chaitin.cn/docs/about/challenge",
img: "/images/ability/ability_verification.svg",
},
{
title: "百川网站监控联动",
href: "https://waf-ce.chaitin.cn/",
href: "https://waf-ce.chaitin.cn/docs/practice/monitor",
img: "/images/ability/ability_rivers.svg",
},
{
title: "APISIX 插件集成",
href: "https://waf-ce.chaitin.cn/",
href: "https://waf-ce.chaitin.cn/docs/about/apisix",
img: "/images/ability/ability_apisix.svg",
},
{
title: "长亭社区恶意 IP 情报",
href: "https://waf-ce.chaitin.cn/",
href: "https://waf-ce.chaitin.cn/docs/about/IpIntelligence",
img: "/images/ability/ability_maliciousip.svg",
},
{
@ -131,6 +131,7 @@ const AbilityItem: React.FC<ItemProps> = ({ title, href, img, handleIconHover })
display: "flex",
justifyContent: "space-between",
alignItems: "center",
color: "common.white",
"&:hover": {
backgroundColor: "primary.main",
boxShadow: "0px 4px 10px 0px rgba(3,13,23,0.6)",
@ -140,7 +141,7 @@ const AbilityItem: React.FC<ItemProps> = ({ title, href, img, handleIconHover })
}}
>
{title}
<Icon type="icon-youjiantouxian" color="common.white" />
<Icon type="icon-youjiantouxian" />
</Typography>
</Link>
) : (

View file

@ -28,8 +28,24 @@ const totalSx = {
const textAligns = ['left', 'center', 'right'];
export default function Home() {
export async function getServerSideProps() {
let total = 45881
try {
const result = await getSetupCount();
total = result.total;
} finally {
return {
props: {
total,
},
}
}
}
export default function Home({ total } : { total: number }) {
const totalRef = useRef(null);
const startRef = useRef(null);
const initTotal = async (n: number) => {
const countUpModule = await import("countup.js");
@ -37,13 +53,19 @@ export default function Home() {
duration: 2,
});
anim.start();
const startAnim = new countUpModule.CountUp(startRef.current!, Math.max(0, 6.1), {
duration: 2,
decimalPlaces: 1,
});
startAnim.start();
};
useEffect(() => {
getSetupCount().then((d) => {
initTotal(d.total);
});
});
// getSetupCount().then((d) => {
// initTotal(d.total);
// });
initTotal(total);
}, [total]);
return (
<main className="flex flex-col justify-between" title="长亭雷池 WAF 社区版">
@ -123,15 +145,16 @@ export default function Home() {
<Link href="https://github.com/chaitin/SafeLine" target="_blank">
<Stack direction="row" justifyContent="center">
<Stack spacing={2} alignItems="center">
<Stack direction="row" sx={{ ...totalSx }}>
<Typography
variant="h1"
sx={{
...totalSx,
}}
ref={startRef}
>
5.9k
-
</Typography>
<Typography variant="h5" color="common.black">
<Typography variant="h1">k</Typography>
</Stack>
<Typography variant="h5">
GitHub Star
</Typography>
</Stack>