本帖最后由 small_5 于 2021-10-22 18:26 编辑
基于Dnsmasq的广告过滤
功能如图所示 · 支持自定义添加ADBlock/AdGuardHome/Hosts/DNSMASQ/Domain 几乎所有格式的规则订阅 · 规则自动识别, 自动去重, 定时更新 · 规则可保存到闪存,进一步加快广告过滤 · 自定义黑白名单 · 拦截短视频APP和iOS升级
本項目使用Dnsmasq的格式进行DNS类的域名屏蔽,效果与ADG一样。
ADG是基于Golang语言所写的,性能与体积尤其在MIPS类的路由上并没有什么优势,Openwrt系统本身运行就需要使用Dnsmasq进行DHCP分配和DNS请求转发。内网设备发起的DNS请求是首先到Dnsmasq以后,再根据Dnsmasq设置的规则(如果有)直接应答或者转发到上游DNS查询。使用ADG的情况下,就需要把Dnsmasq的上游DNS设置为ADG的监听端口,这样就多了一层没有必要的转发。而本项目是直接将域名规则作用于Dnsmasq这一层,不存在额外的二进制文件运行于路由器当中。Dnsmasq在接收到内网设备的DNS请求以后,如果发现请求的域名是规则文件名单内的,会直接返回到内网设备Non-existentdomain,正常的域名则再向上级路由转发DNS解析请求。
另外就是第三方订阅的兼容性,已经做过优化,比Dnsfilter更为优秀(Dnsfilter我是原作者,某人只不过是拿我的项目改个名而已,可以参考Dnsfilter的Makefile的PKG_MAINTAINER,只要某人別去刪) 插件默认启用状态下就使用Adblock Plus的EasyList China规则,轻度用户使用这一个就够了,这个规则误杀最少。另外也内置了anti-ad和adguard的规则可以直接选择,也可以添加其他的URL,对于一些Dnsfilter无法订阅的规则,也进行了优化,除了一些太过奇葩的规则,基本上都可以支持。
还有日志功能,本来是打算添加的,但是发现解析日志实在太多,所以就放弃了,以后看情况吧,也许会添加进去。
项目地址:https://github.com/small-5/luci-app-adblock-plus
|