不同 macOS 版本的兼容性问题
本文介绍 Mac 版 AdGuard。这是一款多功能广告拦截程序,可在系统级别保护设备。要了解其工作原理, 请下载 AdGuard 应用程序。
存在的问题
Apple 公司每年都会发布 macOS 的更新,推出创新解决方案并添加新的实用功能。不过,有些改进,包括网络扩展 API(Big Sur)或 iCloud 专用代理(Monterey),给许多应用程序带来一些问题,AdGuard 也不例外。在本文中,我们将介绍每个 macOS 版本特有的已知问题,以及解决这些问题的方式。
Monterey 12:存在的问题
Apple 公司尚未解决这些问题,或者只解决了部分问题。
与 iCloud 专用代理兼容
目前,AdGuard 和 iCloud 专用代理不能同时工作。 AdGuard 无法阻止广告,因为 iCloud 专用代理会在 AdGuard 过滤网络连接之前对流量进行加密。当 iCloud 专用代理处于活动状态时,应用就无法进行过滤(包括本地过滤)。因此,AdGuard 无法在 Safari 中过滤流量或执行 DNS 过滤。这就是 AdGuard 默认使用「默认路由」功能,禁用 iCloud 专用代理的原因。
要深入了解这一问题,请阅读本文。
建议的解决方案
我们建议将 AdGuard 与更传统的 VPN 服务(如 AdGuard VPN)一起使用。
替代解决方案
用户可以禁用 AdGuard,防止它使用「默认路由」功能。前往「高级设置」→「network.extension.monterey.force.split.tunnel」进行设置。请注意,启用此设置会导致上述问题。

与保护邮件活动(Protect Mail Activity)的兼容性
Apple 邮件应用现于下载邮件图像时使用代理以隐藏用户的 IP 地址。但如有启动的 VPN 连接,则它无法工作。因其视 AdGuard 为 VPN,所以它不会自动预载图像。
要深入了解这一问题,请阅读本文。
建议的解决方案
此时,我们建议使用更传统的 VPN 服务,如 AdGuard VPN,而不是较新的 Apple 隐私功能。
Monterey 12、Big Sur 11.6 及更高版本:存在的问题
Apple 公司尚未解决这些问题,或者只解决了部分问题。
与 Cisco AnyConnect 兼容
在「网络扩展」模式下,AdGuard 无法与 Cisco AnyConnect 一起工作。用户必须将 AdGuard 切换到「自动代理」模式。为此,请按照以下说明执行操作。
与 Flutter 兼容
这个问题在 2021 年 6 月发布的 Flutter 2.2 中得到了解决。但要修复 Flutter 开发的应用程序,用户需要等待更新。
如果在 Monterey 或 Big Sur 上使用「网络扩展」模式下的 Flutter 和 AdGuard(或任何其他“透明代理”类型的应用程序),就会遇到问题:项目无法打开,Flutter 也将无法正常运行。我们已经向 Apple 公司报告了这个错误。同时,用户可以使用这些临时解决方案:
使用旧版 API 的 VPN 应用程序
尽管 AdGuard 在系统设置中显示为 VPN,但与其他基于 VPN 的应用程序一起使用时应该不会引起任何冲突。但是,如果使用的是在 App Store 以外下载的基于 VPN 的应用程序,有可能是具有旧 VPN API 的应用,因此需要将其排除在过滤范围之外:
- 开启 AdGuard 菜单。
- 选择「首选项...」。
- 切换到「网络」选项卡。
- 单击「应用程序」按钮。
- 找到要排除的应用程序,取消选中旁边的复选框。

