English | 中文
本项目旨在聚合不同来源、不同格式的广告过滤规则,自由的进行转换和整合。
⚠️ 新版不再兼容原配置格式,迁移前务必注意
支持的规则格式
- [x] easylist
- [x] dnsmasq
- [x] clash
- [x] smartdns
- [x] hosts
||example.org^$popup
等规则无法转换(合并、去重不受影响) ||example.org^
将拦截 example.org 及其所有子域,但将其转换为 hosts 格式时,将无法匹配子域名。application:
rule:
#远程规则订阅,path为 http、https地址
remote:
- name: 'Subscription 1' #可选参数: 规则名称,如无将使用 path 作为名称
path: 'https://example.org/rule.txt' #必要参数: 规则url,仅支持 http/https,不限定响应内容格式
type: easylist #可选参数: 规则类型:easylist (默认)、dnsmasq、clash、smartdns、hosts
#本地规则,path为 操作系统支持的绝对或相对路径
local:
- name: 'private rule'
path: '/rule/private.txt'
output:
#文件头配置,将自动作为注释添加至每个规则文件开始
#可使用占位符 ${name}、${type}、${desc} 以及 ${date} (当前日期)
file_header: |
ADFS Adblock List
Title: ${name}
Last Modified: ${date}
Homepage: https://github.com/fordes123/ad-filters-subscriber/
path: rule #规则文件输出路径,相对路径默认为程序所在路径
files:
- name: easylist.txt #必要参数: 文件名
type: EASYLIST #必要参数: 文件类型: easylist、dnsmasq、clash、smartdns、hosts
desc: 'ADFS EasyList' #可选参数: 文件描述,可在file_header中通过 ${} 中使用
filter: #可选参数: 包含规则的类型,默认全选
- basic #基本规则,不包含任何控制、匹配符号, 可以转换为 hosts
- wildcard #通配规则,仅使用通配符
- unknown #其他规则,如使用了正则、高级修饰符号等,这表示目前无法支持
本程序基于 Java21
编写,使用 Maven
进行构建,你可以参照示例配置,编辑 src/main/resources/application.yml
,并通过以下任意一种方式快速开始:
git clone https://github.com/fordes123/ad-filters-subscriber.git
cd ad-filters-subscriber
mvn clean
mvn spring-boot:run
src/main/resources/application.yml
Github Action
页面,选中左侧 Update Filters
授权 Workflow
定时执行(⚠ 重要步骤)Run workflow
或等待自动执行。执行完成后相应规则生成在配置中指定的目录下Github
,点击本仓库右上角 Code
按钮,选择并创建新的 Codespaces
Codespaces
启动,即可直接对本项目进行调试当源代码存在更新时,(你的)仓库首页会出现如下图提示:
此时选择 Sync fork 再选择 Update branch 即可同步更新.
(如曾修改过源代码,那么合并可能存在冲突,请谨慎处理)
⚠ 本仓库不再提供规则订阅,我们更推荐 fork 本项目自行构建规则集.
下面是使用了本项目进行构建的规则仓库,可在其中寻找合适的规则订阅: