一个基于 Tauri 2.x + React 18 + Rust 开发的自动化注册系统,用于批量注册 AWS Builder ID 账号。
- 框架: Tauri 2.x
- 语言: Rust
- 数据库: SQLite3
- 主要依赖:
rusqlite- SQLite数据库操作reqwest- HTTP客户端(用于Microsoft Graph API)headless_chrome- 浏览器自动化async-imap- IMAP客户端async-native-tls- TLS支持mailparse- 邮件解析tokio- 异步运行时serde- 序列化/反序列化chrono- 日期时间处理rand- 随机数生成
- UI框架: React 18
- 构建工具: Vite 5
- 状态管理: Zustand
- UI组件: Lucide React (图标)
- 样式: 原生CSS + CSS变量 (支持亮色/暗黑主题)
- 数据表格展示:
- 序号、注册邮箱、邮箱密码
- 客户端ID(隐藏)、refresh_token令牌(隐藏)
- Kiro密码、状态(未注册/进行中/已注册/异常)
- 异常原因、操作按钮
- 分页: 每页20条记录
- 排序: 支持所有字段排序
- 搜索: 支持邮箱和状态搜索
- 操作: 查看详情、编辑、开始注册、删除
支持两种导入方式:
- 富文本粘贴导入: 直接粘贴数据到文本框
- TXT文件导入: 选择TXT文件导入
数据格式:
邮箱地址----邮箱密码----客户端ID----refresh_token令牌
示例:
user@example.com----password123----client-id-here----refresh-token-here
验证机制:
- 格式验证(必须包含4个字段)
- 邮箱格式验证
- 字段非空验证
- 导入结果统计(成功数、失败数、错误详情)
- 状态筛选: 支持按状态筛选账号(全部/未注册/进行中/已注册/异常)
- 删除全部: 双重确认机制防止误操作
- 批量操作: 支持批量导入和管理
- 浏览器运行模式:
- 后台运行: 浏览器窗口不可见
- 前台运行: 浏览器窗口可见,可实时观察注册过程
- 邮件接收模式:
- Microsoft Graph API: 使用 Graph API 获取邮件(推荐,速度快)
- IMAP + OAuth: 使用 IMAP 协议获取邮件(备用方案)
- 设置持久化: 重启应用后保持用户偏好
浏览器隐私保护配置:
- ✅ 彻底清除浏览器缓存(Cookie、本地存储、会话存储)
- ✅ 无痕浏览模式
- ✅ 指纹随机化:
- 操作系统: Windows 10/11 随机选择
- 窗口尺寸: 800-1920x600-1080 随机
- Canvas指纹随机化
- WebGL指纹随机化
- AudioContext指纹随机化
- ClientRects随机化
- 媒体设备列表随机化
- Speech Voices中文语音列表
- ✅ WebRTC IP保护
- ✅ 端口扫描保护
- ✅ 证书错误忽略
注册流程:
- 访问 https://app.kiro.dev/signin
- 点击 Google 登录按钮
- 输入邮箱地址
- 输入姓名(随机中文姓名)
- 等待邮箱验证码(通过Microsoft Graph API自动获取)
- 输入验证码(自动提取6位数字)
- 设置密码(随机生成16位安全密码)
- 完成注册并保存密码
邮件验证码获取:
- 支持两种模式:
- Microsoft Graph API: 使用 Graph API 直接获取邮件(推荐)
- IMAP + OAuth: 使用 IMAP 协议连接 Outlook 邮箱获取邮件
- 使用 refresh_token 自动刷新 access_token
- 自动提取验证码(智能识别6位数字)
- 60秒超时自动重发
- 错误处理和重试机制
2025年现代设计标准:
- ✨ 精致的线型图标系统(Lucide React)
- 🎨 亮色/暗黑主题无缝切换
- 📱 响应式设计(支持多种屏幕尺寸)
- 🎭 流畅的动画过渡效果
- 🎯 隐藏式标题栏(向上滚动隐藏,向下滚动显示)
- 💫 高端视觉效果(阴影、圆角、渐变)
- ⚡ 优秀的交互反馈(加载状态、错误提示、成功提示)
配色系统:
- 主色调: 蓝色 (#4c6ef5)
- 成功: 绿色 (#51cf66)
- 警告: 黄色 (#ffd43b)
- 错误: 红色 (#ff6b6b)
- 信息: 蓝色 (#4dabf7)
aws-builder-automation/
├── src/ # 前端源码
│ ├── components/ # React组件
│ │ ├── TitleBar.tsx # 标题栏组件
│ │ ├── AccountsTable.tsx # 账号表格组件
│ │ ├── ImportPanel.tsx # 导入面板组件
│ │ └── ControlPanel.tsx # 控制面板组件
│ ├── App.tsx # 主应用组件
│ ├── store.ts # Zustand状态管理
│ ├── api.ts # Tauri API调用封装
│ └── index.css # 全局样式
│
├── src-tauri/ # Tauri后端
│ ├── src/
│ │ ├── lib.rs # 主入口
│ │ ├── models.rs # 数据模型
│ │ ├── database.rs # SQLite数据库操作
│ │ ├── graph_api.rs # Microsoft Graph API
│ │ ├── imap_client.rs # IMAP邮件客户端
│ │ ├── browser_automation.rs # 浏览器自动化
│ │ └── commands.rs # Tauri命令
│ ├── Cargo.toml # Rust依赖配置
│ └── tauri.conf.json # Tauri配置
│
└── README.md # 项目文档
- Node.js >= 18
- Rust >= 1.70
- Chrome/Chromium 浏览器
cd aws-builder-automation
npm installnpm run tauri dev如果本机环境中 localhost 会优先解析到 IPv6(如 ::1)导致 Vite 启动失败,项目已默认固定开发地址为 127.0.0.1:1420。
npm run tauri build构建完成后,可执行文件位于 src-tauri/target/release/
按照以下格式准备账号数据:
email@domain.com----password123----client_id----refresh_token
- 方式一: 将数据粘贴到导入面板的文本框,点击"从文本导入"
- 方式二: 将数据保存为TXT文件,点击"从文件导入"选择文件
- 点击"系统设置"按钮
- 选择浏览器运行模式(后台/前台)
- 选择邮件接收模式(Graph API/IMAP)
- 点击"保存设置"
- 在账号列表中找到状态为"未注册"的账号
- 点击"开始注册"按钮(播放图标)
- 系统自动执行注册流程
- 注册完成后状态更新为"已注册",密码自动保存
- 查看账号状态和Kiro密码
- 使用状态筛选查看不同状态的账号
- 导出或使用注册成功的账号
CREATE TABLE accounts (
id INTEGER PRIMARY KEY AUTOINCREMENT,
email TEXT NOT NULL UNIQUE,
email_password TEXT NOT NULL,
client_id TEXT NOT NULL,
refresh_token TEXT NOT NULL,
kiro_password TEXT,
status TEXT NOT NULL DEFAULT 'not_registered',
error_reason TEXT,
created_at TEXT NOT NULL,
updated_at TEXT NOT NULL
);CREATE TABLE settings (
id INTEGER PRIMARY KEY CHECK (id = 1),
browser_mode TEXT NOT NULL DEFAULT 'background',
email_mode TEXT NOT NULL DEFAULT 'graph_api'
);- 所有数据存储在本地SQLite数据库
- 不与任何第三方服务器通信(除Microsoft Graph API和目标网站)
- refresh_token和client_id在界面上隐藏
- 浏览器指纹随机化防止追踪
- 无痕浏览模式不留痕迹
- WebRTC IP保护防止真实IP泄露
- 端口扫描保护防止本地信息泄露
- Microsoft Graph API使用OAuth 2.0认证
- refresh_token安全存储和使用
- 不记录任何用户操作日志
- 确保Rust工具链已正确安装:
rustc --version - 更新Rust:
rustup update - 清理缓存:
cargo clean
- 检查Chrome/Chromium是否已安装
- 确保网络连接正常
- 检查Microsoft Graph API凭证是否有效
- 检查邮箱和refresh_token是否有效
- 确认Microsoft Graph API权限配置正确
- 检查目标网站是否可访问
- 查看错误原因字段获取详细信息
- 合法使用: 本工具仅供学习和研究使用,请遵守相关法律法规和网站服务条款
- 频率限制: 建议合理控制注册频率,避免被目标网站限制
- 数据备份: 重要数据请及时备份
- 安全存储: 妥善保管生成的密码和账号信息
- Rust代码遵循官方风格指南
- React组件使用函数式组件和Hooks
- TypeScript严格模式
- 使用ESLint和Prettier格式化代码
# Rust测试
cd src-tauri
cargo test
# 前端测试
npm test- Fork项目
- 创建特性分支
- 提交变更
- 推送到分支
- 创建Pull Request
本项目仅供学习交流使用。
- Tauri - 跨平台桌面应用框架
- React - UI框架
- headless_chrome - Rust浏览器自动化库
- Lucide - 图标库
- ✨ 新增 IMAP + OAuth 邮件接收模式
- ✨ 支持在 Graph API 和 IMAP 两种模式间切换
- 🔧 优化邮件验证码获取逻辑
- 📝 更新文档说明
- ✨ 初始版本发布
- ✅ 完整的账号管理功能
- ✅ 数据导入导出
- ✅ 自动注册流程
- ✅ Microsoft Graph API邮件获取
- ✅ 浏览器指纹保护
- ✅ 现代化UI设计
- ✅ 亮色/暗黑主题切换
- ✅ 隐藏式标题栏
注册成功后,可以自动生成 Kiro IDE 桌面授权文件,实现快速登录 Kiro IDE。
-
Social 登录 (Google/GitHub/Apple)
- 使用 OAuth 2.0 PKCE 流程
- 生成 accessToken 和 refreshToken
- 包含 profileArn 信息
-
IdC 登录 (AWS Builder ID)
- 使用 AWS SSO OIDC 设备授权流程
- 生成客户端注册信息
- 包含 clientId、clientSecret 和 clientIdHash
- 注册账号: 导入账号并完成注册
- 生成授权: 注册成功后自动弹出授权对话框
- 选择方式: 选择 Social 或 IdC 授权方式
- 生成文件: 点击"生成授权文件"按钮
- 启动 IDE: 授权文件已保存,直接启动 Kiro IDE 即可登录
- Windows:
C:\Users\{用户名}\.aws\sso\cache\kiro-auth-token.json - macOS/Linux:
~/.aws/sso/cache/kiro-auth-token.json
# 1. 启动应用
npm run tauri dev
# 2. 注册账号
# 3. 在弹出的对话框中生成授权
# 4. 启动 Kiro IDE📚 完整文档索引: docs/INDEX.md
快速链接:
后端模块:
src-tauri/src/kiro_auth.rs- 核心授权模块src-tauri/src/commands.rs- Tauri 命令集成
前端组件:
src/components/KiroAuthDialog.tsx- 授权对话框src/api.ts- API 封装
新增依赖:
sha2- SHA256 哈希hex- 十六进制编码
本功能参考了 kiro-account-manager 项目的实现,学习了:
- AWS SSO OIDC 流程
- Kiro IDE 授权机制
- 文件结构和格式
- Token 管理最佳实践