From 35f3af20b60cd828fcdaf6bc87d888853b0b4154 Mon Sep 17 00:00:00 2001 From: foxhui Date: Fri, 28 Nov 2025 21:25:26 +0800 Subject: [PATCH] =?UTF-8?q?docs:=20=E7=AE=80=E5=8C=96=E5=92=8C=E4=BC=98?= =?UTF-8?q?=E5=8C=96=E9=A1=B9=E7=9B=AE=E6=96=87=E6=A1=A3=E5=86=85=E5=AE=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 294 +++++++++++++++++------------------------------------- 1 file changed, 93 insertions(+), 201 deletions(-) diff --git a/README.md b/README.md index 4c240f9..2aee81b 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ ## 📝 项目简介 -LMArenaImagenAutomator 是一个基于 Puppeteer 的自动化图像生成工具,通过模拟人类操作与 LMArena 网站交互,提供图像生成服务。 +LMArenaImagenAutomator 是一个基于 Puppeteer 的自动化图像生成工具,通过模拟人类操作与 LMArena、Gemini Enterprise 网站交互,提供图像生成服务。(未来可能支持更多支持免费生图的网站) 项目支持两种运行模式: - **OpenAI 兼容模式**:提供标准的 OpenAI API 接口,便于集成到现有应用 @@ -16,7 +16,9 @@ LMArenaImagenAutomator 是一个基于 Puppeteer 的自动化图像生成工具 - 🔐 **安全认证**:基于 Bearer Token 的 API 鉴权 - 📊 **队列管理**:智能任务队列,防止请求过载 - 🌐 **代理支持**:支持 HTTP 和 SOCKS5 代理配置 -- 🎭 **特征伪装**:尽量伪装成真实浏览器的特征(详情参考文档结尾) +- 🎭 **特征伪装**:尽量伪装成真实浏览器的特征 + +![Demo](https://github.com/user-attachments/assets/cc1b72f9-fbca-4784-820e-6b0a79e62cd5) --- @@ -26,125 +28,60 @@ LMArenaImagenAutomator 是一个基于 Puppeteer 的自动化图像生成工具 - **Node.js**: 16.0 或更高版本 - **操作系统**: Windows、Linux 或 macOS -- **浏览器**: Google Chrome 或 Chromium (Puppeteer 会自动下载,但是**更推荐**使用Google Chrome) +- **浏览器**: Google Chrome (**推荐**) 或 Chromium ### 安装步骤 -1. **克隆项目**(如果从仓库获取)或解压项目文件 +1. **克隆项目** 或下载解压项目文件 2. **安装依赖** ```bash pnpm install ``` - -3. **生成 API 密钥** - ```bash - npm run genkey +3. **生成配置文件** + 首次运行会自动生成配置文件,也可以手动复制模板 + ``` + cp config.example.yaml config.yaml ``` - 此命令会生成一个安全的随机密钥,请保存并配置到 `config.yaml` 中。 ---- - -## ⚙️ 配置说明 - -配置文件位于项目根目录下的 `config.yaml`,首次运行时会自动生成默认配置。 - -
-📝 查看详细配置说明 - -### 服务器配置 -```yaml -server: - # 运行模式: 'openai' (OpenAI 兼容) 或 'queue' (SSE 队列) - type: queue - # 监听端口 - port: 3000 - # API 鉴权密钥 (使用 npm run genkey 生成) - auth: sk-change-me-to-your-secure-key -``` - -### 浏览器配置 -```yaml -chrome: - # Chrome 可执行文件路径 (留空使用 Puppeteer 内置版本) - # Windows 示例: "C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe" - # Linux 示例: "/usr/bin/chromium" - path: "" - - # 是否启用无头模式 (true = 后台运行,false = 显示浏览器) - headless: false - - # 是否启用 GPU 加速 (无显卡服务器设为 false) - gpu: false -``` - -### 代理配置 -```yaml -chrome: - proxy: - # 是否启用代理 - enable: false - # 代理类型: 'http' 或 'socks5' - type: http - # 代理服务器地址 - host: 127.0.0.1 - # 代理端口 - port: 7890 - # 代理认证 (可选) - # user: username - # passwd: password -``` - -### 重要配置建议 - -| 配置项 | 建议值 | 说明 | -|-------|--------|------| -| `server.type` | `queue` | 使用队列模式可获得实时状态反馈 | -| `server.auth` | 强密钥 | 务必修改默认值,使用 `npm run genkey` 生成 | -| `chrome.headless` | `false` / `true` | 建议保持非无头模式(true已映射为new模式) | -| `chrome.gpu` | `false` / `true` | 无显卡环境强烈建议关闭 | - -
+4. **启动程序** + ```bash + # 标准模式 + npm start + # 登录模式 (用于手动登录,该模式会自动禁用自动程序和无头模式) + # 如 Google 账号登录时出现浏览器不安全的提示可切换该模式登录后再使用默认模式启动 + npm start -- -login + # 测试模式 + npm test (-- -login) + ``` --- ## 📖 使用方法 -### 首次使用重要指引 +### ⚠️ 首次使用重要指引 -#### 1. 首次启动与登录 -- **关闭无头模式**:第一次启动程序时,请务必关闭无头模式。(**Linux无界面用户请参阅文档结尾**) -- **完成账号登录**:等待网页加载完毕后,请手动登录您的账号,以避免后续使用中弹出登录界面。 +#### 1. 启动与登录 +- **关闭无头模式**:首次启动务必关闭无头模式。推荐使用 **登录模式**。(Linux 无界面用户请参阅文档结尾) +- **手动登录**:网页加载完毕后,请手动完成账号登录,避免后续流程中断。 #### 2. 验证流程 -- **触发验证**:在输入框中输入任意内容并发送,等待服务条款和CloudFlare Turnstile验证码弹出。 -- **通过验证**:点击验证码并同意服务条款,然后再次点击发送。此过程可能会弹出reCAPTCHA验证码,请一并完成。 +- **触发验证**:在输入框输入任意内容并发送,触发服务条款及 CloudFlare Turnstile 验证。 +- **完成验证**:点击验证码并通过(可能包含 reCAPTCHA),同意条款后再次点击发送确保流程通畅。 -#### 3. 后续运行建议 -- **模式选择**:完成上述步骤后,您可以选择切换为无头模式运行。 -- **推荐模式**:为减少触发人机验证的频率,建议仍保持非无头模式运行。 +#### 3. 运行建议 +- **模式选择**:完成上述初始化后,可切换至无头模式运行。 +- **最佳实践**:为降低风控概率,**强烈建议**保持非无头模式(有界面)运行。 -### 方式一:使用 HTTP API +### 接口使用说明 -**启动服务器** -```bash -npm start -``` +#### 1. OpenAI 兼容模式 -#### OpenAI 兼容模式 > [!WARNING] > 由于模拟真实浏览器操作,每次只能处理一个任务,其余任务将进入队列等待。为避免客户端超时影响体验,若当前任务数已达3个,后续请求将直接返回错误。因此,强烈推荐使用队列模式(`queue`),该模式下服务器会向客户端发送心跳包以确保连接持续活跃。 -**配置文件设置** -```yaml -server: - type: openai - port: 3000 - auth: your-secret-key -``` - **请求端点** ``` POST http://127.0.0.1:3000/v1/chat/completions @@ -192,60 +129,10 @@ curl -X POST http://127.0.0.1:3000/v1/chat/completions \ > - **必填**:必须填写支持的模型名称,否则将使用 LMArena 网页默认模型 > - **查看可用模型**: > - 方式 1:访问 `/v1/models` 接口查询 -> - 方式 2:直接查看 `lib/models.js` 文件 +> - 方式 2:直接查看 `lib/backend/models.js` 文件 > - **示例模型**:`seedream-4-high-res-fal`、`gemini-3-pro-image-preview`、`dall-e-3` 等 -#### 获取可用模型列表 - -**请求端点** -``` -GET http://127.0.0.1:3000/v1/models -``` - -
-📄 查看API请求示例 - -**请求示例** -```bash -curl -X GET http://127.0.0.1:3000/v1/models \ - -H "Authorization: Bearer your-secret-key" -``` - -**响应格式** -```json -{ - "object": "list", - "data": [ - { - "id": "seedream-4-high-res-fal", - "object": "model", - "created": 1732456789, - "owned_by": "lmarena" - }, - { - "id": "gemini-3-pro-image-preview", - "object": "model", - "created": 1732456789, - "owned_by": "lmarena" - } - ] -} -``` - -
- -> **说明**: -> - 此接口在 **OpenAI 兼容模式** 和 **Queue 队列模式** 下均可用 -> - `created` 字段为当前请求时的时间戳 -> - 完整模型列表可在 `lib/models.js` 文件中查看 - -#### Queue 队列模式(SSE)(推荐) - -**配置文件设置** -```yaml -server: - type: queue -``` +#### 2. Queue 队列模式 (SSE) (推荐) **请求端点** ``` @@ -304,10 +191,53 @@ req.end(); - > **提示**:Queue 模式同样支持 `model` 参数,用法与 OpenAI 兼容模式一致。 -#### 带图片的请求 +#### 3. 获取可用模型列表 + +**请求端点** +``` +GET http://127.0.0.1:3000/v1/models +``` + +
+📄 查看API请求示例 + +**请求示例** +```bash +curl -X GET http://127.0.0.1:3000/v1/models \ + -H "Authorization: Bearer your-secret-key" +``` + +**响应格式** +```json +{ + "object": "list", + "data": [ + { + "id": "seedream-4-high-res-fal", + "object": "model", + "created": 1732456789, + "owned_by": "lmarena" + }, + { + "id": "gemini-3-pro-image-preview", + "object": "model", + "created": 1732456789, + "owned_by": "lmarena" + } + ] +} +``` + +
+ +> **说明**: +> - 此接口在 **OpenAI 兼容模式** 和 **Queue 队列模式** 下均可用 +> - `created` 字段为当前请求时的时间戳 +> - 完整模型列表可在 `lib/backend/models.js` 文件中查看 + +#### 4. 带图片的请求说明 **支持格式**:PNG、JPEG、GIF、WebP **最大数量**:5 张图片 @@ -340,39 +270,6 @@ req.end(); -### 方式二:使用CLI客户端脚本 - -**启动CLI工具** -```bash -npm test -``` -根据指引填写图片路径和提示词即可 - ---- - -## 📁 项目结构 - -
-🗂️ 查看目录结构 - -``` -lmarena/ -├── server.js # HTTP 服务器 (主入口) -├── config.yaml # 配置文件 -├── package.json # 项目依赖 -├── lib/ -│ ├── lmarena.js # 核心生图逻辑 (Puppeteer 操作) -│ ├── models.js # 模型映射配置 -│ ├── config.js # 配置加载器 -│ ├── genApiKey.js # API 密钥生成工具 -│ └── test.js # 功能测试脚本 -└── data/ - ├── chromeUserData/ # Chrome 用户数据 (自动创建) - └── temp/ # 临时图片存储 -``` - -
- --- ## 🔧 常见问题 @@ -387,7 +284,7 @@ lmarena/ - 大陆地区设备可能因网络原因 Puppeteer 自动安装失败 - 可尝试手动安装后填写 `chrome.path` (Linux 可使用 `which` 指令检索路径) - 检查 `config.yaml` 中的 `chrome.path` 是否正确 -- 尝试删除 `data/chromeUserData` 目录后重新运行 +- 尝试删除 `data` 目录后重新运行 @@ -398,10 +295,7 @@ lmarena/ **解决方案**: - 该报错并不会影响程序运行,但是强烈建议在无显卡的设备上关闭GPU加速 -```yaml -chrome: - gpu: false # 禁用 GPU 加速 -``` +- 修改 `config.yaml` 中的`chrome.gpu`为false @@ -412,8 +306,8 @@ chrome: **解决方案**: - 该问题仅存在于OpenAI兼容模式 -- 当前限制:1 个并发 + 2 个排队 (总计 3 个) -- 修改 `server.js` 中的 `MAX_CONCURRENT` 和 `MAX_QUEUE_SIZE` (不建议,应为大多数客户端HTTP请求是有超时时间的) +- 队列限制:1 个并发 + 2 个排队 (总计 3 个) +- 修改 `config.yaml` 中的`queue.maxQueueSize` (不建议) - 等待当前任务完成后再提交新任务 @@ -450,7 +344,7 @@ chrome: **解决方案**: -**方法一:X11 转发 (轻量级)** +**方法一:X11 转发** - 推荐使用 WindTerm 等终端工具,开启 X-Server 功能 - 在 SSH 会话设置中启用 X11 转发 (Forward X11) @@ -484,7 +378,7 @@ chrome: **浏览器指纹伪装状态**: - **Windows 10 (官方 Chrome)**: - - ✅ 已通过 [antibot](https://bot.sannysoft.com/) 和 [CreepJS](https://abrahamjuliot.github.io/creepjs/) 测试,无红色警示。 + - 针对 Windows 10 原生 Chrome 环境优化指纹,已在 [antibot](https://bot.sannysoft.com/) 和 [CreepJS](https://abrahamjuliot.github.io/creepjs/) 测试中无红色高危警告 - **Linux 环境**: - ⚠️ 未完全通过 CreepJS 测试,但实际使用中影响较小,检测严格程度可能低于测试工具。 @@ -495,14 +389,11 @@ chrome: **1. 使用官方 Chrome(推荐)** 不推荐使用 Chromium,因为它缺少 MP4/H.264 解码器等插件,且被大量爬虫使用,会成为明显特征。 - -**Linux 安装官方 Chrome**: ```bash -# 从 Google 官方下载 Chrome deb 安装包 -# 大陆服务器可手动下载deb安装包 https://www.google.com/chrome/?platform=linux -wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb -sudo dpkg -i google-chrome-stable_current_amd64.deb -sudo apt-get install -f # 修复可能的依赖问题 +# 从 Google 官方下载 Chrome DEB安装包 +# 大陆服务器可手动下载安装包 https://www.google.com/chrome/?platform=linux +curl -LO https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb +apt install ./google-chrome-stable_current_amd64.deb -y ``` **配置方式**: @@ -542,14 +433,15 @@ sudo apt install ttf-mscorefonts-installer | 内存 | 1GB | 2GB 及以上 | 经测试,本项目可在以下环境中稳定运行: -- Oracle 免费机:1C1G 配置,基于 Debian 系统。 -- 阿里云轻量应用服务器:2C2G 配置,基于 Debian 系统。 +- Oracle 免费机:1C1G 配置,基于 Debian 12 系统。 +- 阿里云轻量应用服务器:2C2G 配置,基于 Debian 11 系统。 -## 📄 许可证 +## 📄 许可证和免责声明 本项目采用 [MIT License](LICENSE) 开源。 -**注意**: 本项目仅供学习和研究使用,请遵守 LMArena.ai 的使用条款。 +**免责声明**: +本项目仅供学习交流使用。如果因使用该项目造成的任何后果(包括但不仅限于账号被禁用),作者和该项目均不承担任何责任。请遵守相关网站和服务的使用条款,以及相关数据的备份工作。 ---