From 4b885d4c540a32f009ece7ad7c2efda86e3effb7 Mon Sep 17 00:00:00 2001 From: dengqichen Date: Thu, 13 Nov 2025 15:55:52 +0800 Subject: [PATCH] first init --- db.js | 11 ++++---- index.js | 16 +++++++++--- registerModule.js | 17 ++++++++++++- start.bat | 65 +++++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 100 insertions(+), 9 deletions(-) create mode 100644 start.bat diff --git a/db.js b/db.js index c56aa39..e1086b6 100644 --- a/db.js +++ b/db.js @@ -36,19 +36,20 @@ export async function ensureSchema() { ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;`); } -export async function saveAccount({ email, password, createdAt, expiresAt, status }) { +export async function saveAccount({ email, password, createdAt, expiresAt, status, credits }) { const p = getPool(); if (!p) return; await ensureSchema(); - const sql = `INSERT INTO accounts (email, password, status, created_at, expires_at) - VALUES (?, ?, ?, ?, ?) - ON DUPLICATE KEY UPDATE password=VALUES(password), status=VALUES(status), created_at=VALUES(created_at), expires_at=VALUES(expires_at)`; + const sql = `INSERT INTO accounts (email, password, status, created_at, expires_at, credits) + VALUES (?, ?, ?, ?, ?, ?) + ON DUPLICATE KEY UPDATE password=VALUES(password), status=VALUES(status), created_at=VALUES(created_at), expires_at=VALUES(expires_at), credits=VALUES(credits)`; await p.execute(sql, [ email, password, status, formatDateTime(createdAt), - formatDateTime(expiresAt) + formatDateTime(expiresAt), + credits ]); } diff --git a/index.js b/index.js index f3a381b..764c8a5 100644 --- a/index.js +++ b/index.js @@ -79,19 +79,22 @@ async function main() { console.log('📧 本次注册邮箱:', email); // 执行注册 - const success = await registerOnce(emailPage, registerPage, email); + const result = await registerOnce(emailPage, registerPage, email); // 关闭注册页,准备下次 try { await registerPage.close(); } catch {} registerPage = await registerContext.newPage(); - if (success) { + if (result && result.success) { successCount++; console.log('\n🎉 ============================================'); console.log(' 注册成功!'); console.log('============================================'); console.log('📧 邮箱:', email); console.log('🔑 密码:', config.verdent.password); + if (result.credits) { + console.log('💳 额度:', result.credits); + } console.log('============================================\n'); // 邮件页面回退到收件箱 @@ -113,7 +116,14 @@ async function main() { const createdAt = new Date(); const expiresAt = new Date(createdAt.getTime() + 7 * 24 * 60 * 60 * 1000); try { - await saveAccount({ email, password: config.verdent.password, createdAt, expiresAt, status: 'active' }); + await saveAccount({ + email, + password: config.verdent.password, + createdAt, + expiresAt, + status: 'active', + credits: result.credits || null + }); console.log('[DB] ✅ 账号已写入数据库'); } catch (e) { console.log('[DB] ⚠️ 写入失败:', e.message); diff --git a/registerModule.js b/registerModule.js index d5dc26c..4311916 100644 --- a/registerModule.js +++ b/registerModule.js @@ -247,11 +247,26 @@ export async function completeRegistration(page, verificationCode) { const finalUrl = page.url(); console.log('✅ 已跳转到 Dashboard:', finalUrl); + + // 第三步:获取额度信息 + await page.waitForTimeout(2000); + let credits = null; + try { + console.log('💳 步骤 3: 获取额度信息...'); + const creditsElement = page.locator('.left-number').first(); + const creditsText = await creditsElement.textContent({ timeout: 5000 }); + credits = creditsText.trim(); + console.log('✅ 额度:', credits); + } catch (e) { + console.log('⚠️ 获取额度失败:', e.message); + } + + return { success: true, credits }; } catch (e) { console.log('⚠️ 跳转 Dashboard 失败:', e.message); } - return true; + return { success: true, credits: null }; } else { // 检查是否有错误提示 const errorElement = page.locator('[class*="error"], [class*="alert"]').first(); diff --git a/start.bat b/start.bat new file mode 100644 index 0000000..a54d986 --- /dev/null +++ b/start.bat @@ -0,0 +1,65 @@ +@echo off +chcp 65001 >nul +echo ======================================== +echo Verdent 自动注册工具启动脚本 +echo ======================================== +echo. + +REM 检查 Node.js 是否安装 +where node >nul 2>nul +if %errorlevel% neq 0 ( + echo [错误] 未检测到 Node.js,请先安装 Node.js + echo 下载地址: https://nodejs.org/ + pause + exit /b 1 +) + +echo [✓] Node.js 已安装 +node --version +echo. + +REM 检查是否已安装依赖 +if not exist "node_modules\" ( + echo [!] 检测到依赖未安装,开始安装... + echo. + call npm install + if %errorlevel% neq 0 ( + echo [错误] 依赖安装失败 + pause + exit /b 1 + ) + echo. + echo [✓] 依赖安装完成 + echo. +) else ( + echo [✓] 依赖已安装 + echo. +) + +REM 设置环境变量 +set ADSPOWER_USER_ID=k16x0qt2 +set DB_HOST=172.22.222.111 +set DB_PORT=3306 +set DB_USER=auto-register-verdent +set DB_PASS=Qichen5210523 +set DB_NAME=auto-register-verdent + +echo ======================================== +echo 启动配置: +echo - AdsPower ID: %ADSPOWER_USER_ID% +echo - 数据库: %DB_HOST%:%DB_PORT% +echo - 数据库名: %DB_NAME% +echo ======================================== +echo. +echo [启动] 开始运行注册程序... +echo 按 Ctrl+C 可停止程序 +echo. + +REM 启动程序 +node index.js + +REM 程序结束后暂停 +echo. +echo ======================================== +echo 程序已退出 +pause