包详细信息

clash-autosub

engty1.2kMIT1.4.3

基于 Node.js + Puppeteer 的 VPN 订阅全自动化工具。智能检测订阅API模式,首次登录后自动保存认证配置,后续更新使用纯HTTP请求实现静默后台执行(< 1秒),彻底解决动态订阅地址的手动维护负担。

vpn, subscription, automation, clash

自述文件

Clash AutoSub

基于 Node.js + Puppeteer 的 VPN 订阅全自动化工具

npm version License: MIT Node.js TypeScript

📋 简介

Clash AutoSub 是一个命令行全自动化工具,解决动态 VPN 订阅地址频繁变更导致的手动维护负担。通过 Puppeteer 控制系统 Chrome 浏览器,实现智能登录检测和自动订阅地址提取,自动更新 Clash 配置文件。

核心特性

  • 🎯 完全自动化 - 用户只需登录一次,后续自动完成所有操作
  • 智能API检测 - 首次登录时自动分析网络请求,识别订阅API模式
  • 🔇 静默后台更新 - 检测到API配置后,后续更新无需启动浏览器(< 1秒完成)
  • 🧠 智能登录检测 - 多种检测策略(URL/元素/网络/Cookie)
  • 🤖 AI 辅助验证 - 可选的 AI 分析订阅响应内容,智能判断有效性
  • 🍪 Cookie 持久化 - 登录状态加密存储于 ~/.autosub/credentials/,自动复用
  • 🔄 自动校验会话 - 启动时刷新各站点 Cookie 有效性
  • 🌐 系统 Chrome - 使用本地已安装的 Chrome,无需下载 Chromium
  • 🛡️ 智能部分更新 - 成功的更新,失败的保留原配置
  • 📡 订阅地址验证 - HTTP状态码 + AI内容分析 + YAML格式检查
  • 🔧 向导式配置 - 交互式 CLI,自动检测 Clash 路径
  • 🔒 本地化安全 - 凭证加密存储,零云端上传

工作原理

三级订阅提取策略(自动降级):

  1. HTTP API 模式(优先,< 1秒)

    • 首次登录时自动检测订阅API端点、认证方式和数据结构
    • 保存API配置到本地,后续使用纯HTTP请求获取订阅
    • 支持多种认证:Cookie、localStorage Token、混合认证
    • 完全静默后台执行,不启动浏览器
  2. 缓存地址模式(备用)

    • 如果API失败,使用上次成功的订阅地址
    • 适用于订阅地址有一定有效期的站点
  3. 浏览器模式(最后手段)

    • 启动浏览器,自动注入凭证登录
    • 智能检测登录状态,自动提取订阅地址
    • 使用AI辅助识别订阅按钮(可选)

性能提升

  • 更新速度:5-10秒 → < 1秒
  • 内存占用:几百MB → 几KB
  • 用户体验:完全后台静默执行

🚀 快速开始

前置要求

  • Node.js >= 18.0.0
  • Chrome 浏览器(stable/canary/beta/dev)
  • (可选)DeepSeek 或 OpenRouter API Key(用于AI辅助)

安装

# 使用 npx(推荐,无需安装)
npx clash-autosub

# 或全局安装
npm install -g clash-autosub

基本使用

# 打开交互式菜单(推荐)
clash-autosub
# 或
autosub

# 直接命令(无交互)
autosub update          # 静默更新所有站点
autosub update 红杏云   # 更新指定站点(会打开浏览器)
autosub status          # 查看站点状态
autosub refresh-credentials --headless --all  # 刷新所有站点凭证

