This commit is contained in:
dengqichen 2025-11-17 17:44:17 +08:00
parent 4fcd5d1df5
commit fb68de0206
5 changed files with 39 additions and 20 deletions

2
.env
View File

@ -8,4 +8,4 @@ MYSQL_HOST=172.22.222.111
MYSQL_PORT=3306
MYSQL_USER=windsurf-auto-register
MYSQL_PASSWORD=Qichen5210523
MYSQL_DATABASE=auto_register
MYSQL_DATABASE=windsurf-auto-register

View File

@ -1023,11 +1023,9 @@ class WindsurfRegister {
}
}
// 9. 点击订阅按钮
// 9. 点击订阅按钮并检测卡片拒绝(支持重试)
logger.info(this.siteName, ' → 点击订阅按钮...');
await this.human.randomDelay(2000, 3000);
// 9. 点击订阅按钮并检测卡片拒绝(支持重试)
const maxRetries = 5; // 最多重试5次
let retryCount = 0;
let paymentSuccess = false;
@ -1153,15 +1151,11 @@ class WindsurfRegister {
}
}
// 额外等待页面稳定
await this.human.randomDelay(2000, 3000);
// 额外等待页面稳定
await this.human.randomDelay(2000, 3000);
this.currentStep = 6;
logger.success(this.siteName, `步骤 6 完成`);
} else {
logger.warn(this.siteName, ' → 未找到订阅按钮');
this.currentStep = 6;
}
this.currentStep = 6;
logger.success(this.siteName, `步骤 6 完成`);
} catch (error) {
logger.error(this.siteName, `填写支付信息失败: ${error.message}`);
@ -1179,7 +1173,7 @@ class WindsurfRegister {
// 0. 检查并关闭可能存在的弹窗("要打开 Windsurf 吗?"
logger.info(this.siteName, ' → 检查是否有弹窗需要关闭...');
try {
await this.page.waitForTimeout(2000); // 等待弹窗出现
await new Promise(resolve => setTimeout(resolve, 2000)); // 等待弹窗出现
// 方法1: 尝试按ESC键关闭浏览器原生对话框
logger.info(this.siteName, ' → 尝试按ESC键关闭原生对话框...');
@ -1495,6 +1489,31 @@ class WindsurfRegister {
}
}
// 清理浏览器缓存并关闭
if (this.page) {
try {
logger.info(this.siteName, ' → 清除浏览器缓存...');
const client = await this.page.target().createCDPSession();
await client.send('Network.clearBrowserCookies');
await client.send('Network.clearBrowserCache');
await client.send('Storage.clearDataForOrigin', {
origin: '*',
storageTypes: 'all'
});
await this.page.goto('https://windsurf.com', { waitUntil: 'domcontentloaded' });
await this.page.evaluate(() => {
try {
localStorage.clear();
sessionStorage.clear();
} catch (e) {}
});
await client.detach();
logger.success(this.siteName, ' → ✓ 浏览器缓存已清除');
} catch (e) {
logger.warn(this.siteName, ` → 清除缓存失败: ${e.message}`);
}
}
await this.closeBrowser();
throw error;

View File

@ -69,7 +69,7 @@ MYSQL_HOST=172.22.222.111
MYSQL_PORT=3306
MYSQL_USER=windsurf-auto-register
MYSQL_PASSWORD=Qichen5210523
MYSQL_DATABASE=auto_register
MYSQL_DATABASE=windsurf-auto-register
```
### 3. 在代码中使用
@ -166,4 +166,4 @@ getRepository(name) {
- **地址**: 172.22.222.111:3306
- **用户**: windsurf-auto-register
- **密码**: Qichen5210523
- **数据库**: auto_register
- **数据库**: windsurf-auto-register

View File

@ -9,7 +9,7 @@ module.exports = {
port: parseInt(process.env.MYSQL_PORT || '3306'),
user: process.env.MYSQL_USER || 'windsurf-auto-register',
password: process.env.MYSQL_PASSWORD || 'Qichen5210523',
database: process.env.MYSQL_DATABASE || 'auto_register',
database: process.env.MYSQL_DATABASE || 'windsurf-auto-register',
waitForConnections: true,
connectionLimit: 10,
queueLimit: 0,

View File

@ -3,11 +3,11 @@
-- ============================================
-- 创建数据库(如果不存在)
CREATE DATABASE IF NOT EXISTS `auto_register`
CREATE DATABASE IF NOT EXISTS `windsurf-auto-register`
DEFAULT CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;
USE `auto_register`;
USE `windsurf-auto-register`;
-- 创建 Windsurf 账号表
CREATE TABLE IF NOT EXISTS `windsurf_accounts` (