某些网站会绕过 Safari 中的 hosts 文件

某些网站会绕过 Safari 中的 hosts 文件

我从 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),以配合大家更熟悉的ACNAMEMX

这些新的HTTPSDNS 记录可以表明该网站支持 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
    

这就是正在发生的事情:

  1. Big Sur 上的 Safari 可以加载一些你已屏蔽的网站/etc/hosts,因为它从这些新 HTTPS记录中获取了它们的 IP 地址
  2. 它只能为某些网站做到这一点,因为大多数域名运营商尚未设置此功能。Cloudflare 似乎已为其平台上的所有人设置了此功能;幸运的是,大多数域名运营商(包括广告/跟踪/恶意软件巨头)尚未意识到这一点。

目前,您可以继续使用/etc/hosts您完全控制的域名。

与此同时,对于其他域名,您有一些选择:

  • 你可以在你的家庭网络上运行本地 DNS 服务器或防火墙阻止这些请求
  • 你可以在 Mac 上配置本地 DNS 解析器守护程序,并使用它来阻止这些请求
  • 你可以切换到 Linux 发行版,其中可配置的本地解析器守护进程是默认的
  • 你可以停止使用 Safari,但使用默认 macOS 网络堆栈的其他应用可能会继续默默绕过/etc/hosts

Chrome 已经对此进行了一些试验,但是似乎还没有实现。Firefox 已开始实现该功能但似乎还没有取得太大进展。

相关内容