如何使用通配符或正则表达式阻止主机名?

agg*_*sol 3 dns hostname adblock

目前我使用 big/etc/hosts来阻止不需要的主机名。但该文件变得越来越大,接近 700000 个条目。有很多类似的条目,所以我想使用通配符,*.co.kr因为我不会说韩语。此外,以数字开头或长度超过 64 个字符的主机名可能是我想要阻止的候选主机名。

AFAIK/etc/hosts不提供该功能。我认为需要某种 DNS 守护进程。有任何想法吗?

编辑:我选择韩国顶级域名作为示例。我的/etc/hosts变得越来越大,也越来越难维护。其中的大多数主机名都可以简化为一小组规则。

Gil*_*il' 6

名称解析是阻止不需要的网络流量的一种非常糟糕的方法。要阻止和不阻止的内容列表不断变化,有时您需要阻止每个 URL 而不仅仅是每个主机。AdBlock* 和 uBlock* 等浏览器扩展往往会做得更好。如果你想写自己的列表,你可以写一个PAC文件

如果您确实想阻止基于域名的请求,请使用 DNS 代理,而不是使用/etc/hosts. /etc/hosts只能做个人主机。Dnsmasq是一种流行的轻量级 DNS 代理。一些发行版默认设置 dnsmasq;大多数发行版都将其作为一个包。要使用 dnsmasq 使整个域显示为 localhost,您可以在中使用以下行/etc/dnsmasq.conf

address=/co.kr/127.0.0.2
Run Code Online (Sandbox Code Playgroud)