Skip to content

Latest commit

 

History

History
94 lines (63 loc) · 4.98 KB

File metadata and controls

94 lines (63 loc) · 4.98 KB

SwiftRoute

platform architecture license

SwiftRoute 是一个原生 SwiftUI 编写的轻量 macOS Mihomo 客户端。它可以导入 Clash/Mihomo YAML 配置,按国家和地区整理节点,自动测试延迟与稳定性,并避开无法访问 ChatGPT/Codex 的出口节点。

SwiftRoute app icon

功能

  • 内置 Apple Silicon 版 Mihomo v1.19.28
  • 从本地 YAML 或 HTTPS 订阅地址导入配置
  • 香港、台湾、日本、新加坡、美国、韩国、欧洲等地区筛选
  • 16 路并发快速扫描,默认延迟上限 500 ms
  • 对最快候选进行稳定性复测,并按延迟和成功率综合评分
  • 使用真实 Codex POST 请求识别 Cloudflare HTML 403,自动尝试下一节点
  • 当前节点高亮、菜单栏控制、开机自启动和启动时自动连接
  • 安全保存并恢复 macOS 原有 HTTP、HTTPS 和 SOCKS 代理设置
  • 检查 Mixed 端口和监听进程,避免与其他 Clash 客户端争用代理
  • 内核进程、控制端口、代理出口和系统设置的完整连接验证

下载与安装

  1. Releases 下载最新的 SwiftRoute-macOS-arm64.zip
  2. 解压后把 SwiftRoute.app 移入 /Applications
  3. 当前公开包使用 ad-hoc 临时签名,尚未经过 Apple 公证。首次打开时请按住 Control 点击 App,选择“打开”;也可在“系统设置 → 隐私与安全性”中确认打开。
  4. 在“导入”菜单中选择本地配置或输入 HTTPS 订阅地址,然后点击“连接”。

订阅地址通常包含私人密钥。SwiftRoute 只把下载的配置保存在本机 ~/Library/Application Support/SwiftRoute/,请勿把订阅文件、链接或日志提交到 Issue。

自动优选

SwiftRoute 的选优分为三个阶段:

  1. 对当前地区节点进行一次有超时限制的并发扫描。
  2. 仅对最快的 6 个候选并行复测,计算延迟和成功率。
  3. 按综合质量排序,最多验证前三名能否访问 Codex 后端。正常的无凭证探测会返回 JSON 401;Cloudflare 风控通常返回 HTML 403,遇到后会尝试下一名。

节点列表中的蓝色勾选和“当前”按钮表示 Mihomo 策略组正在使用的节点。

系统代理与限制

连接时,SwiftRoute 会启用 macOS HTTP、HTTPS 和 SOCKS 系统代理,并在连接前保存原设置;断开或正常退出时恢复。应用启动也会清理自身异常退出留下的 Mihomo 进程和代理快照。

SwiftRoute 不能与 FlClash、Clash Verge 等其他正在接管系统代理的客户端同时运行。默认 Mixed 端口是 127.0.0.1:7890,控制端口是 127.0.0.1:19090。如果端口被占用,应用会显示占用程序名称并停止连接。

当前版本是系统代理客户端,不是 TUN 全局 VPN。不遵循系统代理的程序、部分 UDP 流量和游戏可能绕过代理。TUN 需要经过签名的特权服务或 Apple Network Extension,本项目不会使用不安全的提权脚本模拟。

Codex 仍然显示 403

  • 等待 SwiftRoute 完成自动优选。
  • 完全退出 Codex(⌘Q)后重新打开,让它重新读取系统代理并建立连接。
  • 确认没有另一款代理客户端占用 7890
  • 切换美国、日本或新加坡地区重新优选。TUN 本身不能修复被 Cloudflare 拒绝的出口 IP。

从源码构建

要求 macOS 14 或更高版本、Apple Silicon 和 Swift 6.2:

git clone https://github.com/comey246/SwiftRoute.git
cd SwiftRoute
swift test
./scripts/build-app.sh

生成的 App 和 ZIP 位于 outputs/

如果钥匙串中安装了 Developer ID Application 证书,可以生成适合 Apple 公证的 Hardened Runtime 构建:

CODESIGN_IDENTITY="Developer ID Application: Your Name (TEAMID)" ./scripts/build-app.sh

随后使用 Apple 的 notarytool 提交 ZIP 并把公证票据装订到 App。当前仓库发布的 ad-hoc 包不等同于 Developer ID 签名或 Apple 公证。

隐私与安全

  • 不包含节点销售、账户、广告、统计或遥测功能。
  • 订阅和运行配置只保存在本机,不上传到本项目服务器。
  • Mihomo 控制 API 仅监听本机地址,并在每次启动时使用随机密钥。
  • 如果报告安全问题,请不要公开附上订阅地址、节点密码或完整配置。

第三方组件

SwiftRoute 将 Mihomo 作为独立可执行程序调用。内置的 v1.19.28 ARM64 版本按 GPL-3.0 分发;对应源码、校验值和许可证信息位于 THIRD_PARTY_NOTICES

许可证

SwiftRoute 按 GNU General Public License v3.0 开源。你可以使用、修改和分发,也可以收费,但分发修改版本时必须遵守 GPL-3.0 的源码和许可证要求。