{"id":51041880,"url":"https://github.com/voidful/shadowspace","last_synced_at":"2026-06-22T11:02:08.678Z","repository":{"id":364220771,"uuid":"1265802746","full_name":"voidful/shadowspace","owner":"voidful","description":"Shadowrocket 風格的 macOS 代理 GUI ✈️ · TUN/規則分流/訂閱/廣告阻擋","archived":false,"fork":false,"pushed_at":"2026-06-12T05:45:40.000Z","size":640,"stargazers_count":3,"open_issues_count":1,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-12T07:13:02.099Z","etag":null,"topics":["macos","proxy","shadowrocket","sing-box","swiftui","vpn"],"latest_commit_sha":null,"homepage":"https://github.com/voidful/shadowspace/releases","language":"Swift","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/voidful.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-06-11T05:05:30.000Z","updated_at":"2026-06-12T05:45:44.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/voidful/shadowspace","commit_stats":null,"previous_names":["voidful/shadowspace"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/voidful/shadowspace","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/voidful%2Fshadowspace","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/voidful%2Fshadowspace/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/voidful%2Fshadowspace/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/voidful%2Fshadowspace/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/voidful","download_url":"https://codeload.github.com/voidful/shadowspace/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/voidful%2Fshadowspace/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34645688,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-22T02:00:06.391Z","response_time":106,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["macos","proxy","shadowrocket","sing-box","swiftui","vpn"],"created_at":"2026-06-22T11:02:08.080Z","updated_at":"2026-06-22T11:02:08.671Z","avatar_url":"https://github.com/voidful.png","language":"Swift","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n\n# ShadowSpace\n\n**台灣用語友善的 macOS 代理工具：選單列常駐、SwiftUI 介面、支援原生與完整引擎雙路線**\n\n![platform](https://img.shields.io/badge/macOS-14%2B-blue)\n![license](https://img.shields.io/badge/license-GPL--3.0-green)\n![swift](https://img.shields.io/badge/Swift-6-orange)\n\n\u003c/div\u003e\n\nShadowSpace 是一款 Shadowrocket 風格的 macOS 代理工具。它保留簡單的一鍵連線體驗，以 Developer ID 簽章與 Apple 公證的 DMG 對外發佈，並內建兩種可在「設定」隨時切換的代理引擎：\n\n| 引擎 | 用途 | 技術 |\n|---|---|---|\n| `sing-box（完整）` | 需要完整協議、TUN、系統代理控制、GeoIP / Geosite 與 DNS 分流 | 內嵌或自動下載官方 sing-box 核心 |\n| `原生` | 純 Apple 框架、不依賴外部核心，啟動輕量 | `ShadowCore`（SS / Trojan / VLESS / SOCKS5） |\n\n\u003cdiv align=\"center\"\u003e\n\u003cimg src=\"docs/screenshot-main.png\" width=\"560\" alt=\"ShadowSpace 主視窗\"\u003e\n\u003c/div\u003e\n\n## 下載\n\n到 **[Releases](https://github.com/voidful/shadowspace/releases)** 下載最新 `.dmg`，拖進「應用程式」即可。直發版使用 Developer ID 簽章與 Apple 公證，第一次開啟應可通過 Gatekeeper。\n\n## 功能\n\n### 共用體驗\n\n- 一鍵連線：首頁大圓鈕，連線與中斷狀態清楚\n- 三種模式：規則、全域、直連\n- 匯入：節點分享連結、base64 訂閱、**Clash / Clash.Meta YAML 訂閱**、sing-box JSON、剪貼簿、**URL scheme（`shadowspace://`）**與**剪貼簿 QR 掃描**\n- 節點管理：手動新增、編輯、複製分享連結、QR Code 匯出\n- **代理群組**：手動選擇與自動測速（urltest）群組\n- **節點鏈 / Relay**：先經中轉節點再落地（`detour`）\n- 分流規則：網域後綴 / 關鍵字 / 完整網域、IP CIDR、GeoIP、Geosite、程序名稱，策略可選代理、直連、拒絕\n- **Rule Providers**：可訂閱的遠端規則集（`.srs`）\n- 訂閱管理：剩餘流量、到期日、一鍵更新、定時自動更新、可調拉取 User-Agent\n- **即時流量圖**：上傳 / 下載速率折線圖與本次用量統計\n- **Kill switch 防洩漏**：引擎意外停止時保留系統代理擋住流量外洩\n- **自動連線 On-demand**：偵測到網路就自動連上\n- **設定備份 / 匯出**與**原始 sing-box 設定檢視**\n- **自動更新檢查**（GitHub Releases）\n- **多語系**：繁體中文與英文介面（隨系統語言）\n- 選單列常駐：快速連線、切換模式、切換節點、查看流量\n- 本機資料：設定與節點存在 `~/Library/Application Support/ShadowSpace/`\n\n### 原生引擎\n\n- 使用純 Apple 框架實作的 `ShadowCore`，不依賴外部代理核心\n- 支援 Shadowsocks、Trojan、VLESS、SOCKS5\n- 支援 TCP、TLS、WebSocket / WSS\n- **TLS 分片（抗封鎖）**：以 NWProtocolFramer 把 TLS ClientHello 切段送出，干擾 DPI 的 SNI 偵測\n- 不支援 Reality、VMess、Hysteria2、TUIC、WireGuard、TUN、GeoIP / Geosite 與 DoH / DoT 分流\n\n更多原生核心細節見 [Sources/ShadowCore/README.md](Sources/ShadowCore/README.md)。\n\n### sing-box 完整引擎\n\n- 支援 Shadowsocks、VMess、VLESS（含 Reality）、Trojan、Hysteria2、TUIC、**AnyTLS**、SOCKS5、WireGuard\n- 支援 TUN / 增強模式，可接管終端機、Docker 等不吃系統代理的流量\n- 可自動設定系統代理，也可手動指向 `127.0.0.1:7890`\n- 支援 GeoIP / Geosite、程序名稱規則、**Rule Providers（可訂閱規則集）**、一鍵廣告阻擋\n- 支援遠端 / 直連 DNS 分流，包含 DoH 與 DoT\n- **Kill switch**：引擎意外停止時保留系統代理，避免流量直連外洩\n- 第一次連線可自動下載官方 `sing-box` 核心；發佈版建議先內嵌核心\n\n## 系統需求\n\n- macOS 14 Sonoma 以上\n- 編譯需要 Xcode 或 Command Line Tools\n\n## 快速開始\n\n```bash\nmake setup\nmake run\n```\n\n`make setup` 會下載 `sing-box` 核心、編譯並打包 `.app`。如果只想跑開發版：\n\n```bash\nmake dev\n```\n\n第一次使用：\n\n1. 複製你的節點分享連結或訂閱網址。\n2. 開啟 ShadowSpace，點「從剪貼簿匯入」。\n3. 回首頁選節點與模式，按下連線按鈕。\n\n可在「設定」切換代理引擎：\n\n- `原生`：預設引擎，純 Swift / Apple framework，適合 SS / Trojan / VLESS / SOCKS5。\n- `sing-box（完整）`：完整協議與 TUN 能力，適合需要 Reality、Hysteria2、TUIC、WireGuard 或 GeoIP / Geosite 的使用者。\n\n## 常見問題\n\n**原生引擎和 sing-box 引擎差在哪？**  \n原生引擎用純 Apple 框架實作、不依賴外部核心，支援 SS / Trojan / VLESS / SOCKS5；sing-box 引擎功能完整，包含 TUN、系統代理設定與更多協議（Reality、Hysteria2、TUIC、WireGuard、GeoIP / Geosite 等）。\n\n**第一次連線很慢？**  \n使用 `sing-box（完整）` 時，首次連線可能會下載核心引擎與分流規則檔；之後就會快很多。發佈版建議用 `make engine` 先內嵌核心。\n\n**設定系統代理失敗？**  \n修改網路設定需要管理員帳號。也可以關掉「連線時自動設定系統代理」，手動把 HTTP / SOCKS 代理指到 `127.0.0.1:7890`。\n\n**和 Shadowrocket 一樣有 VPN / TUN 模式嗎？**  \n`sing-box（完整）` 引擎支援 TUN / 增強模式，可接管終端機、Docker 等不吃系統代理的流量。\n\n**訂閱匯入失敗？**  \n支援 base64 節點清單、Clash / Clash.Meta YAML 與 sing-box JSON，會依內容自動判型。若仍失敗，可到「設定 → 訂閱」調整拉取 User-Agent 再試（機場常依 UA 回傳不同格式）。\n\n## 專案結構\n\n```text\nSources/\n├── ShadowCore/                       # 純 Apple framework 原生代理核心\n├── ShadowSpace/                      # App 進入點\n├── ShadowSpaceKit/                   # SwiftUI UI、AppState、設定與引擎橋接\n└── shadow-demo/                      # ShadowCore smoke test executable\n\nTests/\n├── ShadowCoreTests/\n└── ShadowSpaceKitTests/\n\nscripts/\n├── fetch-singbox.sh\n├── sign.sh\n├── make-dmg.sh\n└── notarize.sh\n```\n\n## 開發\n\n```bash\nswift test\nmake dev\nmake app\nmake engine\n```\n\n常用命令：\n\n- `swift test`：單元測試\n- `make dev`：直接執行開發版\n- `make app`：打包 `build/ShadowSpace.app`\n- `make engine`：下載並內嵌 `sing-box`\n\n## 發佈\n\n直發版使用 **Developer ID 簽章 + Apple 公證 + DMG**。完整步驟見 [PACKAGING.md](PACKAGING.md)。\n\n```bash\nmake engine\nmake release SIGN_IDENTITY=\"Developer ID Application: 你的名字 (TEAMID)\"\n```\n\n完成後會產出 `build/ShadowSpace-\u003c版本\u003e.dmg`。不帶 `SIGN_IDENTITY` 時會使用 ad-hoc 簽章，僅適合本機測試，不能拿來對外發佈。\n\n## 路線圖\n\n- [x] 原生 ShadowCore 引擎\n- [x] sing-box 完整引擎\n- [x] TUN / 增強模式\n- [x] 規則編輯器與一鍵廣告阻擋\n- [x] 連線檢視器\n- [x] 節點編輯、分享連結與 QR Code 匯出\n- [x] DNS 自訂與訂閱自動更新\n- [x] 代理群組、節點鏈 / Relay\n- [x] Rule Providers（可訂閱規則集）\n- [x] Clash / Clash.Meta YAML 訂閱\n- [x] 即時流量圖、Kill switch、自動連線 On-demand\n- [x] 設定備份 / 匯出、URL scheme、剪貼簿 QR 掃描匯入\n- [x] TLS 分片（原生引擎）、AnyTLS（sing-box）\n- [x] 多語系 UI（繁中 / 英文）\n- [x] 自動更新檢查（GitHub Releases）\n- [ ] Sparkle 靜默自動安裝（需簽章環境 / appcast）\n- [ ] 全域快捷鍵\n\n## 授權\n\n本專案以 **[GPL-3.0](LICENSE)** 釋出。\n\nsing-box 引擎使用 [sing-box](https://github.com/SagerNet/sing-box)（GPLv3）作為獨立、未修改的子程序；二進位檔來自官方 GitHub Releases，發佈版可內嵌於 `.app`。分流規則集來自 [sing-geosite](https://github.com/SagerNet/sing-geosite) 與 [sing-geoip](https://github.com/SagerNet/sing-geoip)。\n\n原生引擎以 `ShadowCore`（純 Apple 框架）實作，不包含 `sing-box` 或外部核心下載。\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvoidful%2Fshadowspace","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvoidful%2Fshadowspace","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvoidful%2Fshadowspace/lists"}