GemiAutoTool 是一个基于 Python 的桌面自动化工具(PySide6 GUI),用于批量任务执行、运行监控、输入数据配置、结果查看与链接导出。
项目当前同时支持:
- GUI 模式(推荐):可视化配置与运行
- CLI 模式:用于快速启动或脚本化调用
本项目仅适用于合法、合规且已获授权的自动化测试与流程处理场景。
请勿将本项目用于任何违反目标平台服务条款、法律法规或未经授权的操作。使用者需自行承担使用风险与责任。
- 多线程任务执行(可配置并发数)
- 任务监控面板(线程状态、业务阶段、最终结果、详情)
- 结构化日志(控制台 + 文件轮转日志)
- 全局异常体系(业务异常与未知异常分层处理)
- 输入数据管理(账号 / 银行卡 / 姓名 / 邮编)
- 输出结果保存(按运行生成结果文件)
-
任务监控页面- 开始 / 停止
- 重试失败任务(仅业务失败,排除“需验证”)
- 实时日志查看
- 任务状态表与进度统计
- SheerID 链接导出(手动选择 / 一键导出最近结果)
-
数据配置页面- 图形化维护
account.txt / card.txt / name.txt / zip_code.txt - 银行卡结构化录入(表格填写 PAN / CVV / 月份 / 年份)
- 格式校验并保存
- 导入账号文件(覆盖 / 追加)
- 图形化维护
-
结果查看页面- 加载最近结果文件 / 手动选择结果文件
- 表格查看每个账号结果(账号、状态、认证链接、原始记录)
- 搜索筛选
- 仅显示有认证链接的记录
- 一键复制 / 打开认证链接
-
全局配置页面- 默认并发数
- 主题模式(自动 / 亮色 / 暗色)
- 日志自动滚动
- 启动前自动清空任务表
- 输入目录 / 输出目录(可编辑、可选择、可本地持久化)
- 使用
logging替代print - 控制台彩色日志(按级别着色)
- 文件轮转日志(
logs/runtime.log) - 多线程
task_name上下文日志
GemiAutoTool/
├─ input/ # 输入数据目录(可在 UI 中改为其他目录)
├─ output/ # 输出结果目录(可在 UI 中改为其他目录)
├─ logs/ # 运行日志目录
├─ src/GemiAutoTool/
│ ├─ actions/ # 自动化动作(登录、订阅检测、支付)
│ ├─ config/ # 默认配置与路径定义
│ ├─ domain/ # 数据模型(账号、支付信息、结果)
│ ├─ services/ # 输入/输出/浏览器/支付数据等服务
│ ├─ tasks/ # 线程任务逻辑
│ ├─ ui/ # PySide6 UI(已拆分模块)
│ ├─ app_controller.py # CLI / GUI 共用流程编排层
│ ├─ logging_config.py # 日志配置
│ ├─ exceptions.py # 全局异常定义
│ ├─ main.py # CLI 入口
│ └─ run_gui.py # GUI 入口
└─ tools/
├─ build_exe.ps1 # Windows EXE 打包脚本(PyInstaller)
├─ build_installer.ps1 # Windows 安装包打包脚本(Inno Setup)
└─ generate_app_icon_ico.py # SVG -> ICO 图标生成脚本
- 操作系统:Windows(推荐,项目当前主要在 Windows 环境使用)
- Python:
3.10+(建议3.11 ~ 3.13) - Chrome 浏览器(与
undetected-chromedriver配合)
git clone https://github.com/mibgb65-cloud/GemiAutoTool.git
cd GemiAutoToolpython -m venv .venv
.venv\Scripts\activate
pip install -r requirements.txt如果 GUI 启动报错提示缺少 PySide6,可单独安装:
pip install PySide6PowerShell:
$env:PYTHONPATH = "src"
python -m GemiAutoTool.run_gui或直接运行:
python src\GemiAutoTool\run_gui.py$env:PYTHONPATH = "src"
python -m GemiAutoTool.main项目已内置 PyInstaller 打包配置,支持生成可发布的 Windows GUI 可执行文件。
构建脚本特性(tools/build_exe.ps1):
- 自动安装
requirements.txt中依赖 - 自动安装/检查
pyinstaller - 自动检查关键依赖(如
PySide6、selenium、undetected-chromedriver) -Clean时清理build/与dist/(含重试删除逻辑)
.venv\Scripts\activate
powershell -ExecutionPolicy Bypass -File .\tools\build_exe.ps1输出目录(推荐发布目录):
dist\GemiAutoTool\
该目录内会包含:
GemiAutoTool.exe- PyInstaller 运行时依赖文件
- 自动创建的
input/,output/,logs/目录(构建脚本会预创建)
powershell -ExecutionPolicy Bypass -File .\tools\build_exe.ps1 -Clean浏览器自动化(Selenium / undetected-chromedriver)在
onefile模式下更容易遇到杀软误报、临时目录权限或驱动运行问题,建议优先使用onedir。
powershell -ExecutionPolicy Bypass -File .\tools\build_exe.ps1 -OneFile输出目录:
dist\
.venv\Scripts\activate
pip install pyinstaller
pyinstaller --noconfirm --clean .\GemiAutoTool.specGemiAutoTool.spec- 包含 GUI 入口
- 包含图标资源
app_icon.ico - 收集
GemiAutoTool/ui/assets - 显式收集
PySide6 / shiboken6运行时资源 - 显式收集
selenium / undetected_chromedriver / selenium_stealth模块与动态导入
打包后程序会自动以 exe 所在目录 作为运行根目录,用于:
input/output/logs/ui_settings.json
这样不会把配置和结果写到 PyInstaller 的临时解压目录。
推荐优先使用 OneDir 构建产物发布:
- 直接将整个目录
dist\GemiAutoTool\压缩为 ZIP 发布 - 不要只发布
GemiAutoTool.exe(onedir依赖旁边的运行时文件)
推荐命名示例:
GemiAutoTool-win-x64-v1.0.0.zip
后续如需安装包,可再使用 Inno Setup / NSIS 基于 dist\GemiAutoTool\ 制作安装程序。
项目已提供 Inno Setup 安装包脚本,可将 PyInstaller onedir 产物封装为安装向导式 .exe。
- 已成功生成
PyInstalleronedir 产物(dist\GemiAutoTool\) - 已安装
Inno Setup 6(包含ISCC.exe)
官网:https://jrsoftware.org/isinfo.php
默认安装后 ISCC.exe 常见路径:
C:\Program Files (x86)\Inno Setup 6\ISCC.exe
powershell -ExecutionPolicy Bypass -File .\tools\build_installer.ps1脚本行为:
- 自动检查
dist\GemiAutoTool\GemiAutoTool.exe是否存在 - 自动查找
ISCC.exe(常见安装路径或系统 PATH) - 使用
packaging\GemiAutoTool.iss构建安装程序
输出目录:
dist_installer\
powershell -ExecutionPolicy Bypass -File .\tools\build_installer.ps1 -Version 1.0.0生成示例:
dist_installer\GemiAutoTool-Setup-1.0.0.exe
powershell -ExecutionPolicy Bypass -File .\tools\build_installer.ps1 -Clean -Version 1.0.0"C:\Program Files (x86)\Inno Setup 6\ISCC.exe" /Qp /DAppVersion=1.0.0 .\packaging\GemiAutoTool.iss- 安装目录默认使用当前用户可写路径(避免
Program Files写入权限问题):{localappdata}\Programs\GemiAutoTool
- 安装后可选创建桌面快捷方式
- 安装完成后可直接启动程序
- 卸载器自动注册
- 默认英文安装界面(如本机 Inno Setup 安装了中文语言包,可自行在
.iss中启用)
之所以默认安装到用户目录,而不是
Program Files,是因为程序运行时会在安装目录下写入input/output/logs/ui_settings.json。
- 启动 GUI
- 打开
全局配置页面 - 设置并保存:
- 输入目录
- 输出目录
- 默认并发数
- 主题模式(自动 / 亮色 / 暗色)
- 打开
数据配置页面,录入或导入数据 - 点击
校验并保存 - 返回
任务监控页面,点击开始 - 完成后到
结果查看页面查看每个账号的结果与认证链接
输入目录下需要以下文件(默认在项目根目录 input/,也可以在 UI 全局配置中改路径):
account.txtcard.txtname.txtzip_code.txt
每行一个账号,格式:
email----password----recovery_email----2fa_secret
示例:
user1@example.com----password123----recovery1@example.com----JBSWY3DPEHPK3PXP
user2@example.com----password456----recovery2@example.com----KRSXG5DSNFXGOIDB
说明:
2fa_secret为 TOTP 密钥(如有)- 格式错误的行在解析时会被忽略,并记录日志告警
项目内部使用固定格式,但 GUI 已提供结构化表格录入,无需手写。
文件格式(每行一张卡):
[pan:4111111111111111, cvv:123, exp_month:10/30]
字段说明:
pan: 卡号(12-19 位数字)cvv: 3 或 4 位数字exp_month:MM/YY或MM/YYYY
每行一个姓名:
Alice Test
Bob Smith
每行一个邮编:
10001
94105
输出目录下会生成运行结果文件,例如:
subscription_results_20260224_003213.txt
常见记录格式:
- 已订阅:
user@example.com----已订阅
- 含认证链接(待进一步认证):
user@example.com__https://services.sheerid.com/verify/xxxx/?verificationId=yyyy
- 业务失败:
user@example.com----登录失败
user@example.com----支付失败(...)
结果查看 页签可以直接解析结果文件并按账号展示:
- 账号
- 状态
- 认证链接
- 来源(文件名:行号)
- 原始记录
支持操作:
加载最近结果选择结果文件刷新当前文件搜索账号/状态/链接仅看有认证链接复制认证链接打开认证链接
任务监控 页面提供 重试失败任务 按钮。
重试规则:
- 会重试:业务失败(例如登录失败、支付失败)
- 不会重试:
需验证 - 不会重试:线程崩溃(
崩溃)
说明:
- 重试是基于当前任务表中的“最后一次结果状态”进行筛选
- 若清空任务表后再点重试,将没有可重试项
项目支持从结果文件中提取 https://services.sheerid.com/verify/... 链接并导出为新 TXT(每行一个链接):
导出 SheerID 链接(手动选择结果文件)一键导出最近结果链接
也可通过服务层调用:
from GemiAutoTool.services import SubscriptionOutputService
svc = SubscriptionOutputService(output_dir="output")
path, count = svc.export_sheerid_verify_links(
source_file_path="output/subscription_results_xxx.txt"
)GUI 全局配置会保存到项目根目录:
ui_settings.json
当前持久化项:
max_concurrentauto_scroll_logclear_task_table_on_starttheme_mode(auto/light/dark)input_diroutput_dir
兼容性:
- 旧版本
dark_mode: true/false会自动迁移为theme_mode
- 控制台日志:彩色输出(按级别)
- 文件日志:默认
logs/runtime.log(轮转)
PowerShell 示例:
$env:GEMI_LOG_LEVEL = "DEBUG"
$env:GEMI_LOG_COLOR = "1"
$env:GEMI_LOG_DIR = "logs"常见变量:
GEMI_LOG_LEVELGEMI_LOG_FILE_LEVELGEMI_LOG_COLORGEMI_LOG_DIRGEMI_LOG_FILEGEMI_LOG_MAX_BYTESGEMI_LOG_BACKUP_COUNT
安装 GUI 依赖:
pip install PySide6安装自动化依赖:
pip install undetected-chromedriver或直接重新安装全部依赖:
pip install -r requirements.txt这通常表示打包时使用的虚拟环境缺少运行依赖。
请先在打包环境中安装完整依赖后重新打包:
pip install -r requirements.txt
powershell -ExecutionPolicy Bypass -File .\tools\build_exe.ps1 -Clean现在
tools/build_exe.ps1已会自动执行pip install -r requirements.txt,建议统一用该脚本打包。
这是 windowed 模式下控制台流对象为空导致的历史问题。
项目已在日志模块中处理该兼容逻辑。如果仍遇到该报错,请确认你运行的是重新打包后的最新 exe。
常见原因:
- 打包产物
GemiAutoTool.exe仍在运行 - 资源管理器打开了
dist\GemiAutoTool\_internal\...并占用 DLL - 杀毒软件临时占用 DLL
处理方式:
taskkill /IM GemiAutoTool.exe /F
powershell -ExecutionPolicy Bypass -File .\tools\build_exe.ps1 -Clean请检查:
- 输出目录配置是否正确(
全局配置页面) - 是否已生成
subscription_results_*.txt - 结果文件是否为空
已针对 QGroupBox 标题裁切问题做过样式修复。如果仍有问题,请反馈:
- 系统缩放比例(100% / 125% / 150%)
- 操作系统版本
- PySide6 版本
ui/main_window.py 已拆分为多个 mixin 模块,便于维护:
_main_window_monitor.py_main_window_data.py_main_window_results.py_main_window_export.py_main_window_config.py_main_window_theme.py
python -m compileall src\GemiAutoTool本项目使用 MIT License,详见 LICENSE。