调用arukas接口实时获取ss配置信息

之前在arukas.io免费docker搭建ss服务以及免费日本樱花搭建谷歌镜像两文中对arukas折腾过一番,我们可以利用其免费搭建ss以及谷歌镜像,但是有个不足的是arukasapp ip和端口号经常在变,使我们在使用的过程中非常不便,每次都要登录到官网去获取实时的ip和端口。本文继续对arukas继续折腾,研究它的api文档,从而实现实时获取ssapp ip以及端口,跳过登录环节

效果图



我在arukas官网配置了10台ss,获取详细配置请点击:https://ss.luckyw.cn

原理分析


如果我们需要实时获取app ip和端口,那么我们就需要模拟登录arukas,从官方文档我们可以发现有两种实现方式,一种是通过arukas账号密码模拟登录,然后使用Cookie访问接口Api,另一种方式是通过API Keys,我们通过创建API Keys,生成TokenSecret,这样可以直接请求接口Api(推荐使用)

创建项目


采用NodeJs流行框架express及其它的模板引擎pug(原jade),项目直接使用express命令行工具创建项目,构建基本的框架代码
注:想了解Pug(原Jade)语法可参考Express之Jade模板引擎

1
2
3
express --pug get-arukas-ss
cd get-arukas-ss
npm install

源码分析


代码很简单,我就直接贴代码了。使用superagentapi发起请求,想了解如何使用superagent请求页面的请参考官方文档使用 superagent 与 cheerio 完成简单爬虫,获取对应数据然后渲染到页面中去,使用了jquery.qrcode这个库把ss配置信息生成图片,方便ss客户端直接获取图片信息完成自动配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
var express = require('express');
var superagent = require("superagent");
var path = require('path');
var favicon = require('serve-favicon');
var logger = require('morgan');
var cookieParser = require('cookie-parser');
var bodyParser = require('body-parser');
var app = express();
app.locals.pretty = true; //页面源代码格式化
var token = "0f00097f-9abd-4867-824a-f74add527c0c";
var secret = "KSMERvMN9nam8sJEA9Ee7OkvbktJWx54uYBXLATs3OtaKrRWR6FoXskCrPKWLiuo";
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'pug');
app.use(logger('dev'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));
app.get("/",function(req,res){
superagent.get("https://app.arukas.io/api/containers").auth(token,secret,{type:"auto"})
.end(function(err,res2){
var data = res2.body.data;
var app_list = [];
for(var i=0;i<data.length;i++){
var port = data[i].attributes.port_mappings[0][0].service_port;
var host = data[i].attributes.port_mappings[0][0].host;
var ip = host.substring(6,host.indexOf(".")).replace(/-/g,".");
app_list.push({
"ip":ip,
"port":port,
"method":"aes-256-cfb",
"password":"luckywcn"
})
}
res.render("index",{
"data":app_list
});
});
})
app.listen("3000",function(){
console.log("server start……")
});

源码请参考: https://github.com/leoyaojy/get-arukas-ss

如果您觉得我的文章对您有用,请随意打赏。

您的支持将鼓励我继续创作!

¥ 打赏支持

文章导航

目录

×
  1. 1. 效果图
  2. 2. 原理分析
  3. 3. 创建项目
  4. 4. 源码分析