first init

This commit is contained in:
dengqichen 2025-11-13 15:25:51 +08:00
parent 8abea7a7c6
commit 593ffbf289
2 changed files with 67 additions and 11 deletions

View File

@ -7,26 +7,53 @@ import { generateUsername } from './util.js';
import { saveAccount } from './db.js';
/**
* 主自动注册流程
* 单次注册流程
*/
async function registerOnce(emailPage, registerPage, email) {
// ========== 开始 Verdent 注册 ==========
console.log('\n🌐 === 步骤 1: 开始 Verdent.ai 注册 ===');
const { sentAtMs } = await registerOnVerdent(registerPage, email);
// ========== 等待验证码邮件 ==========
console.log('\n📬 === 步骤 2: 等待验证码邮件 ===');
const verificationCode = await waitForVerificationCode(emailPage, sentAtMs, email);
if (!verificationCode) {
throw new Error('未能获取验证码');
}
// ========== 完成注册 ==========
console.log('\n✅ === 步骤 3: 完成注册 ===');
const success = await completeRegistration(registerPage, verificationCode);
return success;
}
/**
* 主自动注册流程循环模式
*/
async function main() {
console.log('🚀 开始自动注册流程...\n');
console.log('🚀 开始自动注册流程(循环模式)...\n');
let browser;
let emailContext;
let registerContext;
let emailPage;
let registerPage;
let successCount = 0;
let failureCount = 0;
try {
// 启动或连接到浏览器(支持指纹浏览器/AdsPower/自定义 WS
// 启动浏览器
console.log('🌐 启动浏览器...');
({ browser, emailContext, registerContext } = await getBrowserAndContexts({
headless: config.browser.headless,
slowMo: config.browser.slowMo,
}));
// 创建页面
const emailPage = await emailContext.newPage();
let registerPage = await registerContext.newPage();
// 创建邮箱页面(保持不关)
emailPage = await emailContext.newPage();
registerPage = await registerContext.newPage();
// 生成唯一用户名(随机 + 时间)
const localPart = generateUsername('qichen');
@ -71,6 +98,18 @@ async function main() {
console.log('🔑 密码:', config.verdent.password);
console.log('============================================\n');
// 邮件页面回退到收件箱列表,避免下次重复输入 PIN
try {
console.log('[邮箱] 回退到收件箱列表...');
await emailPage.goBack({ waitUntil: 'domcontentloaded', timeout: 5000 });
await emailPage.waitForTimeout(1500);
console.log('[邮箱] ✅ 已回退到收件箱');
} catch (e) {
console.log('[邮箱] 回退失败,尝试直接跳转:', e.message);
await emailPage.goto('https://tempmail.plus/zh/', { waitUntil: 'domcontentloaded', timeout: 10000 }).catch(() => {});
await emailPage.waitForTimeout(1500);
}
// 更新基线为当前最新邮件时间
await updateBaseline(emailPage);

View File

@ -94,12 +94,29 @@ async function handleTurnstile(page) {
*/
export async function registerOnVerdent(page, email) {
console.log('🌐 开始 Verdent.ai 注册流程...');
// 打开注册页面(带重试)
let pageOpened = false;
for (let attempt = 1; attempt <= 3; attempt++) {
try {
console.log(`[尝试 ${attempt}/3] 打开注册页面...`);
await page.goto(config.verdent.signupUrl, { waitUntil: 'domcontentloaded', timeout: 30000 });
pageOpened = true;
console.log('✅ 页面加载成功');
break;
} catch (e) {
console.log(`⚠️ 第 ${attempt} 次打开失败:`, e.message);
if (attempt < 3) {
console.log('等待 3 秒后重试...');
await page.waitForTimeout(3000);
}
}
}
if (!pageOpened) {
throw new Error('打开注册页面失败,已重试 3 次');
}
// 访问注册页面
await page.goto(config.verdent.signupUrl, {
waitUntil: 'domcontentloaded',
timeout: 60000
});
await page.waitForTimeout(3000);
// 输入邮箱地址