语境: 2026年最新macOS系统级代理与自动化配置完全指南,涵盖系统代理设置、终端代理、自动化脚本、快捷切换等,让你的Mac翻墙更高效。
→
macOS 系统级代理与自动化配置完全指南 2026
输出
前言
macOS 用户如何高效地配置翻墙代理?手动设置系统代理太麻烦?终端和GUI应用不同步?本文详细介绍macOS系统级代理的各种配置方法,包括系统偏好设置、终端代理、自动化脚本、快捷切换等,让你的Mac翻墙体验更加顺畅。
一、系统级代理设置
1.1 图形界面设置
步骤:
1. 打开 "系统设置"(System Settings)
2. 点击 "网络"(Network)
3. 选择你的网络连接(Wi-Fi 或 以太网)
4. 点击 "详细信息..."(Details...)
5. 选择 "代理"(Proxies)选项卡
6. 勾选需要的代理类型:
- Web代理(HTTP)
- 安全Web代理(HTTPS)
- SOCKS代理
7. 填写代理服务器地址和端口
8. 如果需要认证,填写用户名和密码
9. 点击 "好"(OK)保存
注意事项:
| 代理类型 | 端口 | 说明 |
|---|---|---|
| HTTP | 7890 | 普通HTTP流量 |
| HTTPS | 7890 | 加密HTTPS流量 |
| SOCKS | 7891 | SOCKS5代理 |
1.2 命令行设置
查看当前代理设置:
# 查看所有代理
networksetup -listallnetworkservices
# 查看特定服务的代理设置
networksetup -getwebproxy Wi-Fi
networksetup -getsecurewebproxy Wi-Fi
networksetup -getsocksfirewallproxy Wi-Fi
设置代理:
# 设置 HTTP 代理
networksetup -setwebproxy Wi-Fi 127.0.0.1 7890 off
# 设置 HTTPS 代理
networksetup -setsecurewebproxy Wi-Fi 127.0.0.1 7890 off
# 设置 SOCKS 代理
networksetup -setsocksfirewallproxy Wi-Fi 127.0.0.1 7891 off
# 设置自动代理配置(PAC)
networksetup -setautoproxyurl Wi-Fi http://127.0.0.1:7890/pac
关闭代理:
# 关闭 HTTP 代理
networksetup -setwebproxystate Wi-Fi off
# 关闭 HTTPS 代理
networksetup -setsecurewebproxystate Wi-Fi off
# 关闭 SOCKS 代理
networksetup -setsocksfirewallproxystate Wi-Fi off
# 关闭自动代理
networksetup -setautoproxystate Wi-Fi off
二、终端代理配置
2.1 临时设置
方法一:直接设置环境变量
# HTTP 代理
export http_proxy=http://127.0.0.1:7890
export https_proxy=http://127.0.0.1:7890
export ALL_PROXY=socks5://127.0.0.1:7891
# 测试
curl https://www.google.com
方法二:使用 proxychains
# 安装
brew install proxychains-ng
# 配置
echo 'socks5 127.0.0.1 7891' > /usr/local/etc/proxychains.conf
# 使用
proxychains curl https://www.google.com
proxychains git clone https://github.com/user/repo.git
2.2 永久设置
方法一:修改 shell 配置文件
# ~/.zshrc 或 ~/.bashrc
# 添加代理函数
proxy_on() {
export http_proxy=http://127.0.0.1:7890
export https_proxy=http://127.0.0.1:7890
export ALL_PROXY=socks5://127.0.0.1:7891
echo "Proxy enabled"
}
proxy_off() {
unset http_proxy https_proxy ALL_PROXY
echo "Proxy disabled"
}
# 自动检测 Clash 是否运行
if pgrep -x "Clash" > /dev/null; then
proxy_on
fi
方法二:使用 clash 命令行工具
# 安装 clashctl
brew install clashctl
# 设置代理
clashctl proxy on
# 关闭代理
clashctl proxy off
# 查看状态
clashctl proxy status
三、自动化脚本
3.1 代理切换脚本
创建切换脚本:
#!/bin/bash
# proxy-toggle.sh
PROXY_ON="networksetup -setwebproxystate Wi-Fi on && networksetup -setsecurewebproxystate Wi-Fi on && networksetup -setsocksfirewallproxystate Wi-Fi on"
PROXY_OFF="networksetup -setwebproxystate Wi-Fi off && networksetup -setsecurewebproxystate Wi-Fi off && networksetup -setsocksfirewallproxystate Wi-Fi off"
if [ "$1" = "on" ]; then
eval $PROXY_ON
echo "Proxy enabled"
elif [ "$1" = "off" ]; then
eval $PROXY_OFF
echo "Proxy disabled"
else
# 切换状态
STATUS=$(networksetup -getwebproxy Wi-Fi | grep "Enabled: Yes" | wc -l)
if [ $STATUS -eq 1 ]; then
eval $PROXY_OFF
echo "Proxy disabled"
else
eval $PROXY_ON
echo "Proxy enabled"
fi
fi
使用:
chmod +x proxy-toggle.sh
# 开启代理
./proxy-toggle.sh on
# 关闭代理
./proxy-toggle.sh off
# 切换状态
./proxy-toggle.sh
3.2 自动检测网络环境
脚本示例:
#!/bin/bash
# auto-proxy.sh
# 检测是否在国内网络
function is_china_network() {
# 测试访问国内网站
if ping -c 1 -W 2 baidu.com > /dev/null 2>&1; then
return 0
else
return 1
fi
}
# 检测是否在公司网络
function is_company_network() {
# 通过 IP 段判断
IP=$(curl -s ifconfig.me)
if echo $IP | grep -q "10\.0\.0\."; then
return 0
else
return 1
fi
}
# 根据网络环境设置代理
if is_company_network; then
# 公司网络,使用公司代理
networksetup -setwebproxy Wi-Fi proxy.company.com 8080
echo "Using company proxy"
elif is_china_network; then
# 国内网络,使用翻墙代理
networksetup -setwebproxy Wi-Fi 127.0.0.1 7890
echo "Using VPN proxy"
else
# 国外网络,关闭代理
networksetup -setwebproxystate Wi-Fi off
echo "No proxy needed"
fi
3.3 定时检查脚本
使用 launchd 定时执行:
# 创建 plist 文件
cat > ~/Library/LaunchAgents/com.example.proxy-check.plist << EOF
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.example.proxy-check</string>
<key>ProgramArguments</key>
<array>
<string>/path/to/auto-proxy.sh</string>
</array>
<key>StartInterval</key>
<integer>300</integer>
<key>RunAtLoad</key>
<true/>
</dict>
</plist>
EOF
# 加载
launchctl load ~/Library/LaunchAgents/com.example.proxy-check.plist
# 查看状态
launchctl list | grep proxy-check
四、快捷切换方案
4.1 菜单栏快捷切换
方法一:使用 Automator 创建服务
1. 打开 Automator
2. 创建新的 "快速操作"(Quick Action)
3. 添加 "运行 Shell 脚本" 动作
4. 输入脚本:networksetup -setwebproxystate Wi-Fi off
5. 保存为 "Disable Proxy"
6. 重复创建 "Enable Proxy" 服务
7. 在系统设置 → 键盘 → 快捷键中设置快捷键
方法二:使用第三方工具
| 工具 | 说明 | 推荐度 |
|---|---|---|
| ProxySwitchy | 菜单栏切换代理 | ⭐⭐⭐⭐ |
| Clash Verge | 内置代理切换 | ⭐⭐⭐⭐⭐ |
| Surge | 专业代理工具 | ⭐⭐⭐⭐ |
4.2 快捷键切换
使用 BetterTouchTool 或 Keyboard Maestro:
1. 安装 BetterTouchTool
2. 创建新的键盘快捷键
3. 设置触发动作:运行 shell 脚本
4. 脚本内容:/path/to/proxy-toggle.sh
5. 设置快捷键(如:Command + Shift + P)
使用系统内置快捷键:
系统设置 → 键盘 → 快捷键 → 服务
找到你创建的服务,设置快捷键
五、应用级代理
5.1 浏览器代理
Chrome/Firefox:
1. 使用 SwitchyOmega 扩展
2. 配置代理服务器
3. 设置切换规则
4. 一键切换代理模式
Safari:
Safari → 设置 → 高级 → 代理设置...
与系统代理一致
5.2 终端应用代理
Git:
# 设置代理
git config --global http.proxy http://127.0.0.1:7890
git config --global https.proxy http://127.0.0.1:7890
# 取消代理
git config --global --unset http.proxy
git config --global --unset https.proxy
# 仅对特定仓库设置
git config http.proxy http://127.0.0.1:7890
Homebrew:
# 设置代理
export HOMEBREW_PROXY=http://127.0.0.1:7890
# 或者在 ~/.zshrc 中添加
echo 'export HOMEBREW_PROXY=http://127.0.0.1:7890' >> ~/.zshrc
npm:
# 设置代理
npm config set proxy http://127.0.0.1:7890
npm config set https-proxy http://127.0.0.1:7890
# 取消代理
npm config delete proxy
npm config delete https-proxy
pip:
# 设置代理
pip install package --proxy http://127.0.0.1:7890
# 永久设置
echo 'proxy=http://127.0.0.1:7890' >> ~/.pip/pip.conf
六、常见问题
6.1 系统代理不生效
可能原因:
1. 代理服务器没有运行
2. 端口设置错误
3. 网络连接选择错误
4. 某些应用绕过系统代理
5. 缓存问题
解决方案:
# 检查代理服务器是否运行
ps aux | grep clash
# 检查端口是否开放
nc -zv 127.0.0.1 7890
# 重新设置代理
networksetup -setwebproxy Wi-Fi 127.0.0.1 7890 off
networksetup -setwebproxystate Wi-Fi on
# 刷新 DNS
dscacheutil -flushcache
6.2 终端代理不生效
可能原因:
1. 环境变量没有设置
2. shell 配置文件没有更新
3. 新终端窗口没有加载配置
4. 某些命令不使用代理环境变量
解决方案:
# 检查环境变量
echo $http_proxy
# 重新加载配置
source ~/.zshrc
# 使用 proxychains
proxychains command
6.3 部分应用不走代理
解决方案:
1. 使用 TUN 模式(系统级代理)
2. 设置应用特定的代理配置
3. 使用 VPN 客户端(全流量走代理)
4. 检查应用的网络设置
七、高级配置
7.1 分流规则
使用 Clash 的规则:
rules:
- DOMAIN-SUFFIX,google.com,PROXY
- DOMAIN-SUFFIX,youtube.com,PROXY
- DOMAIN-SUFFIX,twitter.com,PROXY
- DOMAIN-SUFFIX,baidu.com,DIRECT
- DOMAIN-SUFFIX,bilibili.com,DIRECT
- GEOIP,CN,DIRECT
- MATCH,PROXY
7.2 DNS 配置
使用加密 DNS:
dns:
enable: true
listen: 0.0.0.0:53
enhanced-mode: fake-ip
nameserver:
- https://dns.cloudflare.com/dns-query
- https://dns.google/dns-query
fallback:
- https://1.1.1.1/dns-query
- https://8.8.8.8/dns-query
7.3 自动配置脚本(PAC)
创建 PAC 文件:
function FindProxyForURL(url, host) {
// 国内网站直连
if (dnsDomainIs(host, '.cn')) return 'DIRECT';
if (dnsDomainIs(host, '.baidu.com')) return 'DIRECT';
if (dnsDomainIs(host, '.bilibili.com')) return 'DIRECT';
// 国外网站走代理
return 'SOCKS5 127.0.0.1:7891; PROXY 127.0.0.1:7890';
}
使用 PAC:
networksetup -setautoproxyurl Wi-Fi http://127.0.0.1:7890/pac
八、总结
8.1 配置方案对比
| 方案 | 优点 | 缺点 | 推荐度 |
|---|---|---|---|
| 系统代理 | 全局生效 | 部分应用不走代理 | ⭐⭐⭐⭐ |
| TUN 模式 | 全流量走代理 | 需要管理员权限 | ⭐⭐⭐⭐⭐ |
| 应用代理 | 灵活控制 | 每个应用单独配置 | ⭐⭐⭐ |
| 终端代理 | 命令行工具可用 | GUI 应用不生效 | ⭐⭐⭐⭐ |
8.2 最佳实践
日常使用:
1. 使用 Clash Verge 或 Surge
2. 开启 TUN 模式
3. 设置分流规则
4. 配置加密 DNS
5. 使用菜单栏快捷切换
开发环境:
1. 设置终端代理环境变量
2. 配置 git/npm/pip 代理
3. 使用 proxychains 处理不支持代理的命令
4. 创建代理开关脚本
自动化:
1. 创建代理切换脚本
2. 设置快捷键
3. 配置定时检查
4. 根据网络环境自动切换
通过合理配置macOS代理,你可以实现高效、便捷的翻墙体验。选择适合自己的方案,让工作和生活更加顺畅。
关注 润土分享 获取更多macOS技巧!
741 词 · 963 令牌