Ark管理器使用指南

此管理器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"
}