first init

This commit is contained in:
dengqichen 2025-11-13 15:55:52 +08:00
parent 3990aeb478
commit 4b885d4c54
4 changed files with 100 additions and 9 deletions

11
db.js
View File

@ -36,19 +36,20 @@ export async function ensureSchema() {
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;`); ) 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(); const p = getPool();
if (!p) return; if (!p) return;
await ensureSchema(); await ensureSchema();
const sql = `INSERT INTO accounts (email, password, status, created_at, expires_at) const sql = `INSERT INTO accounts (email, password, status, created_at, expires_at, credits)
VALUES (?, ?, ?, ?, ?) VALUES (?, ?, ?, ?, ?, ?)
ON DUPLICATE KEY UPDATE password=VALUES(password), status=VALUES(status), created_at=VALUES(created_at), expires_at=VALUES(expires_at)`; 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, [ await p.execute(sql, [
email, email,
password, password,
status, status,
formatDateTime(createdAt), formatDateTime(createdAt),
formatDateTime(expiresAt) formatDateTime(expiresAt),
credits
]); ]);
} }

View File

@ -79,19 +79,22 @@ async function main() {
console.log('📧 本次注册邮箱:', email); console.log('📧 本次注册邮箱:', email);
// 执行注册 // 执行注册
const success = await registerOnce(emailPage, registerPage, email); const result = await registerOnce(emailPage, registerPage, email);
// 关闭注册页,准备下次 // 关闭注册页,准备下次
try { await registerPage.close(); } catch {} try { await registerPage.close(); } catch {}
registerPage = await registerContext.newPage(); registerPage = await registerContext.newPage();
if (success) { if (result && result.success) {
successCount++; successCount++;
console.log('\n🎉 ============================================'); console.log('\n🎉 ============================================');
console.log(' 注册成功!'); console.log(' 注册成功!');
console.log('============================================'); console.log('============================================');
console.log('📧 邮箱:', email); console.log('📧 邮箱:', email);
console.log('🔑 密码:', config.verdent.password); console.log('🔑 密码:', config.verdent.password);
if (result.credits) {
console.log('💳 额度:', result.credits);
}
console.log('============================================\n'); console.log('============================================\n');
// 邮件页面回退到收件箱 // 邮件页面回退到收件箱
@ -113,7 +116,14 @@ async function main() {
const createdAt = new Date(); const createdAt = new Date();
const expiresAt = new Date(createdAt.getTime() + 7 * 24 * 60 * 60 * 1000); const expiresAt = new Date(createdAt.getTime() + 7 * 24 * 60 * 60 * 1000);
try { 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] ✅ 账号已写入数据库'); console.log('[DB] ✅ 账号已写入数据库');
} catch (e) { } catch (e) {
console.log('[DB] ⚠️ 写入失败:', e.message); console.log('[DB] ⚠️ 写入失败:', e.message);

View File

@ -247,11 +247,26 @@ export async function completeRegistration(page, verificationCode) {
const finalUrl = page.url(); const finalUrl = page.url();
console.log('✅ 已跳转到 Dashboard:', finalUrl); 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) { } catch (e) {
console.log('⚠️ 跳转 Dashboard 失败:', e.message); console.log('⚠️ 跳转 Dashboard 失败:', e.message);
} }
return true; return { success: true, credits: null };
} else { } else {
// 检查是否有错误提示 // 检查是否有错误提示
const errorElement = page.locator('[class*="error"], [class*="alert"]').first(); const errorElement = page.locator('[class*="error"], [class*="alert"]').first();

65
start.bat Normal file
View File

@ -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