Skip to content

About

把安卓手机的免费 VPN 变成电脑的梯子:macOS 菜单栏一键切换系统代理(Every Proxy / 局域网代理)

Resources

Stars

1 star

Watchers

0 watching

Forks

Repository files navigation

代理开关(ProxyToggle)

把安卓手机的免费 VPN 变成电脑的“梯子”——一个常驻菜单栏的 macOS 小工具, 一键切换系统代理,让电脑通过局域网内手机的代理上网。

为什么做这个

手机上免费的 VPN / 代理应用一抓一大把,电脑上却少得可怜。其实 Android 手机安装 Every Proxy 并开启 VPN 后,手机本身就变成了一台局域网代理服务器。只要电脑和 手机在同一个 Wi-Fi 下,把 macOS 的系统代理指向手机(IP:端口),电脑就能直接走 手机的通道上网。

本 App 就是把这件事做成菜单栏里的一个开关:不用每次打开「系统设置」翻三层菜单, 点一下开启,再点一下关闭,IP 和端口也可以随时改。

截图

操作面板

Windows 版

同一思路的 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 均可运行

使用前提

  1. Android 手机安装 Every Proxy,开启 VPN(或任意能在局域网提供代理的应用)
  2. 手机和电脑连接同一个局域网
  3. Every Proxy 里请开启 HTTP / HTTPS 代理服务(不要开成 SOCKS), 并记下显示的 IP 和端口,填入 App 的「设置…」中

安装

从 Release 下载 ProxyToggle.dmg, 双击打开后把 App 拖入「应用程序」。

本地构建、未签名(ad-hoc),首次打开若被系统拦截:右键 App → 「打开」一次即可。

使用

  1. 点菜单栏的网络图标,或双击 App → 弹出操作面板
  2. 点「开启代理」/「关闭代理」一键切换
  3. 点「设置…」填入手机代理的 IP 和端口(以手机端 Every Proxy 显示的为准)
  4. 每次开关会弹出系统密码框——修改系统代理需要管理员权限,与原脚本行为一致
  5. 需要开机自启:把 App 放入「应用程序」后,在设置里打开开关

工作原理

与最初的 toggle_proxy.command 同一套思路,只是换成了原生 App:

  1. networksetup -getwebproxy 读取当前状态(Enabled: Yes 且 Server 非空才算真正开启)
  2. 开启:networksetup -setwebproxy / -setsecurewebproxy 写入 IP 和端口
  3. 关闭:networksetup -setwebproxystate / -setsecurewebproxystate 设为 off
  4. 通过 AppleScript do shell script ... with administrator privileges 弹出授权框并以管理员身份执行
  5. 状态每 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 上不存在,换回去会导致图标透明)

License

MIT License © 2026 Wang Ruiqi

About

把安卓手机的免费 VPN 变成电脑的梯子:macOS 菜单栏一键切换系统代理(Every Proxy / 局域网代理)

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages