我从 Github 下载了一个 hosts 文件,其中列出了所有色情网站,以便在我的电脑上屏蔽它们。这在 Chrome 上很有效,但不幸的是在 Safari 上却不行一些网站根本没有被封锁。
例如 xhamster.com 是不是pornhub.com 被屏蔽。
我已经尝试了帖子中提到的所有方法OSX Sierra hosts 文件被忽略以及其他类似的方法,但都无济于事(刷新缓存、使用制表符代替空格、IPV4 和 IPV6 等)。我还尝试过仅使用此域名重新创建 hosts 文件,但不起作用。我在 Big Sur 上使用 Safari 14.1.1
其他人可以至少尝试重现此错误吗?我还有什么其他解决方案?
多谢!
答案1
Stack Overflow 上的一个答案
为什么 /etc/hosts 对 Big Sur 上的某些网站不再起作用?
(不幸被关闭)给出了一个新 DNS 功能作为答案,以加快对支持 HTTPS 的站点的访问速度,但不幸的是,这可能会解决文件问题hosts
。
我在这里引用这个答案:
macOS 11 增加了对官方称为“通过 DNS(DNS SVCB 和 HTTPSSV)进行服务绑定和参数指定”。
现在,当您访问网站时,不仅会
A
查阅典型的 DNS 主机到 IP 地址记录,还会HTTPS
检查全新的 DNS 记录。这不仅仅是一个名称条目;它是一种全新的记录类型(#65),以配合大家更熟悉的A
和CNAME
和MX
。这些新的
HTTPS
DNS 记录可以表明该网站支持 HTTPS,包括协议版本和 IP 地址。这样,输入裸域名就可以https://
立即获得网站的版本,甚至可能是 HTTP/2 或 HTTP/3,跳过老式的 HTTP 重定向。甚至还有一个草案选择权 让域名运营商告诉您的计算机绕过任何本地 DNS 设置,并对涉及其域名的所有未来 DNS 查询使用特定服务器。这里有很多支持性能的意图,也有一些支持隐私的意图。
但在规范和实现中都存在一个致命的隐私和安全缺陷:它消除了用户覆盖域名查询的能力
/etc/hosts
,即使面对积极恶意的域名运营商。要了解其实际工作原理,请执行以下操作:
macOS 附带的版本
dig
不直接支持这些新记录,但你可以使用$ dig -t type65 www.politico.com … ;; QUESTION SECTION: ;www.politico.com. IN TYPE65 ;; ANSWER SECTION: www.politico.com. 53806 IN CNAME www.politico.com.cdn.cloudflare.net. www.politico.com.cdn.cloudflare.net. 300 IN TYPE65 \# 58 0001000001000302683200040008681210CA681211CA000600202606
47000000000000000000681210CA2606470000000000000000006812 11CA …
我不知道如何解析它,但如果我捕获数据包,wireshark 可以解析它
Domain Name System (response) Queries www.politico.com.cdn.cloudflare.net: type HTTPS, class IN Answers www.politico.com.cdn.cloudflare.net: type HTTPS, class IN Name: www.politico.com.cdn.cloudflare.net Type: HTTPS (HTTPS Specific Service Endpoints) (65) Class: IN (0x0001) Time to live: 300 (5 minutes) Data length: 58 SvcPriority: 1 TargetName: <Root> SvcParams SvcParam: ALPN SvcParamKey: ALPN (1) SvcParamValue length: 3 ALPN length: 2 ALPN: h2 SvcParam: IPv4 Hint SvcParamKey: IPv4 Hint (4) SvcParamValue length: 8 IP: 104.18.16.202 IP: 104.18.17.202 SvcParam: IPv6 Hint SvcParamKey: IPv6 Hint (6) SvcParamValue length: 32 IP: 2606:4700::6812:10ca IP: 2606:4700::6812:11ca
这就是正在发生的事情:
- Big Sur 上的 Safari 可以加载一些你已屏蔽的网站
/etc/hosts
,因为它从这些新HTTPS
记录中获取了它们的 IP 地址- 它只能为某些网站做到这一点,因为大多数域名运营商尚未设置此功能。Cloudflare 似乎已为其平台上的所有人设置了此功能;幸运的是,大多数域名运营商(包括广告/跟踪/恶意软件巨头)尚未意识到这一点。
目前,您可以继续使用
/etc/hosts
您完全控制的域名。与此同时,对于其他域名,您有一些选择:
- 你可以在你的家庭网络上运行本地 DNS 服务器或防火墙阻止这些请求
- 你可以在 Mac 上配置本地 DNS 解析器守护程序,并使用它来阻止这些请求
- 你可以切换到 Linux 发行版,其中可配置的本地解析器守护进程是默认的
- 你可以停止使用 Safari,但使用默认 macOS 网络堆栈的其他应用可能会继续默默绕过
/etc/hosts
Chrome 已经对此进行了一些试验,但是似乎还没有实现。Firefox 已开始实现该功能但似乎还没有取得太大进展。