Account Site
0
可用
0
已使用
0
总计
导入账号 支持 CSV 上传或文本粘贴
格式:email,password,备注(每行一个,也可用 ----、Tab 或 | 分隔)
— 或者 —
账号列表
客户端作废记录 客户端上报删除的账号(审计,保留最近 50 条)
客户端上报流水 账号登录态 + IP 实时状态(客户端每次打开软件时同步)
客户端总览 各客户端最新一次上报的本地真实状态(占用数为本地值,服务器占用为云端实时会话数)
API Key 管理 为每个使用方生成独立 Key,可改名、启停、查看统计
站点设置
账号获取请求地址
加载中...
修改管理员密码 默认密码 admin123 任何人都能登录,请尽快修改
API 接口文档
🔐 认证方式:请求头 X-API-Key: {key} 或 URL 参数 ?key=。账号与 IP 池接口共用同一密钥。POST 接口均传 JSON Body。
📌 IP 池:GET /api/ip/pool 一次调用即可获取最新全量 IP 池(每个 IP 的凭据 + 检测状态),客户端拿到后自行分配使用,无需绑定/占用/心跳等额外操作。IP 均为 SOCKS5 代理,返回含 protocol="socks5" 字段。
🔄 标准调用流程(客户端)
1. 拉取全量 IP 池:
2. 获取账号:
3. 使用:客户端自行将账号与 IP 配对,用
4. 作废上报(账号被封/失效时):调
5. 启动同步:每次打开软件调
GET /api/ip/pool?key= → 一次拿到最新全部 IP(凭据 + 检测状态),客户端自行挑选使用2. 获取账号:
GET /api/accounts?key=&count=N → 得到 email+password(随机选取可用账号,取走即标记已用、不可退回,请按需取用)3. 使用:客户端自行将账号与 IP 配对,用
socks5h://username:password@host:port 连接(协议见返回的 protocol 字段)4. 作废上报(账号被封/失效时):调
POST /api/accounts/remove {email, reason} 删除该账号(仅限本 Key 获取过的),后台留审计记录,额度不回补5. 启动同步:每次打开软件调
POST /api/accounts/sync 上报本地账号/IP 状态
⚠️ 错误码表
401(HTTP) | API Key 无效 / 缺失 / 已禁用 | 检查 Key 是否正确,或联系管理员 |
quota_exceeded | 该 Key 账号获取额度已用完(默认每 Key 100 个) | 调 GET /api/quota 查看剩余额度,联系管理员调整额度,或使用其他 Key |
forbidden | remove 上报的账号非本 Key 获取 | 检查 email 是否属于当前 Key |
rate_limited | 请求过于频繁(429) | 降低请求频率后重试 |
📌 客户端必备要点:① 账号被 count=N 取走即标记已用,不可退回;② IP 池通过 GET /api/ip/pool 一次拉取全量,客户端自行分配账号与 IP 的配对,服务器不再管理绑定/占用;③ 所有 IP 均为 SOCKS5,用返回的 protocol 字段连接;④ 若某 IP 检测状态为「不可达」(dola_status=unreachable),客户端应跳过该 IP 不使用。
| 端点 | 说明 |
|---|---|
GET /api/accounts?key=&count=10 | 随机获取 N 个未使用账号(每次随机挑选可用账号,获取即标记已使用,count 1-100)。额度限制:每个 Key 累计最多获取 quota 个(默认 100,管理员可增),请求超出剩余额度时只发放剩余部分,响应含 quota:{limit,used,remaining};额度用尽返回 code="quota_exceeded"、msg「账号额度已用完」。已获取(used)为历史累计消耗,获取即入账、只增不减,账号之后被删除不影响已获取数量。返回格式为「邮箱+密码」,无 cookie:{"accounts":[{"email","password"}],"total","available"} |
GET /api/stats?key= | 账号统计(total/available/used) |
GET /api/quota?key= | 查询当前 Key 的账号获取额度:返回 {"success":true,"quota":{"limit":100,"used":N,"remaining":M}};used 为历史累计已获取数(只增不减,账号删除不影响),客户端可随时调用查看还剩多少额度 |
POST /api/accounts/remove | 客户端作废上报(删除账号):Body {"email":"xxx@gmail.com","reason":"作废原因(可选)"}。仅允许删除「本 Key 获取过」的账号(used_by 校验,防跨 Key 删号);删除前写入后台审计日志;联动解除该账号的 IP 绑定与占用;额度不回补(已获取仍计入历史累计)。幂等:账号已不存在返回 removed:false 不报错。返回 {"success":true,"removed":true} 或 code="forbidden"(非本 Key 账号) |
POST /api/accounts/sync | 客户端状态同步(每次打开软件时调用):Body {"client_id":"机器A","version":"1.2.3","stats":{"account_count","ip_bind_count","ip_held_count","ip_ok_count","ip_dead_count"},"accounts":[{"email","status","message?","ip?"}],"ips":[{"ip","status","message?"}]}。账号 status:ok / login_failed / banned / expired / error;IP status:ok / connect_failed / auth_failed / timeout / proxy_dead。stats 为客户端本地真实汇总计数(账号数/绑定数/占用数/可用失效数),后台"客户端总览"展示并与云端会话数对比;账号上报→账号列表"客户端状态"列实时更新 + 流水审计;IP 上报→写入流水(不自动改 dola 检测结果,防单点误判)。返回 {"success":true,"synced_accounts":N,"synced_ips":M} |
GET /api/ip/pool?key= | 一次调用获取全量 IP 池:返回 summary(total/active/ok/unreachable 四个汇总计数)+ ips 数组;每个 IP 含 ip_id/host/port/username/password/protocol/dola_status/status。客户端据此一次性获知全部 IP 的凭据与检测状态(dola_status:ok 可用 / unreachable 不可达 / untested 未检测 / blocked 受限) |
GET /api/accounts 真实返回(邮箱+密码):
{
"accounts": [
{"email": "xxx@xxx.com", "password": "xxx"}
],
"total": 50,
"available": 50
}
GET /api/ip/pool 真实返回:
{
"success": true,
"summary": {"total": 141, "active": 52, "ok": 62, "unreachable": 79},
"ips": [
{"ip_id": 1, "host": "1.2.3.4", "port": 8022, "username": "user",
"password": "pass", "protocol": "socks5", "dola_status": "ok", "status": "active"},
{"ip_id": 2, "host": "5.6.7.8", "port": 8022, "username": "user2",
"password": "pass2", "protocol": "socks5", "dola_status": "unreachable", "status": "active"}
]
}
系统信息
数据库:/Users/wml/account-site/accounts.db
管理账号:admin / admin123(可通过 ACCOUNT_ADMIN_USER / ACCOUNT_ADMIN_PASS 环境变量修改)
危险操作
删除数据库中全部账号记录(含可用和已使用),此操作不可恢复。
0
IP 总数
0
可用