我试过了dnsmasq
,squid
这个 DNS 代理但是,它们都没有达到我想要的效果。我想做这样的事情:
127.0.0.1 *facebook.com
127.0.0.1 *imgur.com
每个匹配的 URL 都会重定向到127.0.0.1
,或者直接被阻止。(无论是在命令行、应用程序还是浏览器上,只是模拟了一些功能,/etc/hosts
但带有通配符)。
尽管如果什么都不起作用,那么通过浏览器是最重要的。
答案1
正如 Jeremy W. Sherman 所说,您应该考虑设置本地化的 DNS 服务器,因为该etc/hosts
文件无法支持通配符。
考虑安装一个名为DNSMasq,它允许您创建一种通配符:
address=/facebook.com/127.0.0.1
address=/imgur.com/127.0.0.1
这会将所有包含imgur.com
和facebook.com
的域重新路由至127.0.0.1
。
阅读这篇博客文章/etc/hosts 错误和 DNS 解析或者这篇更新的博客文章:如何在 Mac OS X 10.10 Yosemite 上通过 5 个简单步骤获取 .dev 地址有关如何安装以及为什么会发生这种情况的更多信息。
答案2
浏览器:
- 安装类似请求策略(据我所知,RequestPolicy 仅适用于 Firefox。我相信 uBlock 或 uMatrix 可能能够为 Chrome 做类似的事情。)
- 打开管理策略。
- 添加阻止策略:
- 将原点字段留空。(这隐式匹配所有原点。)
- 在目标字段中,将主机设置为通配符,如
*.facebook.com
。 - 点击“添加规则”按钮。
DNS:
- 您需要运行一个完整的 DNS 服务器(如 named 或 unbound),并配置系统偏好设置以将其用作系统的 DNS 服务器。
- 您应该能够将其配置为假装对整个 facebook.com 区域具有权威性,然后在区域配置中设置通配符。
- 对于您不想阻止的内容,您可以将其配置为某些上游 DNS 服务器的本地缓存。
此配置暗示在未绑定的文档其
local-data
配置节为:如果你需要更复杂的权威数据,并附有推荐, 通配符,CNAME/DNAME 支持,或 DNSSEC 权威服务,为其设置一个存根区域,如下面的存根区域部分所述。(重点添加)
运行您自己的 DNS 服务器可能会涉及其中。以下是为类似目的设置命名的演练。
答案3
运行sudo nano -e /etc/hosts
打开hosts文件并输入
127.0.0.1 *.domain-name.com #Block subdomains
127.0.0.1 domain-name.com #Block domain
您应该将两者都放上去以封锁该网站。