已修复的问题
Apple 公司现已修复了以下问题,但在旧版本的 macOS Big Sur 中用户还会遇到一些问题。
与 Little Snitch 5 兼容
目前,AdGuard 的「网络扩展」模式无法与 Little Snitch 5 兼容。当这两个程序都在运行时,有可能会遇到各种应用程序的行为问题,即使它们没有被 AdGuard 过滤。这个问题是由 Big Sur 中的一个错误造成的,我们已经向 Apple 公司通报这一情况。这让我们相信,这个问题会在下一次更新中得到解决。
但是,禁用 Little Snitch 中的连接监控无法解决问题,因为该行为无法从系统内存中卸载 Little Snitch 扩展。我们建议,至少在 Apple 修复该错误之前,切换到「自动代理」过滤模式。
与本地代理的兼容性
现在,AdGuard 可以顺利过滤本地代理(在大多数情况下)。如果用户在操作系统版本 11.1+ 或 Big Sur 11.0 中遇到任何问题,请从系统设置中移除本地代理,并按照以下说明在 AdGuard 中配置上游代理。
在 Big Sur 的 AdGuard for Mac 中配置上游代理:
- 打开 AdGuard 设置的*「首选项」→「网络」→「出站代理」*。
- 根据代理类型选择 HTTP、HTTPS、SOCKS4 或 SOCKS5。
- 填写以下字段:
host是代理服务器的 IP 地址、port是代理服务器希望使用的端口号、user和password是代理的相应用户名和密码(如需要)。如果不需要,忽略其中一个或两个。
如果您遇到任何问题,请通过 support@adguard.com 联系我们的技术支持。
示例 1:配置上游 Shadowsocks 代理
下面举例说明如何为 Shadowsocks 配置上游代理。
首先,用户需要一个能正常工作的代理服务器。最有可能的是,您要设置它,可以使用这样一个 JSON 文件(server 和 password 值在此随机选择):
{
"server":"111.222.333.444",
"server_port":8388,
"local_port":1080,
"password":"barfoo!",
"timeout":600,
"method":"chacha20-ietf-poly1305"
}
请参阅 Shadowsocks 网站 了解更多信息。
然后,用户要在 Mac 上安装 Shadowsocks 客户端。请确保在设置中选择「手动模式」或「自动模式」!如果您选择「全局模式」(或 11.1 之前 Big Sur 版本中的「自动模式」),配置将不起作用。

现在进入AdGuard 菜单 →「高级」→「高级设置」,并将 upstream.proxy 设置的数值设置为 socks5://localhost:1080。请注意,需要使用 JSON 文件中的 “local_port” 值。
由于 Shadowsocks 使用 SOCKS5,因此还需要将 AdGuard 高级设置中的 upstream.proxy.socks5udp 值设置为 true,以便 AdGuard 将 UDP 流量路由到代理服务器。
示例 2:配置上游 Surge 代理
在 Big Sur v11.1+ 中,AdGuard 和 Surge 代理之间没有已知的冲突。如果用户使用的是旧版本的 Big Sur(11.1 之前的版本),请检查右下角的「系统代理」是否已禁用。否则,Surge 无法与 AdGuard 一起使用。另一方面,「增强模式」可以在任何 Big Sur 版本中启用而不会引起冲突。

请转到*「首选项」→「网络」→「出站代理」*并填写字段。 SOCKS5 代理类型:
host:localhostport:6153 HTTP 代理类型:host:localhostport:6152
使用网络扩展的替代方案
我们无法预见到 Big Sur 或 Monterey 可能出现的所有问题,因为有无数不同的硬件/软件和设置配置。如果您遇到任何兼容性问题,联系我们的支持团队前,请尝试使用以下解决方案。
使用「自动代理」过滤模式
如果用户在 Big Sur 或 Monterey 上遇到的问题无法通过上述任何方法解决,您可以尝试将 AdGuard 切换到「自动代理」模式。
- 开启 AdGuard 菜单。
- 选择「首选项...」。
- 切换到「网络」选项卡。
- 单击「选择模式...」按钮。
- 选择「自动代理」。

现在,AdGuard 自动在 Mac 的网络设置中添加一个 .pac 文件。这样系统就会将 AdGuard 视为代理,并尝试通过 AdGuard 发送所有流量。
有些应用程序可能会忽略这一系统设置,其流量将不会被过滤。
在 Big Sur 和 Monterey 中启用内核扩展
默认情况下,Big Sur 和 Monterey 禁用了旧内核扩展框架,因此 AdGuard 使用网络扩展框架。这可能会导致兼容性问题,但要重新启用内核扩展,必须首先禁用系统完整性保护(英语:System Integrity Protection,英语缩写:SIP)。要禁用 SIP,请按此说明操作:
- 单击菜单栏中的 * Apple 符号*。
- 点击「重启…」。
- 按住 Command-R 重启进入恢复模式。
- 单击「实用程序」。
- 选择「终端」。
- 输入
csrutil disable。 - 按键盘上的 Return 或 Enter 键。
- 单击菜单栏中的 * Apple 符号*。
- 点击「重启…」。
禁用 SIP 后,就可以启用内核扩展:

- 开启 AdGuard 菜单。
- 选择「首选项...」。
- 切换到「网络」选项卡。
- 单击「选择模式...」按钮。
- 选择「内核扩展」。
- 确认要切换到内核扩展。
不过,我们只建议在其他方法都失败的情况下使用上述方法,因为这可能会导致一些问题。