macOS代理配置需完整导出用户级与系统级设置、PAC文件、绕过列表及网络服务绑定关系,否则还原后可能失效;应使用networksetup逐服务导出代理参数,备份PAC内容,读取defaults关键开关,并通过脚本一键归档。
mac 的系统代理配置(如 http/https、socks、ftp 代理,以及自动配置脚本 pac)不只存在单一文件里,而是分散在多个 plist 和网络服务配置中。要真正“完整导出和备份”,必须覆盖用户级 + 系统级代理设置、pac 文件路径、例外列表(bypass list),以及网络服务绑定关系——否则还原后可能代理不生效或仅部分生效。
一、导出当前所有网络服务的代理配置
macOS 每个网络服务(如 Wi-Fi、以太网、iPhone USB 网络共享)可独立配置代理。这些配置保存在 /Library/Preferences/SystemConfiguration/ 下的 plist 文件中,需用 networksetup 命令提取结构化信息:
- 列出全部网络服务名:
networksetup -listallnetworkservices - 对每个服务导出代理状态(例如 Wi-Fi):
networksetup -getwebproxy "Wi-Fi"、networksetup -getsecurewebproxy "Wi-Fi"、networksetup -getsocksfirewallproxy "Wi-Fi" - 同时获取 PAC 设置:
networksetup -getautoproxyurl "Wi-Fi" - 导出绕过代理的域名列表:
networksetup -getproxybypassdomains "Wi-Fi"
建议将上述命令结果重定向保存为文本快照,例如:
echo "== $(date) ==" > proxy-backup-$(date +%Y%m%d).txt<br>networksetup -listallnetworkservices | while read svc; do [ "$svc" != "An asterisk (*) denotes that a network service is disabled." ] && echo "--- $svc ---" >> proxy-backup-$(date +%Y%m%d).txt && networksetup -getwebproxy "$svc" >> proxy-backup-$(date +%Y%m%d).txt && networksetup -getsecurewebproxy "$svc" >> proxy-backup-$(date +%Y%m%d).txt && networksetup -getautoproxyurl "$svc" >> proxy-backup-$(date +%Y%m%d).txt && networksetup -getproxybypassdomains "$svc" >> proxy-backup-$(date +%Y%m%d).txt; done
二、备份 PAC 文件本身(如果使用本地或自托管脚本)
若你设置了自动代理配置 URL(如 http://localhost:8080/proxy.pac 或内网地址),需额外备份实际的 PAC 文件内容:
- 如果是本地文件(如
file:///Users/you/proxy.pac),直接复制该文件 - 如果是远程 URL,用
curl -s "http://your-pac-url" > proxy.pac.backup抓取快照(注意:部分 PAC 可能依赖动态生成,静态抓取仅作参考) - 推荐把 PAC 文件纳入 Git 版本管理,并在备份脚本中一并归档
三、保存系统级代理开关与全局策略
macOS 允许为整个系统启用/禁用代理(如“自动发现代理设置”、“自动代理配置”开关),这些状态藏在 NetworkServices plist 中,但更可靠的方式是用 defaults 读取关键标识:
使用ydata-profiling(前身为pandas-profiling)生成全面的数据质量报告,包含相关性分析、缺失值模式和基数检测。导出交互式HTML仪表板和JSON摘要。
- 检查是否启用了自动代理发现:
defaults read /Library/Preferences/com.apple.NetworkServiceManager.plist EnableAutoProxyDiscovery - 查看全局代理策略是否被 MDM 或配置描述文件锁定(企业环境常见):
defaults read /Library/Managed Preferences/com.apple.networkConnectivity.plist(如有) - 导出当前激活的网络服务顺序(影响代理优先级):
networksetup -listnetworkserviceorder
这些布尔值和顺序信息对还原时恢复行为一致性至关重要,漏掉可能导致新机器上代理“看起来开了却没走”。
四、一键备份脚本示例(可直接运行)
将以下内容保存为 backup-proxy.sh,赋予执行权限后运行即可生成带时间戳的完整代理快照包:
#!/bin/zsh TS=$(date +%Y%m%d-%H%M%S) DIR="proxy-backup-$TS" mkdir -p "$DIR" <p>networksetup -listallnetworkservices | while read svc; do if [[ "$svc" != "An asterisk"* ]]; then echo "--- $svc ---" > "$DIR/$svc.txt" networksetup -getwebproxy "$svc" >> "$DIR/$svc.txt" networksetup -getsecurewebproxy "$svc" >> "$DIR/$svc.txt" networksetup -getsocksfirewallproxy "$svc" >> "$DIR/$svc.txt" networksetup -getautoproxyurl "$svc" >> "$DIR/$svc.txt" networksetup -getproxybypassdomains "$svc" >> "$DIR/$svc.txt" fi done</p><p>networksetup -listnetworkserviceorder > "$DIR/service-order.txt" defaults read /Library/Preferences/com.apple.NetworkServiceManager.plist EnableAutoProxyDiscovery 2>/dev/null > "$DIR/auto-discovery.txt" cp ~/Library/Preferences/com.apple.systempreferences.plist "$DIR/systemprefs.plist" 2>/dev/null</p><p>echo "✅ Proxy backup saved to: $DIR"
还原时,按 networksetup -setwebproxy 等对应命令反向执行即可,无需重启——代理配置实时生效。

















