#dns-server #list #single-file #config-file #compile #blocklist #adblock

bin+lib adblock-list-compiler

将多个广告拦截列表源编译成一个单独文件的命令行工具

8 个版本

0.0.8 2023 年 1 月 14 日
0.0.7 2023 年 1 月 3 日
0.0.5 2022 年 12 月 25 日

#1575解析实现

36 每月下载量

MIT 许可证

36KB
969

adblock-list-compiler

将多个广告拦截列表源编译成一个单独的广告拦截列表文件的命令行工具

简介

广告拦截 DNS 服务器是一种将大多数域名解析为 IP 地址的 DNS 服务器,但同时也拦截已知的广告域名。

为了正常运行,广告拦截 DNS 服务器需要一个广告拦截列表,这基本上是一个它应该阻止的域名黑名单。根据所使用的 DNS 服务器运行服务,广告拦截列表文件需要以特定的格式存在。

在线,有许多项目致力于维护可免费获取的广告拦截列表。虽然完全可能只使用一个在线的广告拦截列表文件,但大多数时候,我们希望根据我们的个人需求,通过组合多个黑名单源来编译我们自己的自定义广告拦截列表。在线广告拦截列表也可能以特定的格式编写,我们需要将它们组合并调整为我们可以使用的正确格式。

这就是这个项目的作用所在。该项目可以帮助您从多个来源获取广告拦截列表,解析它们,将它们编译成一个单一的列表,去除重复项,并以正确的格式写入到一个文件中。目前,仅支持 bind 区域输出文件,计划添加对其他文件格式的支持。

该项目主要是为了支持编译我的 Adblock DNS 服务器 项目的广告拦截列表,但您可以根据自己的需要将其用于任何其他广告拦截 DNS 项目。

入门

安装

您需要在您的系统上安装 rustcargo。请访问 rustup.sh 完成此操作。

使用 cargo 安装项目

cargo install adblock-list-compiler

检查您的版本

ablc -v

# output
adblock-list-compiler 0.0.7

配置文件

为了开始编译和广告拦截列表,您需要从有效的配置yaml文件开始。为了快速入门,您可以参考Adblock DNS服务器示例这里

典型的文件应如下所示

# file: configuration.yaml

blacklist:
  - format: hosts
    path: https://sebsauvage.net/hosts/hosts
  - format: hosts
    path: https://raw.githubusercontent.com/r-a-y/mobile-hosts/master/AdguardDNS.txt
  - format: domains
    path: https://gitlab.com/quidsup/notrack-blocklists/raw/master/notrack-blocklist.txt
  - format: hosts
    path: ./blacklist.d/ads_custom.hosts

whitelist:
  - format: domains
    path: ./whitelist.d/blogspot_whitelist.txt
  - format: domains
    path: ./whitelist.d/facebook_whitelist.txt
  - format: domains
    path: https://raw.githubusercontent.com/raghavdua1995/DNSlock-PiHole-whitelist/master/whitelist.list

overrides:
  - format: cname
    path: ./overrides.d/bing-safesearch.zone
  - format: cname
    path: ./overrides.d/duckduckgo-safesearch.zone
  - format: cname
    path: ./overrides.d/google-safesearch.zone
  - format: cname
    path: ./overrides.d/ignore-whitelist.zone

path的值可以支持本地文件和网络位置,也可以支持相对路径。一些在线广告拦截列表使用纯域名列表或主机文件发布。此工具可以适应这两种格式。黑名单合并在一起并去重。白名单用于排除任何以某种方式添加到任何黑名单中的合法域名。覆盖主要用于将某些域名重写为备用主机,主要用于适应一些支持搜索引擎的强制安全搜索。

验证配置文件

运行以下命令以确保配置文件可以正确解析

ablc config check -c /path/to/configuration.yaml

应该说明文件可以正确解析,并打印出配置的一些调试信息。

编译广告拦截列表

运行以下命令以编译您的广告拦截列表

# Compile with your own configuration file
ablc compile -c /path/to/configuration.yaml -o blacklist.zone -f zone

# Try the compile with an upstream configuration file from the Adblock DNS Server project!
ablc compile -c https://raw.githubusercontent.com/ragibkl/adblock-dns-server/master/data/configuration.yaml -o blacklist.zone -f zone

依赖项

~13–28MB
~523K SLoC