软件功能列表

软件名称:旷世 GPT image2生成


定位:ChatGPT 多账号隔离启动与自动登录工具。

账号管理

  • 手动添加账号,支持填写邮箱和可选密码。
  • 批量导入 TXT 账号文件。
  • 支持识别 邮箱----密码----其他内容、制表符、空格、||== 等分隔格式。
  • 自动校验邮箱格式。
  • 自动去重,重复账号可更新密码。
  • 支持搜索邮箱。
  • 支持全选、取消选择、移除账号。
  • 支持导出邮箱列表。
  • 显示账号状态、最近启动时间、隔离目录名称。

浏览器启动

  • 支持启动选中的多个账号窗口。
  • 每个账号使用独立浏览器配置目录,互不串号。
  • 支持自动检测浏览器。
  • 支持指定 Microsoft Edge。
  • 支持指定 Google Chrome。
  • 支持自定义浏览器 exe 路径。
  • 支持自定义打开地址,默认 https://chatgpt.com/
  • 支持设置多窗口启动间隔。

自动登录

  • 可开关自动登录功能。
  • 可设置单步超时时间。
  • 自动打开 ChatGPT。
  • 自动点击 ChatGPT 登录按钮。
  • 自动点击“使用 Google 账户继续”。
  • 自动填写 Google 邮箱。
  • 自动填写 Google 密码。
  • 自动点击 Google 下一步。
  • 支持已登录状态检测,已登录则跳过登录流程。
  • 无密码账号自动改为普通启动模式。

中断续接规则

  • 支持 Google 已保存账号选择页:出现 Choose an account 时,自动点击当前账号本身。
  • 支持注册中断后的 Google 授权页:自动点击 Continue
  • 支持 Google Workspace 条款页:自动点击蓝色向下箭头或滚到底部,再点击“我了解”。
  • 支持 OpenAI 年龄页:自动填写年龄并点击“完成账户创建”。
  • 支持最后的“继续 / Continue / Done / Get started”按钮自动点击。

本地数据

  • 账号和设置保存在本地 %LOCALAPPDATA%\KuangShiGptImage2
  • 每个账号独立配置目录保存在 profiles 文件夹。
  • 可打开选中账号配置目录。
  • 可清理选中账号配置目录。
  • 可打开软件数据目录。

安全提示

  • 密码仅保存在本地 JSON 文件,不上传服务器。
  • 密码为本地明文保存,需要保护好电脑环境。
  • 遇到验证码、二次验证、风控验证时,需要人工处理。
  • 下载地址

        QueueSave();
    }

    private void ImportAccounts()
    {
        using var dialog = new OpenFileDialog
        {
            Title = "导入账号 TXT",
            Filter = "Text files (*.txt)|*.txt|All files (*.*)|*.*",
            Multiselect = false
        };

        if (dialog.ShowDialog(this) != DialogResult.OK)
        {
            return;
        }

        var lines = File.ReadAllLines(dialog.FileName, Encoding.UTF8);
        var imported = 0;
        var skipped = 0;
        var duplicates = 0;
        var seen = _accounts.Select(a => a.Email).ToHashSet(StringComparer.OrdinalIgnoreCase);

        foreach (var line in lines)
        {
            var parsed = ParseImportLine(line);
            if (parsed is null)
            {
                skipped++;
                continue;
            }

            if (!seen.Add(parsed))
            {
                duplicates++;
                continue;
            }

            AddAccountRecord(new AccountRecord
            {
                Email = parsed,
                Selected = true,
                Status = "已导入",
                Notes = "导入时已忽略密码字段"
            });
            imported++;
        }

        SaveAll();
        UpdateSummary();
        MessageBox.Show(
            this,
            $"导入完成:新增 {imported} 个,重复 {duplicates} 个,跳过 {skipped} 行。",
            "导入结果",
            MessageBoxButtons.OK,
            MessageBoxIcon.Information);
    }

    private static string? ParseImportLine(string line)
    {
        var raw = (line ?? string.Empty).Trim();
        if (string.IsNullOrWhiteSpace(raw) || raw.StartsWith("#", StringComparison.Ordinal))
        {
            return null;
        }

        var first = raw.Split(["----"], StringSplitOptions.None)[0].Trim();
        if (!EmailRegex.IsMatch(first))
        {
            var match = Regex.Match(raw, @"[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,}", RegexOptions.IgnoreCase);
            first = match.Success ? match.Value : first;
        }

        return EmailRegex.IsMatch(first) ? first.ToLowerInvariant() : null;
    }

    private void AddAccount()
    {
        using var dialog = new AddAccountDialog();
        if (dialog.ShowDialog(this) != DialogResult.OK)
        {
            return;
        }

        var email = dialog.Email.Trim().ToLowerInvariant();
        if (!EmailRegex.IsMatch(email))
        {
            MessageBox.Show(this, "邮箱格式不正确。", "无法添加", MessageBoxButtons.OK, MessageBoxIcon.Warning);
            return;
        }

        if (_accounts.Any(a => string.Equals(a.Email, email, StringComparison.OrdinalIgnoreCase)))
        {
            MessageBox.Show(this, "这个邮箱已经存在。", "无法添加", MessageBoxButtons.OK, MessageBoxIcon.Information);
            return;
        }

        AddAccountRecord(new AccountRecord
        {
            Email = email,
            Selected = true,
            Status = "已添加"
        });
        SaveAll();
    }

    private void AddAccountRecord(AccountRecord account)
    {
        account.PropertyChanged += AccountChanged;
        _accounts.Add(account);
    }

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