ShieldGuard
APP的DDoS防护方案
轻松保护您的App服务器,为您的业务保驾护航
全程加密
全程加密通信托管你的流量
无视攻击
无限防御,零误封,不论多大攻击,不管多少肉鸡
接入简单
支持Windows/Android/iOS,仅需几行代码即可轻松接入
永不掉线
节点之间数据实时同步,切换无感知,确保零掉线
前置准备
在开始接入前:请先登录管理后台,创建应用并获取专属
AppID 和 AppKey 加入共同防御计划。
集成方式
- 提供零代码、原生代码两种集成方式,同时支持 iOS、Android 双端原生
- 并提供 Unity / Cocos / Flutter / React Native 等主流跨平台框架封装包
多平台客户端接入指南
Windows SDK 文件说明
Windows SDK 包含 Shield.exe + Shield.dll,DLL 导出 Init 函数,遵循 C __cdecl 调用约定,提供两种接入方式。
方式 1:零代码接入(新手推荐)
新建配置文件 Shield.ini,与 exe、dll 同目录,填写以下配置:
[Shield]
AppID = DEVELOPEMENT_APP_ID
; 替换为后台获取的 AppID
AppExe = APP_EXE_PATH
; 填写业务程序绝对 / 相对路径
直接运行 Shield.exe 即可完成防护代理启动。
注意:零代码模式仅适合简单桌面程序;如需控制初始化时机、捕获初始化结果,建议使用动态库编码接入。
方式 2:C/C++ 动态库接入
建议独立进程加载 DLL,直接注入业务进程可能引发崩溃、网络连接异常。
/* 声明 SDK 初始化函数 */
extern "C" {
typedef int (*InitFunc)(char *, char *);
}
// 加载动态库
HMODULE hMod = LoadLibrary("Shield.dll");
if (!hMod) return; // 未找到 DLL 文件
InitFunc init = (InitFunc)GetProcAddress(hMod, "Init");
if (!init) return; // 未导出 Init 函数
// 传入 AppID 完成初始化
int ret = init(NULL, "DEVELOPEMENT_APP_ID");
if (ret != 0) {
// 初始化失败,参考错误码表排查
return;
}
// ret = 0 初始化成功
Android AAR 集成步骤
- 将
libshield.aar放入项目app/libs目录 - 修改 App 级 build.gradle
android {
sourceSets.main {
jniLibs.srcDirs = ['libs']
}
}
dependencies {
implementation files('libs/libshield.aar')
}
在 Application 或首个 Activity 初始化 SDK:
// 替换为你的 AppID
int iRet = Shield.Init(null, "DEVELOPEMENT_APP_ID");
// iRet == 0 代表初始化成功
iOS / iPadOS 静态库接入
SDK 包含:头文件 Shield.h、静态库 libshield.a
#import "Shield.h"
// 获取单例并初始化
Shield *s = [Shield getInstance];
NSInteger iRet = [s Init:nil key:@"DEVELOPEMENT_APP_ID"];
// iRet == 0 初始化成功
初始化返回错误码对照表
| 返回值 | 异常说明 |
|---|---|
| 0 | 初始化成功 |
| 1 | AppID 为空,请检查传入参数 |
| 3 | 无法拉取云端配置 / 未配置转发规则 |
| 4 | 本地端口监听失败,端口冲突占用 |
| 9 | 第一个参数不为空指针,参数格式错误 |
获取客户端真实 IP
接入 SDK 后,服务端回源默认仅获取代理虚拟 IP。如需真实客户端 IP,需安装配套服务端插件:
- Windows 服务端:安装插件后重启业务服务生效
- Linux 服务端:编译安装插件,即时生效无需重启
SDK 接入后业务改造要点
- 登录管理后台,按业务需求配置流量转发规则
- 修改客户端网络逻辑,断开原有直连 TCP 服务器逻辑
- 客户端统一连接本地回环代理地址:
- Android / iOS:固定
127.0.0.1 - Windows PC:回环 IP 以管理后台配置为准
- Android / iOS:固定
接入异常排查:
请把 SDK 的 SDK 接入到客户端 App,而不是服务端 App
因部分操作系统的限制,SDK不支持转发到 1024(即 0-1023)以下的端口
因部分操作系统的限制,移动端的本地回环地址只能是 127.0.0.1
当多个不同PC 端 App都在使用 SDK 时,不同的本地回环地址可以避免冲突
如果 PC 端 需要运行同一个 App的多个进程,请用单独的进程初始化 SDK
如果 PC 端 App 初始化 SDK SDK 后出现崩溃,请用单独的进程初始化 SDK
请把 SDK 的 SDK 接入到客户端 App,而不是服务端 App
因部分操作系统的限制,SDK不支持转发到 1024(即 0-1023)以下的端口
因部分操作系统的限制,移动端的本地回环地址只能是 127.0.0.1
当多个不同PC 端 App都在使用 SDK 时,不同的本地回环地址可以避免冲突
如果 PC 端 需要运行同一个 App的多个进程,请用单独的进程初始化 SDK
如果 PC 端 App 初始化 SDK SDK 后出现崩溃,请用单独的进程初始化 SDK