# farm-code-apadqq **Repository Path**: zxm870973/farm-code-apadqq ## Basic Information - **Project Name**: farm-code-apadqq - **Description**: 使用安卓平板协议获取某农场code - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 2 - **Created**: 2026-08-05 - **Last Updated**: 2026-08-05 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # QQ Code 关系系统 QQ Code 关系系统是一个用于管理 QQ 账号登录状态和自动上传验证码的后端系统。 ## 功能特性 - **用户管理**:支持通过外部 API 批量添加/更新 QQ 用户信息 - **自动上传**:支持定时自动从 QQ 框架获取验证码并上传到指定平台 - **账号绑定**:用户可绑定外部平台账号,实现一键登录 - **双端入口**:前台用户端 + 后台管理端 - **日志记录**:完整的操作日志和错误日志记录 ## 技术栈 - **后端**:Node.js + Express - **数据库**:LowDB(JSON 文件存储) - **认证**:JWT + bcryptjs - **前端**:原生 HTML/CSS/JavaScript ## 快速开始 ### 环境要求 - Node.js >= 14.0.0 - npm >= 6.0.0 ### 安装步骤 1. **克隆项目** ```bash git clone https://gitee.com/xiaoqi056/farm-code-apadqq.git cd farm-code-apadqq ``` 2. **安装依赖** ```bash npm install ``` 3. **配置环境变量** ```bash cp .env.example .env ``` 编辑 `.env` 文件,修改必要的配置项: ```env PORT=3000 JWT_SECRET=your-secret-key-here ADMIN_PASSWORD=your-admin-password ``` 4. **启动服务** ```bash npm start ``` 5. **访问服务** - 前台入口:`http://localhost:3000/static/user/index.html` - 后台入口:`http://localhost:3000/static/admin/index.html` > 首次启动时会自动创建管理员账号,默认用户名:`admin`,密码:`.env` 中配置的 `ADMIN_PASSWORD` ## 目录结构 ``` qq-code-system/ ├── backend/ # 后端代码 │ ├── middleware/ # 中间件(认证等) │ │ └── auth.js # JWT 认证中间件 │ ├── routes/ # 路由 │ │ ├── admin.js # 管理员路由 │ │ ├── auto-upload.js # 自动上传路由 │ │ ├── external.js # 外部 API 路由 │ │ └── user.js # 用户路由 │ ├── config.js # 配置文件 │ └── db.js # 数据库连接 ├── data/ # 数据存储目录 │ ├── admins.json # 管理员数据 │ ├── users.json # 用户数据 │ ├── settings.json # 系统设置 │ └── logs.json # 日志数据 ├── frontend/ # 前端代码 │ ├── admin/ # 后台管理页面 │ │ ├── index.html # 登录页 │ │ ├── users.html # 用户管理 │ │ ├── auto-upload.html # 自动上传设置 │ │ ├── logs.html # 日志查看 │ │ └── settings.html # 系统设置 │ └── user/ # 用户页面 │ ├── index.html # 登录页 │ ├── dashboard.html # 用户面板 │ └── logs.html # 用户日志 ├── .env.example # 环境变量示例 ├── api.md # API 文档 ├── package.json # 项目配置 └── server.js # 启动文件 ``` ## API 接口 ### 用户端接口(`/api/user/*`) | 接口 | 方法 | 说明 | |------|------|------| | `/api/user/login` | POST | 用户登录(密钥登录) | | `/api/user/profile` | GET | 获取用户信息 | | `/api/user/binding` | GET | 获取绑定信息 | | `/api/user/binding` | POST | 保存绑定信息 | | `/api/user/binding` | DELETE | 删除绑定信息 | | `/api/user/binding-proxy` | POST | 代理登录并拉取账号列表 | | `/api/user/toggle-auto-upload` | POST | 开关自动上传 | | `/api/user/logs` | GET | 获取用户日志 | ### 管理端接口(`/api/admin/*`) | 接口 | 方法 | 说明 | |------|------|------| | `/api/admin/login` | POST | 管理员登录 | | `/api/admin/users` | GET | 获取用户列表 | | `/api/admin/users/:qq` | PUT | 更新用户状态 | | `/api/admin/users/:qq` | DELETE | 删除用户 | | `/api/admin/logs` | GET | 获取系统日志 | | `/api/admin/auto-upload/config` | GET | 获取自动上传配置 | | `/api/admin/auto-upload/config` | POST | 保存自动上传配置 | | `/api/admin/auto-upload/users` | GET | 获取用户上传状态 | | `/api/admin/auto-upload/trigger/:qq` | POST | 触发单个用户上传 | ### 外部接口(`/api/external/*`) | 接口 | 方法 | 说明 | |------|------|------| | `/api/external/users/add` | POST | 批量添加/更新用户 | | `/api/external/getcode` | GET | 获取验证码(外部调用) | > 外部接口需要在请求头中携带 `X-API-Key` 进行鉴权 ## 自动上传流程 自动上传由系统定时器触发,执行以下步骤: 1. **获取 code**:向用户框架的 `/getcode?qq={qq}` 发送请求 2. **验证 code**:验证 code 是否为 32 位十六进制格式 3. **随机延时**:等待 1-2 秒模拟人工操作 4. **提交登录**:向绑定平台的 `/api/accounts` 发送 POST 请求 详细的 API 对接文档请参考 [api.md](./api.md)。 ## 配置说明 ### 环境变量 | 变量名 | 默认值 | 说明 | |--------|--------|------| | `PORT` | 3000 | 服务端口 | | `JWT_SECRET` | dev-secret-change-me | JWT 密钥 | | `JWT_EXPIRES_IN` | 24h | JWT 过期时间 | | `ADMIN_USERNAME` | admin | 管理员用户名 | | `ADMIN_PASSWORD` | admin | 管理员密码 | | `API_KEY` | - | 外部 API Key | ### 系统设置 系统设置存储在 `data/settings.json` 中: | 配置项 | 说明 | |--------|------| | `apiKey` | 外部 API Key | | `autoUploadInterval` | 自动上传间隔(秒),0 为关闭 | | `externalCodeKey` | 外部请求框架 code 的鉴权 key | ## 适配框架 1. 已适配 **小栗子框架** 和 **Dulu框架** 只要能使用这两个框架的都能使用。已有编译完成的dll。 2. 启动后设置端口,上传时会携带这个端口进行上传,后续使用插件端口获取code。 ## 缺点 1. 前期开发未考虑多框架,所以密钥数据保存在本地,可能和云端密钥不匹配,请对自己发送:**重置密钥**来进行重置。 2. 这里是列表文本当有新QQ登录成功时,会携带框架内所有QQ信息上传,如果某用户登录了多个框架,那么会造成框架假离线情况。 ## 安全注意事项 1. **环境变量**:生产环境务必修改 `.env` 中的 `JWT_SECRET` 和 `ADMIN_PASSWORD` 2. **API Key**:外部 API Key 应设置为强随机字符串 3. **HTTPS**:生产环境建议启用 HTTPS 4. **数据备份**:定期备份 `data/` 目录下的 JSON 文件 ## 许可证 MIT License - 详见 [LICENSE](./LICENSE)