可通过 macos 自带 socketfilterfw 工具编写脚本自动化限制指定应用联网,支持入站阻断及 macos 15.3.2+ 的出站拦截,需管理员权限运行,适用于批量管理、定时控制与部署集成。

可以通过 macOS 自带的 socketfilterfw 工具编写脚本,实现对指定应用联网行为的自动化限制。该方式不依赖图形界面,适合批量管理、定时控制或集成进部署流程。
使用 socketfilterfw 编写基础禁网脚本
macOS 底层防火墙服务 socketfilterfw 支持命令行添加/删除规则,可精准阻断某 App 的入站连接(默认生效),部分系统版本(如 macOS 15.3.2+)还可配合参数启用出站拦截。
- 脚本需以管理员权限运行,开头加入
sudo并确保用户有对应权限 - 先启用全局防火墙:
sudo /usr/libexec/ApplicationFirewall/socketfilterfw --setglobalstate on - 添加阻止规则(以微信为例):
sudo /usr/libexec/ApplicationFirewall/socketfilterfw --add "/Applications/WeChat.app" --block - 确认规则已加载:
sudo /usr/libexec/ApplicationFirewall/socketfilterfw --listapps,输出中应显示WeChat.app → blocked
增强脚本:支持入站+出站双向拦截
从 macOS 15.3.2 起,socketfilterfw 新增 --blockoutbound 参数,可切断应用主动发起的网络请求。脚本中可分步执行:
部署和使用军舰的 macOS Automator 自动化服务集合。包含 5 个实用工作流:PDF转JPG、PNG重命名并转JPG、图像拼接、解压RAR、顺序命名图像文件。一键安装所有服务到 ~/Library/Services/ 目录。使用场景:(1) "安装我的自动化服务",(2) "部署所有 Automato...
- 先添加应用并阻断入站:
sudo socketfilterfw --add "/Applications/Slack.app" - 再启用其出站拦截:
sudo socketfilterfw --blockoutbound "/Applications/Slack.app" - 若需恢复,用
--unblockoutbound或--unblock撤销对应规则 - 建议在脚本末尾加入校验逻辑,例如检查
grep -q "blocked"
脚本化管理多个应用与状态回滚
实际运维中常需统一管控一组应用,或在测试后快速还原。可设计带参数的 Shell 脚本:
- 定义应用路径数组:
apps=("/Applications/Zoom.us.app" "/Applications/Adobe Acrobat.app") - 循环添加并标记规则:
for app in "${apps[@]}"; do sudo socketfilterfw --add "$app" --block; done - 保存当前规则快照:
sudo socketfilterfw --listapps > /tmp/firewall_rules_backup.txt - 提供还原函数,读取备份文件逐条执行
--unblock命令
注意事项与兼容性提醒
脚本运行前需注意系统版本和签名状态:
- macOS Sonoma 及更新系统中,
socketfilterfw默认可用;Monterey 及更早版本需手动启用辅助工具权限 - 被拦截 App 若含多个进程(如 Adobe Creative Cloud 含 CCXProcess),需分别添加规则
- 签名失效或重打包的应用可能被系统拒绝加载规则,此时提示
Invalid code signature - 脚本中避免硬编码路径,推荐用
mdfind "kMDItemDisplayName == 'AppName'"动态定位










