接入 NetGuard SDK
NetGuard SDK 支持常见客户端操作系统,当前页面提供了全部的接入方法
- 如果你想节省成本,或不想了解太多技术细节,可以加入共同防御计划
- 如果你想保护隐私,或想为其他用户提供 DDoS 防御,可选择私有化部署
- 如果你想自建 NetGuard 服务器,强烈建议你先了解它的工作原理
下载 NetGuard SDK
- 开发者需要先点这里,下载 NetGuard 的 SDK
- 在开始接入前,开发者需要在管理后台,获取专属的 AppID 和 AppKey
- 根据自身需要,为不同平台的客户端 App接入 NetGuard 的 SDK
不同系统的接入方法
Microsoft Windows
NetGuard SDK 的 Windows 版包含 Shield.exe 和 libshield.dll 两个文件。其中 libshield.dll 导出了一个名为_Init 的函数,此函数遵守 C 调用约定(__cdecl)。开发者可以用如下两种不同的办法接入:
零代码接入
这种方式适合没有太多编程基础的开发者。只需要编写配置文件,并把配置文件和 Shield.exe 及 libshield.dll 放到一起,然后运行 Shield.exe 就可以了。配置文件的名称必须是 Shield.ini,它的内容如下:
ini
[Shield]
AppID = DEVELOPEMENT_APP_ID
; DEVELOPEMENT_APP_ID需要替换为开发者自己的AppID
动态库接入
这种方式适合有 Windows 编程基础的开发者。如果你想确保在 NetGuard 初始化成功后再运行别的业务逻辑,推荐使用此方式。下面的代码演示了如何在 C/C++代码中进行接入:
c
/* 建议在单独的进程中加载这个动态链接库
* 如果直接加载到App进程内,可能导致App
* 崩溃或无法连接到服务器
*/
// 1. 声明SDK里面的函数
extern "C" {
typedef int (*InitFunc)(char *, char *);
}
// 2. 恰当的时机加载动态链接库,并进行初始化
HMODULE hMod = LoadLibrary("libshield.dll");
if (!hMod)
return; // 没有找到libshield.dll
InitFunc init = (InitFunc)GetProcAddress(hMod, "Init");
if (!init)
return; // 没有找到_Init函数
if (!init(NULL, "DEVELOPEMENT_APP_ID")) //这里需要替换为开发者自己的AppID
return; // 初始化失败
// 代码执行到这里代表初始化成功
Google Android
NetGuard SDK 的 Android 版本只有一个 AAR 文件,请将其放到 App 主工程的 libs 目录下(一般是 app/libs)
- App 级别的 build.gradle 增加如下项目,注意不要重复添加
groovy
android {
sourceSets.main {
jniLibs.srcDirs = ['libs']
}
}
dependencies {
implementation files('libs/libshield.aar')
}
- 在首个 Activity 或 Application 类里进行初始化
java
// 返回值为true代表初始化成功
bool bInit = Shield.Init(null, "DEVELOPEMENT_APP_ID"); //这里需要替换为开发者自己的AppID
Apple iOS/iPadOS
NetGuard SDK 的 iOS 版同时支持 iPadOS,它包含有如下两个文件:
- 头文件:Shield.h
- 静态链接库:libshield.a
下面的代码演示了如何在 Objective-C 代码中加载并初始化 NetGuard 的步骤:
objective-c
// 1. 先在iOS的项目中添加libshield.a,否则编译将会失败
// 2. 包含头文件
#import "Shield.h"
// 3. 在恰当的时机进行初始化,返回值为true代表成功
Shield *s = [Shield getInstance];
BOOL bInit = [s Init:nil key:@"DEVELOPEMENT_APP_ID"]; //这里需要替换为开发者自己的AppID
获取客户端真实 IP
在正常情况下,回源服务器不能获取客户端的真实 IP 地址,而只是虚拟的 IP 地址。
请点这里下载对应的插件,并安装到回源服务器,即可获取客户端的真实 IP 地址。
注意
- 如果回源服务器是 Windows 系统,安装插件后需要重启 App 服务端
- 如果回源服务器是 Linux 系统,编译并安装插件后会立刻生效
- 只有加入共同防御计划的开发者才能获取客户端真实 IP