Mac 应用防火墙

更新于 · 作者

hop 显示每个联网的程序,以及它连过的地址,你可以拦截其中任何一个——整个程序,或它的一个地址。它基于 macOS 专为这项工作提供的网络过滤器运行,与 LuLu 和 Little Snitch 用的是同一类技术,不解密任何内容。

macOS 菜单栏中的 hop 面板:app firewall
app firewall in hop at a glance
what it isapp firewall inside hop, a menu bar app for macOS
pricefree — no trial, no pro tier, no account
licenceMIT, source on GitHub
requiresmacOS 14 or later, Apple silicon or Intel
works offlineyes
data sent anywherenone
download hopfree · macOS 14+ · Apple silicon and Intel

谁需要按程序拦截的防火墙

常见的触发点是发现某个程序联网比它该有的多:一个工具每次启动都要访问许可证服务器,一个后台助手在同步没人要求的东西,一个游戏连到与游戏本身无关的地址。macOS 本身不会告诉你现在哪些程序在联网、联到了哪里——“活动监视器”的网络标签只显示传输的字节数,不显示地址。

另一个触发点是想提前设好规则:为一个不完全信任的程序拦截某个服务器,或者把已安装但没在用的程序整个断网,而不用动路由器、DNS,也不用一个会影响所有流量的 VPN。

它显示什么,一键能做什么

每个联过网的程序都会出现在列表里,连同它连过的地址。点一下程序的名称就能把它整个断网;打开它,还能单独拦截一个地址——比如一次许可证验证,其余流量照常通过。地址规则始终优先于程序规则,所以一个例外不需要把整个开关重新打开。

规则不需要程序先联过网。所有已安装的应用都在列表里,不管有没有联过网,因此程序可以在它第一次尝试联网之前就被拦截。

  • 一键拦截整个程序,或它的一个地址
  • 在程序第一次联网之前就设好规则——从列表或“应用程序”文件夹中选择
  • 从文件载入地址列表(每行一个,或 hosts 文件),一次性对所有程序生效——一行也可以写明程序:`com.example.app license.example.com`
  • 把当前规则保存回文件
  • 按出现时间、按名称或最近优先给列表排序

完整的操作说明——窗口里每个标签和区块的含义——在指南里,用你的语言: 指南中的流量拦截

过滤器本身如何工作

hop 借助 macOS 专为这项工作提供的网络过滤器来做到这一点——一种系统扩展,与 LuLu 和 Little Snitch 所依赖的是同一类。模块第一次运行时,macOS 会请你在系统设置里允许它;这是系统弹出的一次性对话框,hop 无法跳过,也无法提前替你同意。

过滤器在连接的第一个数据包就做出判断,从不查看内容:它拦截的是整台服务器,而不是其中一页——因为在连接层面工作的过滤器最多也只能看到这一层。如果过滤器停止运行(系统更新、崩溃,或任何原因),网络仍然可用;在它恢复之前不会拦截任何东西。在设置里关闭模块,停止的只是你设的这些拦截,而不是 Mac 的网络访问本身。

Apple 官方对这类 App 所基于的网络扩展框架的说明(英文页面): Network Extension, Apple Developer documentation

download hopfree · macOS 14+ · Apple silicon and Intel

默认安静,可选的询问

模块默认开启,本身不拦截任何东西:没有设置规则时,每个连接都会照常通过,就像没装 hop 一样。它没有内置的追踪器或广告服务器黑名单来预先拦截,也不会悄悄开始切断程序——列表里的每一条拦截都是你自己设的。

询问新连接是一个独立的设置项,默认关闭。打开后,右上角的卡片会为没有规则覆盖的连接向你询问——只针对那个地址,还是整个程序——而不是由 hop 自行决定。

它不是什么,边界在哪里

hop 不是 VPN,不会转发也不会检查你去往任何地方的流量:一个连接要么原样放行,要么在第一个数据包就被拒绝。它无法按 URL 或页面来过滤加密连接内部的内容——HTTPS 隐藏了服务器地址之外的一切,所以“只拦截这一个页面”不是这类过滤器能表达的规则,无论是 hop 还是同类原理的任何应用防火墙都做不到。

它也不是 DNS 屏蔽工具,也不是给浏览器标签页内容做过滤的工具:那些是靠解析或改写域名来实现的,是另一层,有另一套取舍。它也不收集自己看到的任何东西:地址列表和你设置的规则都只留在这台 Mac 上。

你想要什么hop 的应用防火墙能做到吗该用什么
查看今天哪些程序联网了,联到了哪里能——这就是第一屏的全部内容—
把一个程序整个断网能——点一下它的名称—
让程序能访问自己的服务,但拦截它调用的某个第三方地址能——只拦截那个地址,其余照常—
在一个整体可信的网站里拦截某个页面或路径不能——过滤器只能看到服务器,看不到 URL浏览器扩展,它能读取页面本身
对你的运营商或网络隐藏自己的流量不能——hop 没有服务器,也不转发任何流量真正的 VPN
在所有地方拦截广告和追踪器,包括浏览器里默认不能——hop 不附带黑名单DNS 层面的拦截工具或浏览器扩展

frequently asked questions

hop 会看到或保存我的流量吗?
不会。过滤器在连接的第一个数据包就做出判断,从不查看内容;hop 不解密任何东西,地址列表只留在这台 Mac 上。
这和 VPN 是一回事吗?
不是。hop 不转发任何流量,也没有服务器。它要么原样放行一个连接,要么在第一个数据包就拦截它——允许通过的连接内部发生了什么,它既看不到也碰不到。
能只拦截一个地址而不拦截整个应用吗?
能。打开程序查看它的地址,单独拦截其中任意一个——地址规则始终优先于程序本身的开关。
如果网络过滤器停止工作会怎样?
你的网络仍然可用。在过滤器恢复之前不会拦截任何东西,关闭模块只会停止你设的拦截,绝不会影响 Mac 的网络访问本身。
要让它工作需要批准什么吗?
只需一次。模块第一次运行时,macOS 会请你在系统设置里允许 hop 的网络过滤器——这是这类应用防火墙都需要的那种一次性请求。
这会拖慢网络吗?
过滤器只需要看每个新连接的第一个数据包,而不是流量本身,所以正在进行的传输不受影响。
这和 LuLu 或 Little Snitch 有什么不同?
思路一样,底层也是同一类 macOS 过滤器。hop 的版本住在菜单栏里,和它的其他模块在一起,而不是独立的应用,也保持同样的边界:拦截的是整台服务器,不是页面,也不解密任何内容。

other tools in hop

  • time trackerwhere the hours went, kept on this Mac and nowhere else.
  • system monitorload, temperatures, memory and battery — quiet until something is wrong.
  • torrentsdrop a file or paste a magnet link — it downloads in the panel.

关于作者

hop 的作者 Anton Shakirov

开发 hop

开发 hop,也编写本站的每一页。十九个工具收在一个菜单栏图标下,MIT 许可,源码公开。issue 和邮件都由他本人阅读和回复。

download hopfree · macOS 14+ · Apple silicon and Intel