这个项目能做什么
## 项目简介
quick-cita-cr 是一个用于监控哥斯达黎加 Educación Vial 门户网站预约开放情况的个人工具。它使用您自己的账户凭据登录,检查您配置的实际测试(practical-test)分支,记录已查看的内容,并在出现新日期或更早日期时通知您。
README 指出,该项目已在实时门户上进行了本地验证。同时提到一个已知限制:在验证过程中,纯无头(headless)模式无法可靠地解决 Cloudflare 挑战,因此建议在无人值守部署时使用有头(headed)模式、虚拟显示器或预热的持久配置文件。
## 报告的功能
README 列出了以下功能:
- 分分支的预约监控。
- 针对新日期、更早的最佳日期以及可配置的“快速窗口”天数的警报。
- 使用 SQLite 状态记录,确保重复运行仅在发生有意义的变化时发出警报。
- 使用应用专用密码的 Gmail SMTP 通知。
- 持久化 Chrome 配置文件以保留 Cookie 和会话状态。
- 模拟人类的输入、点击、延迟和滚动。
- 通过 `undetected_chromedriver` 实现 Chrome 反检测标志。
- 基于 `uv` 的 Python 项目,包含测试、代码检查(linting)和类型检查。
- 适用于 Linux / Oracle Cloud 的 systemd 用户定时器模板。
README 的状态部分显示:有头模式下可解决 Cloudflare 挑战,持久配置文件可实现登录,实际测试流程可到达分支可用性界面,预约日期可被提取并与 SQLite 状态对比,且电子邮件通知格式运行正常。
## 要求
- Python 3.12 或 3.13
- `uv`
- Chrome 或 Chrome for Testing
- 一个 Educación Vial 账户
- 实际测试流程所需的收据编号
- (可选)用于电子邮件通知的 Gmail 应用专用密码
## 快速上手
克隆仓库,运行 `uv sync`,然后运行 `uv run quick-cita init`。密钥存储在 `~/.config/quick-cita-cr/secrets.env`(README 建议执行 `chmod 600`),分支和浏览器设置存储在 `~/.config/quick-cita-cr/config.yaml` 中。
可通过 `uv run quick-cita doctor` 进行诊断。使用 `uv run quick-cita check --headed` 可运行单次可见检查,使用 `uv run quick-cita watch --headed` 可进行持续监控。此外还有一个 `demo` 命令,可打开可见浏览器,使用持久配置文件,检查配置的分支,并在没有新警报事件时打印预约摘要。
## 配置区域
YAML 配置涵盖三个组:
- **appointment** —— 驾照类别、分支列表、`quick_window_days`,以及首次运行、新日期、更早最佳日期和窗口内通知的开关。
- **schedule** —— 检查间隔(分钟)、抖动百分比、暂停前的最大失败次数以及失败后的暂停时长。
- **browser** —— 无头标志、Chrome 可执行文件路径、配置文件目录和超时时间。
通知目前支持通过 Gmail SMTP(主机、端口、发件地址、收件人列表)发送电子邮件。ID 类型、身份证号、密码、收据编号和电子邮件凭据等密钥从环境变量或密钥文件中读取。
## 无 sudo 安装 Chrome
对于没有系统安装 Linux Chrome 且没有 `sudo` 权限的机器,README 提供了一套流程:将 Chrome for Testing 下载到 `~/.local/share/quick-cita-cr/chrome-for-testing`,使用简短的 Python 脚本解压,并为二进制文件和 crashpad 处理程序标记可执行权限。随后将配置中的 `executable_path` 指向该解压后的二进制文件。
## 开发与布局
开发命令包括 `uv sync --all-groups`、`ruff format`、`ruff check`、针对 `src/quick_cita_cr` 的 `mypy` 以及 `pytest`。源代码树将浏览器自动化(驱动、Cloudflare 求解器、人类行为助手)、通知后端、Typer CLI、配置和密钥模型、门户客户端、预约日期解析器、SQLite 存储以及比较快照并检测事件的监控器分组成组。测试、GitHub Actions CI、systemd 部署模板以及部署/安全文档也随之提供。
## 安全注意事项
README 警告不要提交凭据、`.env` 文件、SQLite 状态、浏览器配置文件、Cookie、截图、日志或已认证的 HTML,并引导用户参阅 `docs/security.md`。
## 许可证
MIT。
评论
0 评分人数达到10人后显示
登录后参与讨论。