# stress_bots **Repository Path**: lmh106/stress_bots ## Basic Information - **Project Name**: stress_bots - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-04-23 - **Last Updated**: 2026-04-27 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 单账号登录测试(Node.js) > 当前项目只保留登录测试。先确认单个账号可以登录,再继续扩展后续业务。 ## 当前功能 - 输入目标地址、登录接口、账号和密码 - 支持普通明文载荷:`{ "username": "...", "password": "..." }` - 支持手动加密载荷:`{ "encryptString": "..." }` - 支持自动加密载荷(从账号密码生成 `encryptString`) - 支持自定义请求头 JSON - 显示 HTTP 状态、token 解析结果、响应字段和响应预览 ## 关于 encryptString 你提供的接口 `https://api.1577apqiezu.com/hall/api/member/login` 使用了 `x-data-mode: json_cipher`,请求体是: ```json { "encryptString": "..." } ``` 现在已经接入扒下来的前端加密逻辑: - AES-128-CBC - IV:`5421698523412578` - 明文使用 ZeroPadding(补 `\0` 到 16 字节块) - 密钥支持两种模式: - `tokenAndUid`:`MD5(token + username).slice(0,16)` - `doubleToken`:`MD5(token + MD5(token)).slice(2,18)` - 最终请求体:`{ "encryptString": "" }` 注意:自动模式要求 `LOGIN_HEADERS_JSON` 中提供真实 `token`(不能是占位符)。 ## 默认目标 默认配置已经指向你提供的登录接口: ```text BASE_URL=https://api.1577apqiezu.com LOGIN_PATH=/hall/api/member/login ``` 页面里的“请求头 JSON”已经放入一组接近浏览器抓包的请求头模板,并支持这些占位符: - `{{timestamp}}`:当前秒级时间戳 - `{{timestamp_ms}}`:当前毫秒时间戳 - `{{device}}`:每次请求生成的设备 UUID - `{{request_id}}`:每次请求生成的请求 UUID - `{{token}}`:每次请求生成的 UUID 注意:`:authority`、`:method`、`:path`、`:scheme`、`content-length` 这类头由 Node 或 HTTP 协议层处理,代码会自动忽略。 ## 浏览器页面 启动页面服务: ```bash npm run server ``` 浏览器打开: ```text http://127.0.0.1:8000 ``` 页面使用方式: - `LOGIN_USERNAME` 填账号 - `LOGIN_PASSWORD` 填密码 - 如果已有抓包密文,`LOGIN_PAYLOAD_MODE` 选择“手动 encryptString” - 如果要自动生成,`LOGIN_PAYLOAD_MODE` 选择 `autoEncryptString` - `LOGIN_FIELD_MAPPING` 选择登录字段名(`username/password`、`username/userpass` 或 `useridx/userpass`) - `LOGIN_BASE_PAYLOAD_JSON` 填基础参数(对应前端 `userLoginBasePayload`) - `LOGIN_NETWORK_TYPE`、`LOGIN_VERSION` 可按抓包填写 - `LOGIN_EXTRA_PAYLOAD_JSON` 可填额外登录参数(如验证码字段) - `LOGIN_HEADERS_JSON` 中务必填真实 `token` ## 命令行测试 明文模式示例: ```powershell $env:BASE_URL="https://api.1577apqiezu.com" $env:ALLOWED_HOSTS="api.1577apqiezu.com" $env:LOGIN_PATH="/hall/api/member/login" $env:LOGIN_USERNAME="你的账号" $env:LOGIN_PASSWORD="你的密码" $env:LOGIN_PAYLOAD_MODE="plain" npm start ``` 手动 `encryptString` 模式示例: ```powershell $env:BASE_URL="https://api.1577apqiezu.com" $env:ALLOWED_HOSTS="api.1577apqiezu.com" $env:LOGIN_PATH="/hall/api/member/login" $env:LOGIN_PAYLOAD_MODE="encryptString" $env:LOGIN_ENCRYPT_STRING="抓包得到的 encryptString" npm start ``` ## 本地模拟登录接口 只用于本地验证: ```bash npm run mock ``` 默认接口: - `POST /login`:登录并返回 token - `GET /health`:健康检查 ## 配置项 | 配置名 | 默认值 | 中文说明 | |---|---|---| | `BASE_URL` | `https://api.1577apqiezu.com` | 目标 API 基础地址 | | `ALLOWED_HOSTS` | `localhost,127.0.0.1,api.1577apqiezu.com` | 允许访问的目标主机 | | `LOGIN_USERNAME` | 空 | 单个登录账号 | | `LOGIN_PASSWORD` | 空 | 单个登录密码 | | `LOGIN_PATH` | `/hall/api/member/login` | 登录接口路径 | | `LOGIN_PAYLOAD_MODE` | `plain` | `plain`、`encryptString` 或 `autoEncryptString` | | `LOGIN_ENCRYPT_STRING` | 空 | 手动粘贴的加密载荷 | | `LOGIN_FIELD_MAPPING` | `usernameUserpass` | 登录字段映射:`usernamePassword`、`usernameUserpass` 或 `useridxUserpass` | | `LOGIN_CRYPTO_KEY_MODE` | `doubleToken` | 密钥模式:`tokenAndUid` 或 `doubleToken` | | `LOGIN_BASE_PAYLOAD_JSON` | 内置模板 | 基础参数(默认已内置从抓包提取的 `userLoginBasePayload` 模板) | | `LOGIN_NETWORK_TYPE` | 空 | 公共参数 `networkType` | | `LOGIN_VERSION` | 空 | 公共参数 `version` | | `LOGIN_EXTRA_PAYLOAD_JSON` | `{}` | 自动加密前参与拼装的附加参数 | | `LOGIN_HEADERS_JSON` | 浏览器请求头模板 | 自定义请求头 JSON | | `REQUEST_TIMEOUT` | `15` | 单次请求超时时间,单位秒 | | `REQUEST_RETRIES` | `0` | 请求失败后的重试次数 | | `RETRY_BACKOFF` | `0.4` | 重试等待系数 | ## 文件说明 | 文件 | 中文说明 | |---|---| | `api.js` | 登录 HTTP 请求、自定义请求头、token 解析 | | `config.js` | 登录测试配置、环境变量解析、安全校验 | | `main.js` | 命令行登录测试入口 | | `server.js` | 浏览器页面后端接口 | | `mock_target.js` | 本地模拟登录接口 | | `static/index.html` | 单账号登录测试页面 | ## 常用检查 ```bash npm run check ```