把安卓手机的免费 VPN 变成电脑的“梯子”——一个常驻菜单栏的 macOS 小工具, 一键切换系统代理,让电脑通过局域网内手机的代理上网。
手机上免费的 VPN / 代理应用一抓一大把,电脑上却少得可怜。其实 Android 手机安装 Every Proxy 并开启 VPN 后,手机本身就变成了一台局域网代理服务器。只要电脑和 手机在同一个 Wi-Fi 下,把 macOS 的系统代理指向手机(IP:端口),电脑就能直接走 手机的通道上网。
本 App 就是把这件事做成菜单栏里的一个开关:不用每次打开「系统设置」翻三层菜单, 点一下开启,再点一下关闭,IP 和端口也可以随时改。
同一思路的 Windows 托盘版(C# / WinForms):读写当前用户系统代理,无需管理员权限
(不会像 macOS 版那样弹密码框)。源码在 windows/,
下载:ProxyToggle-Windows.zip。
- 常驻菜单栏,图标随状态变化:
wifi= 已开启,wifi.slash= 已关闭 - 启动 App 或再次双击时自动弹出面板,一键开启 / 关闭代理
- 同时设置 HTTP 与 HTTPS 代理(与
toggle_proxy.command行为一致) - 设置面板可修改:代理 IP、端口、作用的网络服务(Wi-Fi / 以太网)、开机自启
- 状态每 10 秒自动刷新,手动改了系统设置也能同步显示
- universal 构建:Intel 与 Apple Silicon 均可运行
- Android 手机安装 Every Proxy,开启 VPN(或任意能在局域网提供代理的应用)
- 手机和电脑连接同一个局域网
- Every Proxy 里请开启 HTTP / HTTPS 代理服务(不要开成 SOCKS), 并记下显示的 IP 和端口,填入 App 的「设置…」中
从 Release 下载 ProxyToggle.dmg, 双击打开后把 App 拖入「应用程序」。
本地构建、未签名(ad-hoc),首次打开若被系统拦截:右键 App → 「打开」一次即可。
- 点菜单栏的网络图标,或双击 App → 弹出操作面板
- 点「开启代理」/「关闭代理」一键切换
- 点「设置…」填入手机代理的 IP 和端口(以手机端 Every Proxy 显示的为准)
- 每次开关会弹出系统密码框——修改系统代理需要管理员权限,与原脚本行为一致
- 需要开机自启:把 App 放入「应用程序」后,在设置里打开开关
与最初的 toggle_proxy.command 同一套思路,只是换成了原生 App:
networksetup -getwebproxy读取当前状态(Enabled: Yes且Server非空才算真正开启)- 开启:
networksetup -setwebproxy/-setsecurewebproxy写入 IP 和端口 - 关闭:
networksetup -setwebproxystate/-setsecurewebproxystate设为 off - 通过 AppleScript
do shell script ... with administrator privileges弹出授权框并以管理员身份执行 - 状态每 10 秒自动刷新,菜单栏图标同步变化
ProxyToggle/
├── ProxyToggle.xcodeproj # Xcode 工程(部署目标 macOS 13.0)
├── ProxyToggle/ # 源码
│ ├── App.swift # SwiftUI 入口
│ ├── AppDelegate.swift # NSStatusItem + NSPopover(菜单栏壳)
│ ├── AppModel.swift # 状态管理、设置持久化
│ ├── ProxyManager.swift # networksetup 封装
│ ├── PopoverView.swift # 面板 UI
│ ├── SettingsView.swift # 设置窗口
│ ├── Info.plist # LSUIElement(无 Dock 图标)
│ └── AppIcon.icns # 应用图标
├── Screenshots/ # 截图
├── scripts/make_icon.swift # 图标生成脚本(SF Symbols 程序化绘制)
├── windows/ # Windows 版(C# WinForms 托盘程序)
└── toggle_proxy.command # 最初的 shell 脚本原型
环境要求:macOS 13+、Xcode 15.2(本机 Ventura / Intel 实测)。
export DEVELOPER_DIR=/Applications/Xcode.app/Contents/Developer
xcodebuild -project ProxyToggle.xcodeproj -scheme ProxyToggle -configuration Release build -derivedDataPath build产物在 build/Build/Products/Release/ProxyToggle.app。Release 配置默认构建
universal 二进制(x86_64 + arm64)。
- 未启用 App Sandbox 与 Hardened Runtime(需要调用系统命令)
- 修改 IP / 端口 / 网络服务即时保存,无需手动点保存
- 菜单栏图标使用系统 SF Symbols:
wifi/wifi.slash(注意network.slash在 macOS 13 上不存在,换回去会导致图标透明)
MIT License © 2026 Wang Ruiqi
