diff --git a/browser_automation.py b/browser_automation.py index 7e5f229..af338d6 100644 --- a/browser_automation.py +++ b/browser_automation.py @@ -359,7 +359,7 @@ def init_browser(max_retries: int = BROWSER_MAX_RETRIES) -> ChromiumPage: fingerprint = None if BROWSER_RANDOM_FINGERPRINT: fingerprint = get_random_fingerprint() - log.step(f"随机指纹: {fingerprint['webgl_renderer'][:40]}...") + log.info(f"指纹: {fingerprint['webgl_renderer'][:45]}... | {fingerprint['screen']['width']}x{fingerprint['screen']['height']}", icon="config") else: # 使用默认指纹 fingerprint = { @@ -369,7 +369,7 @@ def init_browser(max_retries: int = BROWSER_MAX_RETRIES) -> ChromiumPage: "webgl_renderer": "ANGLE (NVIDIA, NVIDIA GeForce RTX 3060 Direct3D11 vs_5_0 ps_5_0)", "screen": {"width": 1920, "height": 1080} } - log.step("使用默认指纹") + log.info("指纹: 默认 (RTX 3060, 1920x1080)", icon="config") last_error = None is_linux = platform.system() == "Linux" diff --git a/email_service.py b/email_service.py index 4fa73d8..63fc750 100644 --- a/email_service.py +++ b/email_service.py @@ -148,10 +148,20 @@ class GPTMailService: def _get_headers(self, api_key: str = None) -> dict: """获取请求头 (支持指定 Key 或轮询)""" key = api_key or self._fixed_key or get_next_gptmail_key() + self._current_key = key # 保存当前使用的 key return { "X-API-Key": key, "Content-Type": "application/json" } + + def _get_key_display(self) -> str: + """获取当前 key 的脱敏显示""" + key = getattr(self, '_current_key', None) + if not key: + return "未知" + if len(key) > 10: + return f"{key[:4]}...{key[-4:]}" + return key[:4] + "..." def generate_email(self, prefix: str = None, domain: str = None, api_key: str = None) -> tuple[str, str]: """生成临时邮箱地址 @@ -337,7 +347,7 @@ class GPTMailService: Returns: tuple: (code, error, email_time) - 验证码、错误信息、邮件时间 """ - log.info(f"GPTMail 等待验证码邮件: {email}", icon="email") + log.info(f"GPTMail 等待验证码: {email} (Key: {self._get_key_display()})", icon="email") # 用于存储邮件时间的闭包变量 email_time_holder = [None] diff --git a/run.py b/run.py index 91d88ac..a64b125 100644 --- a/run.py +++ b/run.py @@ -531,13 +531,49 @@ def process_accounts(accounts: list, team_name: str, team_index: int = 0, return results +def _print_system_config(): + """打印当前系统配置""" + from config import ( + EMAIL_PROVIDER, AUTH_PROVIDER, ACCOUNTS_PER_TEAM, + INCLUDE_TEAM_OWNERS, BROWSER_RANDOM_FINGERPRINT, + S2A_API_BASE, CPA_API_BASE, CRS_API_BASE, + PROXY_ENABLED, PROXIES + ) + + log.section("系统配置") + log.info(f"邮箱服务: {EMAIL_PROVIDER}", icon="email") + + # 授权服务 + if AUTH_PROVIDER == "s2a": + auth_url = S2A_API_BASE or "未配置" + elif AUTH_PROVIDER == "cpa": + auth_url = CPA_API_BASE or "未配置" + else: + auth_url = CRS_API_BASE or "未配置" + log.info(f"授权服务: {AUTH_PROVIDER.upper()} ({auth_url})", icon="auth") + + log.info(f"每 Team 账号: {ACCOUNTS_PER_TEAM}", icon="account") + log.info(f"Owner 入库: {'✓ 开启' if INCLUDE_TEAM_OWNERS else '✗ 关闭'}", icon="config") + log.info(f"随机指纹: {'✓ 开启' if BROWSER_RANDOM_FINGERPRINT else '✗ 关闭'}", icon="config") + + if PROXY_ENABLED and PROXIES: + log.info(f"代理: 已启用 ({len(PROXIES)} 个)", icon="proxy") + else: + log.info("代理: 未启用", icon="proxy") + + log.separator() + + def run_all_teams(): """主函数: 遍历所有 Team""" global _tracker, _current_results, _shutdown_requested log.header("ChatGPT Team 批量注册自动化") + + # 打印系统配置 + _print_system_config() + log.info(f"共 {len(TEAMS)} 个 Team 待处理", icon="team") - log.info(f"每个 Team 邀请 {ACCOUNTS_PER_TEAM} 个账号", icon="account") log.info(f"统一密码: {DEFAULT_PASSWORD}", icon="code") log.info("按 Ctrl+C 可安全退出并保存进度") log.separator() diff --git a/telegram_bot.py b/telegram_bot.py index ccd9631..ee1f3c2 100644 --- a/telegram_bot.py +++ b/telegram_bot.py @@ -43,6 +43,7 @@ from config import ( S2A_GROUP_NAMES, S2A_GROUP_IDS, S2A_ADMIN_KEY, + BROWSER_RANDOM_FINGERPRINT, ) from utils import load_team_tracker, get_all_incomplete_accounts from bot_notifier import BotNotifier, set_notifier, progress_finish @@ -365,6 +366,9 @@ class ProvisionerBot: # Owner 入库状态 include_owners_status = "✅ 已开启" if INCLUDE_TEAM_OWNERS else "❌ 未开启" + + # 随机指纹状态 + fingerprint_status = "✅ 已开启" if BROWSER_RANDOM_FINGERPRINT else "❌ 未开启" lines = [ "⚙️ 系统配置", @@ -377,6 +381,9 @@ class ProvisionerBot: f" 地址: {auth_url}", f" Owner 入库: {include_owners_status}", "", + "🌐 浏览器", + f" 随机指纹: {fingerprint_status}", + "", "👥 账号设置", f" 每 Team 账号数: {ACCOUNTS_PER_TEAM}", f" team.json 账号: {len(TEAMS)}", @@ -385,6 +392,7 @@ class ProvisionerBot: f" 状态: {proxy_info}", "", "💡 提示:", + "/fingerprint - 切换随机指纹", "/include_owners - 切换 Owner 入库", "/s2a_config - 配置 S2A 参数", ] @@ -500,6 +508,7 @@ class ProvisionerBot: AUTH_PROVIDER as new_auth_provider, INCLUDE_TEAM_OWNERS as new_include_owners, ACCOUNTS_PER_TEAM as new_accounts_per_team, + BROWSER_RANDOM_FINGERPRINT as new_random_fingerprint, ) lines = [ @@ -512,6 +521,7 @@ class ProvisionerBot: f" 邮箱服务: {new_email_provider}", f" 授权服务: {new_auth_provider}", f" Owner 入库: {'✅' if new_include_owners else '❌'}", + f" 随机指纹: {'✅' if new_random_fingerprint else '❌'}", f" 每 Team 账号: {new_accounts_per_team}", ]