首次配置

  1. 配置 Clash 路径

    autosub
    # 选择 "1. Clash 配置路径"
    # 输入你的 Clash 配置文件路径,如:
    # ~/.config/clash.meta/config.yaml
  2. 配置 AI(可选)

    # 选择 "2. AI 智能识别"
    # 选择 DeepSeek 或 OpenRouter
    # 输入 API Key
  3. 添加订阅站点

    # 选择 "3. 站点管理"
    # 选择 "1. 添加站点"
    # 输入站点名称和URL
    # 浏览器会自动打开,完成登录
    # 工具会自动检测并保存API配置
  4. 更新订阅

    # 选择 "4. 更新订阅"
    # 首次会使用浏览器模式
    # 之后会自动使用静默的HTTP API模式(< 1秒)

📖 详细功能

交互式菜单

┌──────────────────────────────────┐
│   Clash AutoSub - 订阅管理工具   │
└──────────────────────────────────┘

1. Clash 配置路径(已配置|未配置)
2. AI 智能识别(已开启|未开启)
3. 站点管理(3)
4. 更新订阅
5. 查看状态
6. 刷新凭证
7. 退出

站点管理

  • 添加站点 - 自动检测API配置,保存认证信息
  • 查看站点 - 显示订阅地址、凭证状态、最后更新时间
  • 编辑站点 - 修改站点配置
  • 删除站点 - 移除站点及其凭证
  • 测试站点 - 验证订阅地址有效性

凭证管理

  • 自动刷新 - 更新失败时自动刷新凭证并重试
  • 手动刷新 - 使用 refresh-credentials 命令
  • 凭证状态 - 实时显示Cookie有效期
  • 支持类型
    • Cookie认证(适用于大多数站点)
    • localStorage Token认证(如牛牛云)
    • sessionStorage认证
    • 混合认证

AI 辅助功能

AI Provider 支持

  • DeepSeek(推荐,成本低)
  • OpenRouter

AI 用途

  1. 订阅验证 - 分析HTTP响应内容,识别错误消息
  2. 按钮识别(可选)- AI视觉分析识别订阅按钮

配置方法

autosub
# 选择 "2. AI 智能识别"
# 填写 API Key

🛠️ 命令行参考

clash-autosubautosub

打开交互式菜单(推荐使用)

autosub update [siteId]

更新 Clash 订阅

  • 不带参数:静默模式更新所有站点(< 1秒)
  • 带站点ID:更新指定站点(可能打开浏览器)
autosub update           # 静默更新所有
autosub update 红杏云    # 更新红杏云

autosub status

查看所有站点状态,包括:

  • 订阅地址
  • 凭证有效期
  • 最后更新时间
  • 提取模式(API/浏览器)

autosub refresh-credentials [siteId]

刷新站点Cookie(保持登录)

选项:

  • --headless - 无头模式运行(后台,不显示浏览器)
  • --all - 刷新所有站点
  • --force - 强制刷新(包括不需要的)
autosub refresh-credentials --headless --all
autosub refresh-credentials 红杏云

autosub setup

初始化配置(等同于交互式菜单中的添加站点)

autosub uninstall

卸载并清理数据

选项:

  • --keep-config - 保留配置文件
autosub uninstall                  # 完全卸载
autosub uninstall --keep-config    # 保留配置

📦 技术栈

类别 技术选型 说明
语言 TypeScript 5.0+ 类型安全,开发体验好
运行时 Node.js 18+ 现代 JS 特性支持
CLI 框架 CAC 轻量级命令行框架
交互提示 Inquirer.js 交互式问答系统
浏览器控制 Puppeteer-core 使用系统 Chrome,轻量高效
配置管理 js-yaml YAML 配置文件
加密存储 crypto-js 凭证加密
HTTP 客户端 Axios 静默API请求

🏗️ 项目结构

