$ 发布 2026-07-25 | ~4分钟阅读
语境: 2026年最新macOS系统级代理与自动化配置完全指南,涵盖系统代理设置、终端代理、自动化脚本、快捷切换等,让你的Mac翻墙更高效。

macOS 系统级代理与自动化配置完全指南 2026


输出
延迟估计 ~222 ms 置信度 ~0.89

前言

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)保存

注意事项:

代理类型端口说明
HTTP7890普通HTTP流量
HTTPS7890加密HTTPS流量
SOCKS7891SOCKS5代理

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 令牌