如何在公网环境部署Sekiro

728 阅读2分钟

前言

前期我是使用 NanoHTTPD 来搭建 Android 端的 Http 服务,但其实这个在实际使用过程中是并不高效的,期间还是有很多问题,包括稳定性、并发等问题。

不过最近逛 github 的过程,我发现一个新的框架—— Sekiro。Sekiro 是一个android下的API服务暴露框架,可以用在app逆向、app数据抓取、android群控等场景。同时Sekiro也是目前公开方案唯一稳定的JSRPC框架。

关于 NanoHTTPD 与 Sekiro 的区别,可以阅读 Sekiro 作者,对此问题的解释。传送门:sekiro.virjar.com/sekiro-doc/…

Sekiro 介绍

详细的介绍,直接跳到官网阅读(sekiro.virjar.com/sekiro-doc/… 对于我这边,我主要看中的是他这几点:1、打破内网限制,通过长链接维护和管理每个客户端;2、可以实时获取客户端的状态、转发;3、可以提供群控能力;4、可以搭配 xposed 使用。

image-20220207225126917

Sekiro 原理

Sekiro 是一个长连接方案的调用转发框架,依靠长连接和任意位置的网络设备保持实时通信,他可以实现把任意网络拓扑位置上的设备变成一个服务器。

长连接技术广泛出现在,即时通讯、通用户跨平台数据共享(如微信扫码登录、前端页面开发调试)、直播、手机推送(极光推送、小米推送等)

以上是作者解释,按我的理解是,在每个客户端也就是 client(下同),每个 client 通过长链接(Socket 或 Websocket)与服务器建立连接,服务端维护一份客户端注册列表,然后针对来自 Http 请求进行分发自每个client 身上,每个client处理之后响应。

Sekiro 架构图

Sekiro 部署

本文以 CentOS 7.6 64位操作系统的轻量应用服务器为例,免费版没有后台界面。

1.下载代码

github.com/virjar/seki… 下载 serkiro-service-demo 目录的代码

image-20220207225508218

2.修改端口

conf/config.properties 配置定制参数,目前只支持配置服务端口 sekiro.port=5620, 注意如果需要修改端口,记得修改之后,再构建!

conf/logback.xml可以用来配置日志输出规则

3.构建

在 Linux 或者 mac 上,执行脚本 build_demo_server.sh,之后得到产出发布压缩包:sekiro-service-demo/target/sekiro-release-demo.zip(构建过程,可能需要安装 maven,zip 需要解压,然后再进入 bin 目录执行运行步骤 )

如果是 windows,或者不想自己构建,可以在这里直接下载 oss.virjar.com/sekiro/seki…

4.运行

  1. 安装 java( CentOS 安装 jdk 参考我前面文章)
  2. 运行启动脚本:
  • bin/sekiro.sh : mac or linux
  • bin/sekiro.bat : windows

5.验证

127.0.0.1 记得改为公网 ip

  1. 查看分组列表

http://127.0.0.1:5620/business-demo/groupList

{"data":["test"],"ok":true,"status":0}
  1. 查看队列状态

http://127.0.0.1:5620/business-demo/clientQueue?group=test

{"data":[],"ok":true,"status":0}
  1. 调用转发

http://127.0.0.1:5620/business-demo/invoke?group=test&action=test&param=testparm

{"message":"no device online","ok":false,"status":-1}