clash-autosub/
├── bin/                    # CLI 入口
│   ├── clash-autosub.js   # 主命令
│   └── autosub.js         # 别名
├── src/
│   ├── types/             # TypeScript 类型定义
│   ├── utils/             # 工具函数
│   │   ├── logger.ts      # 日志系统
│   │   └── file.ts        # 文件操作
│   ├── config/            # 配置管理
│   │   ├── manager.ts     # 配置管理器
│   │   └── schema.ts      # 配置验证
│   ├── credentials/       # 凭证管理
│   │   ├── manager.ts     # 凭证加密存储
│   │   └── cookie-expiry.ts # Cookie过期检测
│   ├── puppeteer/         # 浏览器控制
│   │   ├── browser.ts     # 浏览器管理(Chrome 检测 + 启动)
│   │   ├── login-detector.ts  # 智能登录检测
│   │   └── network.ts     # 网络请求监听
│   ├── subscription/      # 订阅抓取
│   │   ├── api-detector.ts          # API自动检测器
│   │   ├── http-api-extractor.ts    # HTTP静默提取器
│   │   ├── puppeteer-extractor.ts   # 浏览器方式提取
│   │   └── validator.ts             # 订阅验证
│   ├── ai/                # AI 辅助
│   │   ├── ai-config.ts   # AI 配置管理
│   │   └── providers/     # AI Provider 实现
│   ├── clash/             # Clash 配置更新
│   │   └── updater.ts     # 配置更新器
│   ├── service/           # 业务服务
│   │   ├── auto-update.ts       # 自动更新服务
│   │   ├── cookie-refresh.ts    # Cookie 刷新服务
│   │   └── cookie-status.ts     # Cookie 状态管理
│   └── cli/               # CLI 层
│       └── index.ts       # 命令行接口
└── dist/                  # 编译输出

🗑️ 卸载

完全卸载(删除所有数据)

# 方式 1: 使用内置卸载命令(推荐)
autosub uninstall

# 方式 2: 手动卸载
npm uninstall -g clash-autosub
rm -rf ~/.autosub

保留配置的卸载

# 卸载程序但保留配置文件(下次安装可继续使用)
autosub uninstall --keep-config

配置文件位置

  • 配置目录: ~/.autosub/
  • 配置文件: ~/.autosub/config.yaml
  • 凭证目录: ~/.autosub/credentials/(每站点一份,加密存储)
  • 日志文件: ~/.autosub/logs/
  • 备份文件: ~/.autosub/backups/(Clash配置备份)
  • 加密密钥: ~/.autosub/.key

❓ 故障排查

Chrome 浏览器未找到

错误信息: 未找到 Chrome 浏览器

解决方法:

  1. 确保已安装 Google Chrome 浏览器
  2. 检查安装路径是否符合系统默认位置:
    • macOS: /Applications/Google Chrome.app/
    • Windows: C:\Program Files\Google\Chrome\Application\chrome.exe
    • Linux: /usr/bin/google-chrome/usr/bin/chromium-browser

登录检测超时

问题: 系统提示"登录检测超时"

原因: 120秒内未检测到登录成功

解决方法:

  1. 确保在浏览器中完成登录操作
  2. 检查网络连接是否正常
  3. 查看日志文件 ~/.autosub/logs/ 了解详细错误

Cookie 过期自动刷新失败

问题: 静默更新时提示"认证已过期"

解决方法:

  1. 工具会自动尝试刷新Cookie并重试
  2. 如果自动刷新失败,使用:
    autosub refresh-credentials --headless --all
  3. 如果仍然失败,使用浏览器模式手动登录:
    autosub refresh-credentials --all

订阅地址提取失败

问题: 无法提取到订阅地址

解决方法:

  1. 检查网络连接
  2. 查看日志 ~/.autosub/logs/ 确认错误原因
  3. 尝试手动刷新凭证
  4. 如果站点改版,可能需要重新添加站点

AI 功能无法使用

问题: AI 验证失败

解决方法:

  1. 检查 API Key 是否正确
  2. 检查网络是否能访问 AI Provider
  3. AI 功能是可选的,关闭不影响核心功能

🔧 开发

环境要求

  • Node.js >= 18.0.0
  • npm >= 9.0.0
  • Chrome 浏览器

本地开发

# 克隆仓库
git clone https://github.com/engty/clash-autosub.git
cd clash-autosub

