This commit is contained in:
dengqichen 2025-11-17 21:53:07 +08:00
parent 75986287d1
commit 58b9d72ebe

View File

@ -1050,8 +1050,15 @@ class WindsurfRegister {
}
// 2. 调用 CapSolver API 获取 token
// 简化 URL移除 hash 和查询参数CapSolver 不需要完整 URL
const currentUrl = this.page.url();
const token = await this.capsolver.solveHCaptcha(captchaInfo.siteKey, currentUrl);
const simplifiedUrl = new URL(currentUrl);
const cleanUrl = `${simplifiedUrl.protocol}//${simplifiedUrl.host}${simplifiedUrl.pathname}`;
logger.info(this.siteName, ` → 原始 URL: ${currentUrl.substring(0, 80)}...`);
logger.info(this.siteName, ` → 简化 URL: ${cleanUrl}`);
const token = await this.capsolver.solveHCaptcha(captchaInfo.siteKey, cleanUrl);
logger.info(this.siteName, ` → 获取到 token: ${token.substring(0, 30)}...`);
@ -1265,9 +1272,34 @@ class WindsurfRegister {
}
if (captchaDetected) {
logger.info(this.siteName, ' → 正在处理验证码...');
await this.handleHCaptcha();
await this.human.randomDelay(1000, 2000);
logger.warn(this.siteName, ' → ⚠️ 检测到验证码请手动完成等待60秒...');
// 等待用户手动完成验证码
const waitStart = Date.now();
const maxWait = 60000; // 等待60秒
while (Date.now() - waitStart < maxWait) {
// 检查验证码是否已完成
const captchaCompleted = await this.page.evaluate(() => {
// 检查验证码对话框是否消失
const modal = document.querySelector('[role="dialog"]');
const modalVisible = modal && window.getComputedStyle(modal).display !== 'none';
return !modalVisible;
});
if (captchaCompleted) {
const elapsed = ((Date.now() - waitStart) / 1000).toFixed(1);
logger.success(this.siteName, ` → ✓ 验证码已完成(耗时${elapsed}秒)`);
break;
}
// 每秒检查一次
await new Promise(resolve => setTimeout(resolve, 1000));
}
if (Date.now() - waitStart >= maxWait) {
logger.warn(this.siteName, ' → ⚠️ 验证码等待超时,继续尝试...');
}
} else {
logger.info(this.siteName, ` → ✓ 无验证码(检查${captchaCheckCount}次,耗时${((Date.now() - checkStartTime) / 1000).toFixed(1)}秒)`);
}