macos中可实现“一键切换系统全局代理”,需三步:确认网络服务名、编写proxy-on.sh/proxy-off.sh开关脚本、用快捷指令绑定全局快捷键,并可通过sudo visudo配置免密提升体验。
在 macos 中实现“一键切换系统全局代理”,核心是绕过图形界面反复点选,改用终端命令控制代理状态,并搭配快捷键触发。整个过程分三步:明确当前网络服务名、编写开关脚本、绑定全局快捷键。
确认你的网络服务名称
macOS 为每种联网方式(Wi-Fi、以太网等)分配独立的服务名,代理设置必须指定它。打开终端,运行:
networksetup -listallnetworkservices
输出中带星号(*)的是禁用项,没星号的才是活跃服务,比如 Wi-Fi 或 USB 10/100/1000 LAN。记下你日常使用的那个名称,后续脚本里会用到。
创建启用和关闭代理的 Shell 脚本
新建两个脚本文件,分别控制开/关。例如:
- 新建 ~/bin/proxy-on.sh,内容为:
#!/bin/bash
sudo networksetup -setwebproxy "Wi-Fi" 127.0.0.1 8080
sudo networksetup -setsecurewebproxy "Wi-Fi" 127.0.0.1 8080
sudo networksetup -setwebproxystate "Wi-Fi" on
sudo networksetup -setsecurewebproxystate "Wi-Fi" on
- 新建 ~/bin/proxy-off.sh,内容为:
#!/bin/bash
sudo networksetup -setwebproxystate "Wi-Fi" off
sudo networksetup -setsecurewebproxystate "Wi-Fi" off
⚠️ 注意:把上面两处 "Wi-Fi" 替换成你上一步确认的服务名;若代理需认证,可在 -setwebproxy 命令末尾追加 用户名 密码。
保存后赋予执行权限:
chmod +x ~/bin/proxy-on.sh ~/bin/proxy-off.sh
绑定快捷键触发开关
推荐用系统原生「快捷指令」应用,无需安装第三方工具,且支持真正全局响应:
- 打开「快捷指令」App,点击左上角「+」新建指令
- 添加操作:搜索并添加「运行 Shell 脚本」
- 在脚本框中填入:~/bin/proxy-on.sh(或 off.sh)
- 点击右上角「…」→ 开启「在菜单栏中显示」
- 滚动到底部「快捷键」→ 点击「无」→ 按下你想用的组合键(如 ⌥⌘P)
- 确保顶部「允许在任何地方运行」已开启
重复以上步骤,为另一个脚本建第二条快捷指令,分配不同快捷键(如 ⌥⌘O),就完成双向一键切换。
进阶提示:避免输密码弹窗
每次执行 sudo 都会弹出密码框,影响“一键”体验。可配置免密:
- 终端运行 sudo visudo
- 在文件末尾新增一行(将 yourusername 换成你的账户名):
yourusername ALL=(ALL) NOPASSWD: /usr/sbin/networksetup
保存退出。之后代理开关脚本就不再要求输入密码。