# 安装依赖
npm install

# 开发模式
npm run dev

# 构建
npm run build

# 代码检查
npm run lint

# 代码格式化
npm run format

# 类型检查
npm run typecheck

构建发布

# 构建
npm run build

# 发布到 npm
npm publish

🤝 贡献

欢迎贡献代码、报告问题或提出新功能建议!

  1. Fork 本仓库
  2. 创建特性分支 (git checkout -b feature/AmazingFeature)
  3. 提交更改 (git commit -m 'Add some AmazingFeature')
  4. 推送到分支 (git push origin feature/AmazingFeature)
  5. 开启 Pull Request

📄 开源协议

MIT License

🙏 致谢

  • Puppeteer - 强大的浏览器自动化引擎
  • DeepSeek - 高性价比的 AI API
  • 所有贡献者和用户的支持

更新日志

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

[1.4.1] - 2025-10-04

✨ 新增功能

站点兼容性测试命令

  • 新增 test 命令 - clash-autosub test <url> 测试站点兼容性
    • 自动检测登录、凭证、API配置
    • 计算兼容性评分(0-100分)
    • 评估支持的模式(HTTP API / 浏览器模式)
    • 完全不保存任何数据(只读测试)
  • AI增强报告 - 使用AI将技术报告转换成用户友好格式
    • 自动生成Markdown格式报告
    • 提供实用建议
    • AI不可用时自动降级到默认格式
  • Issue提交支持 - 输出原始JSON数据供用户提交Issue使用
  • 开发者工具 - 帮助评估新站点兼容性,改进项目支持

📝 变更详情

新增文件:

  • src/service/site-test.ts - 站点测试服务
  • src/types/test-report.ts - 测试报告类型定义
  • src/utils/test-report-formatter.ts - AI报告格式化工具

修改文件:

  • src/cli/index.ts - 添加test命令和handleSiteTest处理函数

兼容性:

  • ✅ 向后兼容 - 不影响现有功能
  • ✅ 纯测试功能 - 不修改任何配置
  • ✅ 可选AI - AI不可用时自动降级

[1.4.0] - 2025-10-04

🐛 Bug修复

localStorage认证支持修复

  • 扩展localStorage字段检测 - ApiDetector现在支持检测更多localStorage字段
    • 新增支持:info, userInfo, user-info
    • 支持大写Token字段:info.Token(不仅仅是小写token
    • 修复了牛牛云等使用info.Token字段的站点无法正确检测认证方式的问题

HttpApiExtractor凭证验证优化

  • 灵活的凭证验证 - 根据authSource类型智能验证凭证
    • cookie: 只检查cookies是否存在
    • localStorage: 只检查localStorage是否存在
    • both: 至少需要一个
  • 修复强制Cookie问题 - 之前版本错误地要求所有站点必须有Cookie,导致localStorage认证的站点(如牛牛云)无法使用

CLI命令优化

  • 版本号显示修复 - 修复 --help 显示版本号为 1.0.0 的问题,现在正确显示当前版本
  • 简化update命令 - 移除冗余的 --silent--all 选项
    • clash-autosub update - 默认静默模式更新所有站点(< 1秒)
    • clash-autosub update <siteId> - 非静默模式更新指定站点

菜单文案优化

  • 精简菜单文字 - 使菜单更加简洁易读
    • "订阅站点管理(已保存 3 站点)" → "站点管理(3)"
    • "AI 智能识别设置(已配置)" → "AI 智能识别(已开启|未开启)"
    • "Clash 路径配置(已配置)" → "Clash 配置路径(已配置)"

📝 变更详情

影响的文件:

  • src/subscription/api-detector.ts - 扩展localStorage认证字段检测
  • src/subscription/http-api-extractor.ts - 修复凭证验证逻辑
  • src/cli/index.ts - CLI命令优化和菜单文案简化

兼容性:

  • ✅ 向后兼容 - 不影响现有Cookie认证站点
  • ✅ 修复localStorage认证 - 牛牛云等站点现在可以正常工作
  • ✅ 改进用户体验 - 命令更简洁,默认行为更智能

[1.3.1] - 2025-10-03

🚀 重大改进

Cookie过期自动刷新机制

  • 智能检测 - HTTP API在遇到403/401认证失败时,自动识别Cookie过期
  • 自动修复 - 静默模式下检测到Cookie过期后,自动使用headless模式刷新Cookie
  • 无缝体验 - Cookie刷新成功后自动重试API请求,用户无需手动干预

错误处理优化

  • 结构化错误 - HttpApiExtractor现在返回带有错误代码的结构化错误信息
    • AUTH_EXPIRED: 认证已过期(403/401 + 关键词检测)
    • CREDENTIALS_NOT_FOUND: 未找到凭证文件
  • 友好提示 - 错误消息中包含具体的解决方案和CLI命令
    • 缺少凭证:autosub refresh-credentials --headless
    • 订阅地址无效:autosub add 重新配置
    • 静默模式不可用:autosub update 使用标准模式

工作流程改进

旧流程(v1.3.0):
HTTP API失败 → 直接报错 → 用户手动刷新Cookie → 重新运行

新流程(v1.3.1):
HTTP API失败 → 检测到AUTH_EXPIRED → 自动刷新Cookie → 重试成功 ✓

🐛 问题修复

解决v1.3.0静默模式失败问题

  • 问题: 静默模式下Cookie过期导致更新失败,无明确解决方案
  • 修复:
    • 自动检测403响应中的"未登录或登陆已过期"等关键词
    • 在静默模式下自动触发headless Cookie刷新
    • 刷新成功后立即重试HTTP API请求

📝 技术细节

文件变更

  • src/subscription/http-api-extractor.ts (src/subscription/http-api-extractor.ts:35-109)

    • 添加认证状态检测逻辑(401/403检测)
    • 添加关键词匹配识别Cookie过期
    • 返回结构化错误对象(带error.code)
  • src/service/auto-update.ts (src/service/auto-update.ts:229-344)

    • 添加Cookie过期检测和处理逻辑
    • 实现autoRefreshCookieInSilentMode()方法
    • 优化错误提示消息,提供具体CLI命令

[1.2.0] - 2025-10-03

✨ 新增功能

查看状态功能增强

  • 订阅地址显示 - 在"查看状态"菜单中显示各站点的订阅地址
  • Cookie 状态显示 - 在"查看状态"菜单中显示各站点的凭证有效期
  • 智能 URL 截断 - 订阅地址过长时自动截断(显示前 60 个字符)
  • 颜色状态标识 - Cookie 状态使用颜色区分(绿色/黄色/红色)

技术改进

  • forEach 改为 for...of 循环以支持异步操作
  • 复用 getCookieExpiryInfoformatExpiryInfo 函数
  • 保持与"刷新凭证"菜单一致的显示风格

用户体验提升

  • 用户可以直观查看所有站点的订阅地址
  • 用户可以快速了解各站点的凭证有效期
  • 支持 Storage 登录类型的正确显示

[1.1.1] - 2025-10-03

🐛 重大问题修复

订阅地址提取失败问题(关键修复)

  • 问题描述:AI 识别按钮后点击失败,导致剪贴板持续读取旧内容
  • 根本原因
    • 广告/弹窗遮挡层阻止按钮点击
    • 使用固定延迟代替智能等待
    • 仅使用单一点击方式,容易被拦截

修复方案

  • 遮挡层清理:自动按 ESC 键关闭广告和弹窗
  • 遮挡检测:使用 document.elementFromPoint() 检测按钮是否被遮挡
  • 多策略点击:3 种点击方式自动降级重试
    1. page.click() - Puppeteer 标准点击
    2. element.click() - DOM 直接点击(绕过遮挡层)
    3. focus + Enter - 键盘模拟点击
  • 智能等待:使用 page.waitForFunction() 等待剪贴板内容变化
    • 最长等待 10 秒
    • 每 200ms 检查一次
    • 检测到变化立即返回

Cookie 状态显示误判问题(关键修复)

  • 问题描述:使用 localStorage/sessionStorage 登录的站点显示"[无Cookie]"
  • 根本原因getCookieExpiryInfo 函数只检查 cookies,忽略了 Web Storage
  • 修复方案
    • 扩展 CookieExpiryInfo 类型,添加 'storage' 类型
    • 修改 getCookieExpiryInfo 支持检测 localStorage/sessionStorage
    • 修改 formatExpiryInfo 显示"Storage 登录(长期有效)"
  • 影响范围:所有使用 Web Storage 登录的站点(如牛牛云)都能正确显示状态

技术改进

  • 新增函数

    • closeOverlaysWithEsc() - 按 ESC 关闭遮挡层
    • waitForClipboardChange() - 智能等待剪贴板变化
    • detectElementOverlay() - 检测元素遮挡状态
    • clickElementMultiWay() - 多方式点击重试
  • 重构方法

    • clickButtonWithAI() - AI 识别点击流程增强
    • clickButtonWithTextMatching() - 文本匹配点击流程增强
    • extract() - 主流程添加预防性遮挡层清理
    • getCookieExpiryInfo() - 支持 Web Storage 凭证检测
    • formatExpiryInfo() - 支持 Storage 类型显示

日志优化

  • 详细记录每个步骤的执行情况
  • 显示剪贴板内容变化过程
  • 标注使用的点击策略

🔧 代码质量

  • 修复 TypeScript 类型错误
  • 删除未使用的变量
  • 优化错误处理逻辑

📈 预期效果

  • 订阅地址提取成功率从 ~30% 提升至 ~95%+
  • Web Storage 登录的站点状态显示正确
  • 减少用户手动干预次数
  • 提升自动化可靠性

[1.1.0] - 2025-10-03

✨ 新增功能

AI 增强

  • AI 辅助验证 - 集成 DeepSeek/OpenRouter 分析订阅响应内容
  • 智能错误检测 - 识别 {"status":"fail"} 等 JSON 错误格式
  • AI 视觉分析 - 可选的登录状态检测能力

Cookie 管理优化

  • 过期检测 - 智能检测 Cookie 过期时间
  • 自动刷新 - 支持通过访问站点刷新 Cookie
  • 多存储支持 - 支持 localStorage/sessionStorage 作为有效凭证
  • 状态实时显示 - CLI 菜单实时标注 Cookie 有效性

凭证系统增强

  • 凭证外置存储 - 每个站点独立凭证文件(~/.autosub/credentials/
  • 加密存储 - 使用 crypto-js 加密敏感信息
  • 自动检测 - 启动时自动刷新各站点凭证状态

订阅验证改进

  • SSL 证书忽略 - 支持自签名证书(curl -k 模式)
  • 内容智能分析 - HTTP 状态码 + AI 内容分析 + YAML 格式检查
  • 降级机制 - AI 不可用时自动使用规则匹配

CLI 体验优化

  • 详细日志 - 凭证捕获过程详细记录
  • 剪贴板清理 - 自动清理剪贴板避免读取旧数据
  • 错误提示优化 - 更友好的错误信息和建议

🐛 问题修复

  • 修复糖果云剪贴板读取旧数据的问题
  • 修复牛牛云 localStorage 登录状态误判
  • 修复订阅地址有效但缺少凭证文件的问题

📝 文档

  • 完善 README.md,添加 AI 功能说明
  • 更新 PRD.md 反映 Puppeteer 架构
  • 创建完整的 CHANGELOG.md
  • 移除文档中的隐私信息

🔧 代码质量

  • 完整的隐私审查
  • 删除测试文件和开发工具配置
  • 更新 .gitignore
  • 优化错误处理和降级机制

💥 破坏性变更

  • 订阅验证逻辑从单纯 HTTP 状态码检查升级为 AI 内容分析(可选配置)

[1.0.0] - 2025-10-03

🎉 首次发布

Clash AutoSub 首个稳定版本,实现基于 Puppeteer 的完全自动化 VPN 订阅管理。

✨ 新增功能

核心功能

  • 完全自动化订阅更新 - 用户只需登录一次,后续自动完成所有操作
  • 智能登录检测 - 5+ 检测策略(URL/元素/网络/Cookie/通用模式)
  • Cookie 持久化 - 登录状态本地加密存储,自动复用
  • 自动会话校验 - 启动时刷新各站点 Cookie 有效性

浏览器自动化

  • Puppeteer 集成 - 直接驱动系统 Chrome 浏览器
  • 自动 Chrome 检测 - 支持 macOS/Windows/Linux 多平台
  • 凭证捕获 - 自动捕获 Cookie/localStorage/sessionStorage
  • 网络请求监控 - 智能提取订阅 API 地址

AI 增强

  • AI 辅助验证 - 使用 DeepSeek/OpenRouter 分析订阅响应内容
  • 智能错误检测 - 识别 {"status":"fail"} 等 JSON 错误
  • AI 视觉分析 - 登录状态检测(可选)

订阅管理

  • 多站点支持 - 同时管理多个 VPN 订阅站点
  • 智能部分更新 - 成功的更新,失败的保留原配置
  • 订阅地址验证 - HTTP状态码 + AI分析 + YAML格式 + 节点数量检查
  • SSL 证书忽略 - 支持自签名证书(curl -k 模式)

Clash 集成

  • 配置自动更新 - 自动合并订阅到 Clash 配置
  • 订阅 URL 替换 - 自动更新 Clash 配置中的订阅地址
  • 配置备份 - 自动备份 Clash 配置文件

Cookie 管理

  • 过期检测 - 智能检测 Cookie 过期时间
  • 自动刷新 - 支持通过访问站点刷新 Cookie
  • 多存储支持 - 支持 localStorage/sessionStorage 作为有效凭证

CLI 交互

  • 向导式配置 - 交互式 CLI,自动检测 Clash 路径
  • 菜单驱动 - 友好的菜单界面,实时显示状态
  • 实时状态标注 - Cookie 有效性实时显示

🔧 技术架构

  • 语言: TypeScript 5.0+
  • 运行时: Node.js 18+
  • 浏览器控制: Puppeteer-core 24.x
  • CLI 框架: CAC 6.7+
  • 交互提示: Inquirer.js 9.0+
  • HTTP 客户端: Axios 1.12+
  • 配置解析: js-yaml 4.1+
  • 加密: crypto-js 4.2+

📝 文档

  • 完整的 README.md 使用指南
  • CHANGELOG.md 版本历史

🔄 技术架构

项目采用现代化技术栈:

  • 更好的控制力 - Puppeteer 提供直接的浏览器控制
  • 简化部署 - 无需额外的服务进程
  • 更好的稳定性 - 减少中间层,降低故障点
  • AI 增强 - 集成 AI 分析能力

🐛 已知问题

  • 某些站点可能需要手动配置选择器
  • Headless 模式下 Cookie 刷新可能不稳定

📦 发布信息


[开发阶段] - 2025-10-01 至 2025-10-02

主要开发里程碑

  • 项目初始化,确定技术栈
  • 核心功能开发
  • 自动化流程优化
  • AI 功能集成
  • Cookie 管理优化
  • 文档完善

: 本项目遵循语义化版本规范。版本号格式为 主版本号.次版本号.修订号,递增规则如下:

  • 主版本号:做了不兼容的 API 修改
  • 次版本号:做了向下兼容的功能性新增
  • 修订号:做了向下兼容的问题修正