SDK接入流程(原生库接入)
集成前准备
开始集成前建议先对自身业务做下梳理,确认下哪些业务需要接入 SDK,明确对应的 业务端口、域名以及业务服务器 IP(注意:业务服务器 IP 必须未在公网上解析暴露过,无法通过解析获取,最好是能跟其 他的业务隔离开)。
创建SDK接入实例,创建成功会得到AppID 跟 AppKey
转发规则配置
- 每条转发规则需要确认转发key(唯一表示一个转发规则),源服务器的IP/域名,端口,通信协议(tcp/udp)
点击下载sdk:https://www.ddnn.com/assets/downloads/xshield.tar.gz
集成接入集成接入流程
调用以下几个必须的接口即可。
- 调用 Init 接口初始化,传入参数 AppID、AppKey(两个参数必填,必须调用)。 客户端启动后尽快初始化,且初始化一次就好(app 切后台再切回需重新调用)。
- 调用 GetTCPServerAddr 接口获取本地 TCP 代理 IP 以及端口(TCP 转发必须调用)。
- 调用接口 GetClientIP 获取客户端真实 IP(根据业务选择是否调用,非必须)。
- 通过 HTTP 协议中请求头 X-Forward-For 或者 TCP 中封装到业务数据回源。
- 和本地代理建立链接,发送请求。
集成注意事项
- 安卓、IOS、PC 端,不论 http、tcp、websocket 每次发起请求、断线重连以及 ios 在锁屏恢恢复程序 都要重新调用 GetTCPServerAddr,不可以缓存之前的返回结果。因为系统可能会关闭本地代理端口,没有重新调用接口直接建联将 建联失败,导致业务异常。
- Android 提供armeabi-v7a,x86, x86_64,arm64-v8版的动态库,可以兼容所有安卓设备,有其 他第三方 SDK需要保持库文件一致,否则可能会导致程序崩溃。
- 若需要封禁模拟器,请联系技术。
- ios 我们提供了.a 文件,集成即可(iphone5之前的设备不再支持)。
- 客户端的网络处理需更健壮,比如超时处理,断线重连。
- SDK节点较多且会不定期变动,建议关闭源安全策略。
各平台接入示例
以下示例介绍接入SDK必须的接口,完整调用可以看完整代码示例
Android
- 运行环境:Android 4.1 及以上系统版本 将 Android SDK引入到工程中
Android 接入流程接口示例
import com.xshield.jni.ShieldService;boolean succeed = ShieldService.Init("$AppID", " $AppKey "); // 若初始化成功则返回 true
String addr = ShieldService.GetTcpProxyAddr(“test.com”);
connect(addr);
- 通过上一步中的 IP 和端口建立连接,发送接收业务数据(建议放在初始化完成后执行,以免 卡住UI线程)
- 获取安全代理的IP和端口以免卡住UI线程
- 初始化 SDK(将获取到的 AppID 跟 AppKey 传入接口):
IOS
- 运行环境:iOS 8.0 及以上系统版本。
- 将 IOS SDK加到应用工程。
- 使用 XCode 打开应用工程,将 libxshield.a 添加到工程中。
IOS SDK接入流程接口示例
XShieldIOS *sdk = [[XShieldIOS alloc] init]; [sdk init: @"$AppID " appKey: @" $AppKey "]; // 初始化成功返回 true
#include "xshield-ios.h" NSString* addr = [sdk getTCPAddr:@”test.com”];
connect(addr);
- 通过上一步中的 IP 和端口建立连接,发送接收业务数据
- 获取安全代理的 IP 和端口(这里以对接配置为 TCP 转发为例)
- 初始化 SDK (将获取到的AppID跟AppKey传入接口)
集成验收
- 客户端抓包分析,源 IP 是否暴露。(需要一个可共享热点网络的电脑,安装抓包软件, 如 wireshark)。将 PC 的热点共享出来(wifi热点软件或者系统自带热点功能),手机连 热点网络,打开抓包软件,再开启软件,将所有业务测试几遍,看是否能过抓到业务源 IP。 复核有无其他域名解析到源 IP 的情况,如有建议业务隔离。
- 获取真实 IP,业务上确认下是否正常获取到用户真实 IP,获取失败可能得到的是高防节 点 IP,可提供 IP 同技术确认。
- 业务上线前测试,建议上线前多做测试,可灰度测试 2~3 天,再进行全局更新。