此管理器app使用 Flutter 进行开发,使用了Gemini3、ChatGPT5.3、GLM4.7辅助开发,软件不会放出任何源代码,如发现倒卖等盈利行为且造成一定影响,将会停止面向大众范围的更新
禁止任何倒卖行为,禁止任何直接或间接的盈利性使用和分发,禁止任何设立门槛的使用或分发行为,抓到就挂耻辱榜,永不除名
禁止任何倒卖行为,禁止任何直接或间接的盈利性使用和分发,禁止任何设立门槛的使用或分发行为,抓到就挂耻辱榜,永不除名
禁止任何倒卖行为,禁止任何直接或间接的盈利性使用和分发,禁止任何设立门槛的使用或分发行为,抓到就挂耻辱榜,永不除名
使用教程
从网盘处下载apk或exe并打开,输入账号密码或导入 user.json 、 syncData.json 之类的数据
服务端接入指南
flask 编写的服务端使用下面这段代码,并创建一个名为 admin.py 的文件,为config.json添加一些内容
远程模式获取数据使用 /account/syncData 接口进行获取,如果需要进行风控管理,请自行解决,header 已提供风控所需信息
flask接入代码示例 (点击展开)
app.py 代码
app.add_url_rule("/admin/verify", methods=["GET","POST"], view_func=admin.adminVerify)
app.add_url_rule("/admin/saveUserData", methods=["POST"], view_func=admin.adminSaveUserData)
app.add_url_rule("/admin/login/by_phone_password", methods=["POST"], view_func=admin.by_phone_password)
admin.py 代码
from flask import request
from utils import write_json, writeLog, get_memory, run_after_response
from constants import SYNC_DATA_TEMPLATE_PATH
def adminVerify():
_debug = True
config = get_memory("config")
admin_key = config["server"]["adminKey"]
auth_header = request.headers.get("Authorization")
if _debug:
return "", 200
parts = auth_header.split()
if len(parts) != 2 or parts[0].lower() != "bearer":
writeLog("[WARING]管理器验证请求,未持有密钥")
return "", 401
api_key = parts[1]
writeLog(f"[SERVER] 管理器验证请求,密钥:{api_key}")
if not auth_header:
return "", 401
if len(parts) != 2 or parts[0].lower() != "bearer":
return "", 401
api_key = parts[1]
if str(api_key) == str(admin_key):
return "", 200
return "", 403
def adminSaveUserData():
json_body = request.get_json()
config = get_memory("config")
admin_key = config["server"]["adminKey"]
auth_header = request.headers.get("Authorization")
parts = auth_header.split()
if len(parts) != 2 or parts[0].lower() != "bearer":
writeLog("[WARING] 管理器写入请求,未持有密钥")
return "", 401
api_key = parts[1]
writeLog(f"[SERVER] 管理器写入请求,密钥:{api_key}")
if not auth_header:
return "", 401
if len(parts) != 2 or parts[0].lower() != "bearer":
return "", 401
if str(api_key) == str(admin_key):
try:
write_json(json_body, SYNC_DATA_TEMPLATE_PATH)
return {"status": "success"}, 200
except:
return {"status": "error"}, 500
else:
return "", 403
def by_phone_password():
result = {
"uid": "",
"secret": ""
}
return result
def by_phone_password():
result = {
"uid": "",
"secret": ""
}
return result
config.json 新增内容,默认为动态密钥模式,不推荐在http模式的公网服务器使用静态密钥,这可能会泄露你的管理密钥并造成玩家数据出错
{
"server": {
"dynamicKey": true,
"adminKey": null,
}
}
每一个网络请求都会有如下header,可用作安全审查和日志记录,如果是验证和保存数据的请求,还会有 “Authorization”: “bearer 123456” 这样的 header 携带密钥以方便验权(RFC 6750标准)
{
"User-Agent": "ArkManager",
"Accept-Encoding": "gzip",
"Content-Length": "123",
"X-Osver": "Build 123",
"Host": "127.0.0.1:8443",
"Content-Type": "application/json",
"X-Device-Type": "123",
"X-Deviceid": "{123-123-123-123-123456}",
"X-Devicemodel": "DESKTOP-123456"
}