260 lines
6.0 KiB
Markdown
260 lines
6.0 KiB
Markdown
# 账号注册工具 (Account Register)
|
||
|
||
自动化账号注册工具,支持步骤化流程和反检测技术。
|
||
|
||
## 功能特性
|
||
|
||
- ✅ 步骤化注册流程(每个网站独立定义)
|
||
- ✅ 反检测技术(rebrowser-puppeteer)
|
||
- ✅ 人类行为模拟
|
||
- ✅ 自动数据生成(姓名、邮箱、密码等)
|
||
- ✅ 支持部分步骤执行
|
||
- ✅ 干运行模式
|
||
|
||
## 快速开始
|
||
|
||
### 1. 生成账号数据(干运行)
|
||
|
||
```bash
|
||
node src/cli.js register -s windsurf --dry-run
|
||
```
|
||
|
||
输出示例:
|
||
```
|
||
firstName: John
|
||
lastName: Smith
|
||
fullName: John Smith
|
||
email: user_17001234_abc123@gmail.com
|
||
username: quickwolf456
|
||
password: Xy9#mK2$pL5@
|
||
timestamp: 2024-11-16T11:30:00.000Z
|
||
```
|
||
|
||
### 2. 执行第一步注册
|
||
|
||
```bash
|
||
node src/cli.js register -s windsurf --from-step 1 --to-step 1
|
||
```
|
||
|
||
这将:
|
||
1. 生成账号数据
|
||
2. 启动浏览器(反检测模式)
|
||
3. 打开注册页面
|
||
4. 自动填写 First Name, Last Name, Email
|
||
5. 点击 Continue 按钮
|
||
|
||
### 3. 执行完整注册流程
|
||
|
||
```bash
|
||
node src/cli.js register -s windsurf
|
||
```
|
||
|
||
执行所有已实现的步骤(目前只有Step 1)。
|
||
|
||
## 命令行参数
|
||
|
||
| 参数 | 简写 | 说明 | 默认值 |
|
||
|------|------|------|--------|
|
||
| --site | -s | 网站名称 | 必需 |
|
||
| --dry-run | 无 | 只生成数据,不执行 | false |
|
||
| --from-step | 无 | 从第几步开始 | 1 |
|
||
| --to-step | 无 | 执行到第几步 | 全部 |
|
||
| --keep-browser-open | 无 | 保持浏览器打开 | false |
|
||
| --format | -f | 输出格式 | simple |
|
||
| --output | -o | 保存到文件 | 无 |
|
||
|
||
## 支持的网站
|
||
|
||
### Windsurf (windsurf)
|
||
|
||
**注册URL**: https://windsurf.com/account/register
|
||
|
||
**步骤总数**: 3步(目前实现1步)
|
||
|
||
**步骤详情**:
|
||
1. ✅ 填写基本信息(First Name, Last Name, Email)
|
||
2. ⏳ 设置密码(待实现)
|
||
3. ⏳ 邮箱验证(待实现)
|
||
|
||
## 使用示例
|
||
|
||
### 示例1:测试数据生成
|
||
|
||
```bash
|
||
# 生成通用账号数据
|
||
node src/cli.js register generate
|
||
|
||
# 生成Windsurf专用数据
|
||
node src/cli.js register -s windsurf --dry-run
|
||
|
||
# JSON格式输出
|
||
node src/cli.js register generate -f json
|
||
```
|
||
|
||
### 示例2:自动化注册
|
||
|
||
```bash
|
||
# 执行第一步
|
||
node src/cli.js register -s windsurf --from-step 1 --to-step 1
|
||
|
||
# 保持浏览器打开(手动完成后续步骤)
|
||
node src/cli.js register -s windsurf --keep-browser-open
|
||
|
||
# 保存账号数据到文件
|
||
node src/cli.js register -s windsurf -o account.json
|
||
```
|
||
|
||
### 示例3:分步骤执行
|
||
|
||
```bash
|
||
# 只执行第一步
|
||
node src/cli.js register -s windsurf --to-step 1
|
||
|
||
# 从第二步继续(需要先完成第一步)
|
||
node src/cli.js register -s windsurf --from-step 2
|
||
```
|
||
|
||
## 反检测技术
|
||
|
||
### 使用的技术
|
||
|
||
1. **rebrowser-puppeteer**: 修补版Puppeteer,修复CDP泄漏
|
||
2. **人类行为模拟**: 随机延迟、真实鼠标轨迹、自然输入节奏
|
||
3. **指纹随机化**: 随机视口、用户代理、语言设置
|
||
|
||
详细说明请查看: [ANTI-DETECTION.md](../account-register/ANTI-DETECTION.md)
|
||
|
||
### 测试反检测效果
|
||
|
||
访问以下网站测试是否被识别为bot:
|
||
- https://bot-detector.rebrowser.net/
|
||
- https://arh.antoinevastel.com/bots/areyouheadless
|
||
- https://abrahamjuliot.github.io/creepjs
|
||
|
||
## 添加新网站
|
||
|
||
### 1. 创建网站脚本
|
||
|
||
在 `src/tools/account-register/sites/` 目录创建新文件,例如 `github.js`:
|
||
|
||
```javascript
|
||
const AccountDataGenerator = require('../generator');
|
||
const HumanBehavior = require('../utils/human-behavior');
|
||
const logger = require('../../../shared/logger');
|
||
|
||
class GitHubRegister {
|
||
constructor() {
|
||
this.siteName = 'GitHub';
|
||
this.siteUrl = 'https://github.com/signup';
|
||
this.dataGen = new AccountDataGenerator();
|
||
this.human = new HumanBehavior();
|
||
this.currentStep = 0;
|
||
|
||
// 定义步骤
|
||
this.steps = [
|
||
{ id: 1, name: '填写邮箱', method: 'step1_fillEmail' },
|
||
{ id: 2, name: '设置密码', method: 'step2_setPassword' },
|
||
{ id: 3, name: '填写用户名', method: 'step3_fillUsername' },
|
||
// 更多步骤...
|
||
];
|
||
}
|
||
|
||
generateData(options = {}) {
|
||
return this.dataGen.generateAccount(options);
|
||
}
|
||
|
||
async initBrowser() {
|
||
// 使用Windsurf的实现
|
||
}
|
||
|
||
async step1_fillEmail() {
|
||
// 实现第一步
|
||
}
|
||
|
||
async register(options = {}) {
|
||
// 实现主流程
|
||
}
|
||
}
|
||
|
||
module.exports = GitHubRegister;
|
||
```
|
||
|
||
### 2. 使用新脚本
|
||
|
||
```bash
|
||
node src/cli.js register -s github
|
||
```
|
||
|
||
工具会自动发现并加载新脚本。
|
||
|
||
## 编程使用
|
||
|
||
```javascript
|
||
const WindsurfRegister = require('./src/tools/account-register/sites/windsurf');
|
||
|
||
(async () => {
|
||
const register = new WindsurfRegister();
|
||
|
||
try {
|
||
const result = await register.register({
|
||
fromStep: 1,
|
||
toStep: 1,
|
||
keepBrowserOpen: true
|
||
});
|
||
|
||
console.log('注册结果:', result);
|
||
} catch (error) {
|
||
console.error('注册失败:', error);
|
||
}
|
||
})();
|
||
```
|
||
|
||
## 注意事项
|
||
|
||
⚠️ **重要提醒**:
|
||
|
||
1. **遵守服务条款**: 确保使用符合网站的服务条款
|
||
2. **频率限制**: 避免短时间内大量注册
|
||
3. **验证码**: 遇到验证码时需要手动处理
|
||
4. **IP地址**: 建议使用住宅代理,避免数据中心IP
|
||
5. **法律合规**: 仅用于合法的测试和个人用途
|
||
|
||
## 故障排除
|
||
|
||
### 问题1: 浏览器无法启动
|
||
|
||
**解决方案**:
|
||
```bash
|
||
# 重新安装依赖
|
||
rm -rf node_modules package-lock.json
|
||
npm install
|
||
```
|
||
|
||
### 问题2: 元素找不到
|
||
|
||
**解决方案**:
|
||
- 检查网站是否更新了页面结构
|
||
- 增加等待时间
|
||
- 使用浏览器开发工具查看实际的选择器
|
||
|
||
### 问题3: 仍然被识别为bot
|
||
|
||
**解决方案**:
|
||
1. 使用住宅代理
|
||
2. 增加操作延迟
|
||
3. 添加更多人类行为(滚动、鼠标移动)
|
||
4. 考虑使用半自动模式
|
||
|
||
## 性能优化
|
||
|
||
- 使用 `--headless` 模式(但容易被检测)
|
||
- 禁用图片加载
|
||
- 使用更快的选择器
|
||
- 缓存浏览器实例
|
||
|
||
## 相关资源
|
||
|
||
- [反检测技术文档](../account-register/ANTI-DETECTION.md)
|
||
- [rebrowser-patches](https://github.com/rebrowser/rebrowser-patches)
|
||
- [人类行为模拟最佳实践](https://github.com/berstend/puppeteer-extra/tree/master/packages/puppeteer-extra-plugin-stealth)
|