├── shell ├── manual-update.sh └── make.sh ├── .github ├── ISSUE_TEMPLATE │ └── report.md └── workflows │ ├── push.yml │ └── sync-ad886.yml └── README.md /shell/manual-update.sh: -------------------------------------------------------------------------------- 1 | curl -X POST https://api.github.com/repos/cats-team/AdRules/dispatches \ 2 | -H "Accept: application/vnd.github.v3+json" \ 3 | -H "Authorization: token $GITHUBTOKEN" \ 4 | --data '{"event_type": "Manual-Update"}' 5 | echo Pass 6 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/report.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: 提交拦截&白名单规则 3 | about: 仅限于提交规则!! 4 | title: '' 5 | labels: '' 6 | assignees: '' 7 | 8 | --- 9 | 10 | 11 | 12 | 13 | 14 | **涉及规则:** 15 | 16 | **使用平台:** 17 | 18 | **描述问题:** 19 | 20 | **提供截图:** 21 | 22 | **提交规则:** 23 | -------------------------------------------------------------------------------- /.github/workflows/push.yml: -------------------------------------------------------------------------------- 1 | name: Update Rules 2 | 3 | on: 4 | push: 5 | paths: 6 | - 'AD.txt' 7 | workflow_dispatch: 8 | schedule: 9 | - cron: '0 23 * * *' # 中国时间7点,对应UTC时间23点 10 | 11 | env: 12 | GITHUBTOKEN: ${{ secrets.GITHUBTOKEN }} 13 | 14 | jobs: 15 | Pushed: 16 | runs-on: ubuntu-latest 17 | steps: 18 | - uses: actions/checkout@main 19 | - name: Make Rules and Git push assets to github 20 | run: | 21 | bash ./shell/make.sh 22 | git init 23 | git config --local user.name "action" 24 | git config --local user.email "action@github.com" 25 | git branch -m main 26 | git add --all 27 | git commit -m "Updated at $(TZ=UTC-8 date +'%Y-%m-%d %H:%M:%S')(北京时间)" 28 | git push --force -u origin 29 | - name: Manual-Update AdRules Repository 30 | run: | 31 | bash ./shell/manual-update.sh 32 | -------------------------------------------------------------------------------- /.github/workflows/sync-ad886.yml: -------------------------------------------------------------------------------- 1 | name: 同步 q5460168/666 2 | 3 | on: 4 | schedule: 5 | # 每天 UTC 时间 21 点执行(北京时间 5 点) 6 | - cron: '0 21 * * *' 7 | workflow_dispatch: # 允许手动触发 8 | 9 | jobs: 10 | sync-file: 11 | runs-on: ubuntu-latest 12 | steps: 13 | - name: 检出代码库 14 | uses: actions/checkout@v4 15 | 16 | - name: 设置 Python 环境 17 | uses: actions/setup-python@v5 18 | with: 19 | python-version: '3.11' 20 | 21 | - name: 安装依赖 22 | run: | 23 | python -m pip install --upgrade pip 24 | pip install requests 25 | 26 | - name: 同步文件 27 | run: | 28 | import requests 29 | import os 30 | 31 | # 目标文件 URL 32 | url = "https://raw.githubusercontent.com/qq5460168/666/refs/heads/master/dns.txt" 33 | # 保存路径(修改为根目录下的 AD.txt) 34 | save_path = "AD.txt" 35 | 36 | try: 37 | # 发送请求获取文件内容 38 | response = requests.get(url, timeout=30) 39 | response.raise_for_status() # 检查请求是否成功 40 | 41 | # 保存文件(根目录无需创建额外目录) 42 | with open(save_path, 'w', encoding='utf-8') as f: 43 | f.write(response.text) 44 | print(f"文件已成功同步至 {save_path}") 45 | except Exception as e: 46 | print(f"同步失败: {str(e)}") 47 | exit(1) 48 | shell: python {0} 49 | 50 | - name: 提交更改 51 | run: | 52 | git config --global user.name "GitHub Actions" 53 | git config --global user.email "actions@github.com" 54 | git add AD.txt # 修改跟踪的文件路径 55 | git commit -m "自动同步 https://raw.githubusercontent.com/qq5460168/666/refs/heads/master/dns.txt $(date +'%Y-%m-%d')" || echo "无更改需提交" 56 | git push -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # 🛡️ AdGuard 广告拦截规则 2 | 3 | **维护者**: 酷安 [@那个谁520](http://www.coolapk.com/u/23966654) 4 | 5 | --- 6 | 7 | ## 📖 目录 8 | 1. [规则列表](#规则列表) 9 | 2. [快速使用指南](#快速使用指南) 10 | - [AdGuard Home](#adguard-home) 11 | - [Clash Premium](#clash-premium) 12 | - [Quantumult X](#quantumult-x) 13 | - [SingBox](#singbox) 14 | - [Hosts 文件](#hosts-文件) 15 | 3. [贡献与反馈](#贡献与反馈) 16 | 17 | --- 18 | 19 | ## 📥 规则列表 20 | 21 | 以下是提供的广告拦截规则文件及其用途: 22 | 23 | 24 | | **类型** | **用途** | **链接** | 25 | |----------------------|----------------------------------------|--------------------------------------------------------------------------------------------| 26 | | **AdGuard 黑名单规则** | 拦截大部分广告域名 | [black.txt](https://raw.githubusercontent.com/qq5460168/dangchu/main/black.txt) | 27 | | **AdGuard 白名单规则** | 允许部分误拦截的域名 | [white.txt](https://raw.githubusercontent.com/qq5460168/dangchu/main/white.txt) | 28 | | **DNS规则** | 用于 AdGuard Home 或其他支持 DNS 规则的工具 | [dnslist.txt](https://raw.githubusercontent.com/qq5460168/AD886/main/dnslist.txt) | 29 | | **Hosts规则** | 可直接用于系统 Hosts 文件 | [hosts.txt](https://raw.githubusercontent.com/qq5460168/AD886/main/hosts.txt) | 30 | | **Clash规则** | Clash Premium 配置 | [Clash.yaml](https://raw.githubusercontent.com/qq5460168/AD886/refs/heads/main/clash.yaml) | 31 | | **Clash Meta规则** | Clash Meta/Mihomo 专用配置 | [clash_meta.yaml](https://raw.githubusercontent.com/qq5460168/AD886/main/clash_meta.yaml) | 32 | | **Quantumult X规则** | Quantumult X 配置 | [qx.list](https://raw.githubusercontent.com/qq5460168/AD886/main/qx.list) | 33 | | **SingBox规则** | SingBox 配置 | [singbox.srs](https://raw.githubusercontent.com/qq5460168/AD886/main/singbox.srs) | 34 | | **Shadowrocket规则** | Shadowrocket 专用配置 | [Shadowrocket.list](https://raw.githubusercontent.com/qq5460168/AD886/main/Shadowrocket.list) | 35 | | **Invizible规则** | Invizible Pro 专用配置 | [invizible.txt](https://raw.githubusercontent.com/qq5460168/AD886/main/invizible.txt) | 36 | | **AdClose规则** | AdClose 专用配置 | [AdClose.txt](https://raw.githubusercontent.com/qq5460168/AD886/main/AdClose.txt) | 37 | 38 | --- 39 | 40 | ## 🚀 快速使用指南 41 | 42 | ## 反馈: 43 | 🐧群: [AdGuard home小窝](https://qm.qq.com/q/bRFsKddXq0) 44 | 45 | ### AdGuard Home 46 | 1. 打开 AdGuard Home 管理界面 → **过滤器** → **DNS 黑名单**。 47 | 2. 添加以下规则 URL,并启用定期更新: 48 | - [dnslist.txt](https://raw.githubusercontent.com/qq5460168/AD886/main/dnslist.txt) 49 | 50 | ### Clash Premium 51 | 1. 下载并导入以下文件作为配置: 52 | - [Clash.yaml](https://raw.githubusercontent.com/qq5460168/AD886/main/Clash.yaml) 53 | 2. 打开 Clash Premium 应用并重启以生效。 54 | 55 | ### Quantumult X 56 | 1. 添加规则文件: 57 | - [qx.list](https://raw.githubusercontent.com/qq5460168/AD886/main/qx.list) 58 | 2. 应用规则并重启 Quantumult X。 59 | 60 | ### SingBox 61 | 1. 下载配置文件: 62 | - [singbox.srs](https://raw.githubusercontent.com/qq5460168/AD886/main/singbox.srs) 63 | 2. 使用该文件作为配置,重启 SingBox。 64 | 65 | ### Hosts 文件 66 | 将以下命令复制并粘贴到终端中以更新 Hosts 文件: 67 | 68 | ```bash 69 | curl -o /etc/hosts https://raw.githubusercontent.com/qq5460168/AD886/main/hosts.txt 70 | -------------------------------------------------------------------------------- /shell/make.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | set -e # 如果有任何命令出错,立即退出脚本 4 | 5 | # 获取北京时间 6 | time=$(TZ=Asia/Shanghai date +'%Y-%m-%d %H:%M:%S')'(北京时间)' 7 | 8 | # 文件路径定义 9 | ad_file="AD.txt" 10 | dnslist_file="dnslist.txt" 11 | hosts_file="hosts.txt" 12 | qxlist_file="qx.list" 13 | srs_file="singbox.srs" 14 | singbox_json_file="Singbox.json" 15 | invizible_file="invizible.txt" 16 | shadowrocket_file="Shadowrocket.list" 17 | adclose_file="AdClose.txt" 18 | clash_file="clash.yaml" 19 | clash_meta_file="clash_meta.yaml" 20 | 21 | # 打印日志函数 22 | log() { 23 | echo "$(date +'%Y-%m-%d %H:%M:%S') [INFO] $1" 24 | } 25 | 26 | # 检查文件是否存在 27 | check_file() { 28 | if [[ ! -f "$1" ]]; then 29 | log "文件 $1 不存在,退出脚本!" 30 | exit 1 31 | fi 32 | } 33 | 34 | # 初始化检查 35 | log "检查必要文件..." 36 | check_file "$ad_file" 37 | 38 | # 函数:生成通用规则模板 39 | generate_rules() { 40 | local comment="$1" 41 | local suffix="$2" 42 | local file="$3" 43 | log "生成 ${comment} 规则文件 (${file})..." 44 | { 45 | echo "# Title: ${comment} Rules" 46 | echo "# Homepage: https://github.com/qq5460168/AD886" 47 | echo "# by: 酷安@那个谁520" 48 | echo "# Update Time: ${time}" 49 | grep -E "^(\|\|)[^\/\^]+\^$" "$ad_file" | \ 50 | sed -E "s/^\|\|([^\/\^]+)\^$/${suffix}/" | \ 51 | sort -u 52 | } > "$file" 53 | } 54 | 55 | # 各规则生成函数 56 | generate_dnslist() { 57 | log "生成 Adblock Plus 格式规则文件 (${dnslist_file})..." 58 | local dnstotal=$(grep -E "^(\|\|)[^\/\^]+\^$" "$ad_file" | wc -l) 59 | { 60 | echo "[Adblock Plus 2.0]" 61 | echo "! Title: 酷安反馈反馈" 62 | echo "! Homepage: https://github.com/qq5460168/AD886" 63 | echo "! by: 酷安@那个谁520" 64 | echo "! Total Count: ${dnstotal}" 65 | echo "! Update Time: ${time}" 66 | grep -E "^(\|\|)[^\/\^]+\^$" "$ad_file" | sort -u 67 | } > "$dnslist_file" 68 | } 69 | 70 | generate_hosts() { 71 | generate_rules "Hosts" "0.0.0.0 \1" "$hosts_file" 72 | } 73 | 74 | generate_qx() { 75 | generate_rules "Quantumult X" "HOST-SUFFIX,\1,REJECT" "$qxlist_file" 76 | } 77 | 78 | generate_shadowrocket() { 79 | generate_rules "Shadowrocket" "DOMAIN-SUFFIX,\1,REJECT" "$shadowrocket_file" 80 | } 81 | 82 | generate_adclose() { 83 | log "生成 AdClose 专用规则文件 (${adclose_file})..." 84 | { 85 | echo "# AdClose 专用广告规则" 86 | echo "# 格式:domain, <域名>" 87 | echo "# 生成时间: ${time}" 88 | grep -E "^(\|\|)[^\/\^]+\^$" "$ad_file" | \ 89 | sed -E 's/^\|\|([^\/\^]+)\^$/domain, \1/' | \ 90 | sort -u 91 | } > "$adclose_file" 92 | } 93 | 94 | generate_singbox() { 95 | generate_rules "SingBox SRS" "DOMAIN-SUFFIX,\1,REJECT" "$srs_file" 96 | } 97 | 98 | # 新增:生成 Singbox JSON 规则 99 | generate_singbox_json() { 100 | log "生成 Singbox JSON 规则文件 (${singbox_json_file})..." 101 | { 102 | echo "{" 103 | echo " \"name\": \"Singbox Ads Rule\"," 104 | echo " \"type\": \"domain\"," 105 | echo " \"payload\": [" 106 | grep -E "^(\|\|)[^\/\^]+\^$" "$ad_file" | \ 107 | sed -E "s/^\|\|([^\/\^]+)\^$/ \"\1\",/" | \ 108 | sort -u | sed '$ s/,$//' 109 | echo " ]" 110 | echo "}" 111 | } > "$singbox_json_file" 112 | 113 | if [ $? -eq 0 ]; then 114 | log "成功生成 Singbox JSON 规则文件 (${singbox_json_file})!" 115 | else 116 | log "生成 Singbox JSON 文件失败!" 117 | exit 1 118 | fi 119 | } 120 | 121 | generate_invizible() { 122 | generate_rules "Invizible Pro" "\1" "$invizible_file" 123 | } 124 | 125 | generate_clash() { 126 | generate_rules "Clash" " - DOMAIN-SUFFIX,\1,REJECT" "$clash_file" 127 | } 128 | 129 | generate_clash_meta() { 130 | log "生成 Clash Meta 专用规则文件 (${clash_meta_file})..." 131 | { 132 | echo "# Clash Meta 专用规则 (简化域名列表格式)" 133 | echo "# 生成时间: ${time}" 134 | echo "payload:" 135 | grep -E "^(\|\|)[^\/\^]+\^$" "$ad_file" | \ 136 | sed -E "s/^\|\|([^\/\^]+)\^$/ - '\1'/" | \ 137 | sort -u 138 | } > "$clash_meta_file" 139 | } 140 | 141 | # 主流程 142 | main() { 143 | log "开始生成规则文件..." 144 | generate_dnslist 145 | generate_hosts 146 | generate_qx 147 | generate_shadowrocket 148 | generate_adclose 149 | generate_singbox 150 | generate_singbox_json # 调用新增的 JSON 规则生成函数 151 | generate_invizible 152 | generate_clash 153 | generate_clash_meta 154 | 155 | log "规则已成功生成并保存为以下文件:" 156 | log "1. ${dnslist_file} (Adblock Plus)" 157 | log "2. ${hosts_file} (Hosts 格式)" 158 | log "3. ${qxlist_file} (Quantumult X)" 159 | log "4. ${shadowrocket_file} (Shadowrocket)" 160 | log "5. ${adclose_file} (AdClose)" 161 | log "6. ${srs_file} (SingBox SRS)" 162 | log "7. ${singbox_json_file} (SingBox JSON 格式)" 163 | log "8. ${invizible_file} (Invizible Pro)" 164 | log "9. ${clash_file} (Clash)" 165 | log "10. ${clash_meta_file} (Clash Meta)" 166 | } 167 | 168 | main --------------------------------------------------------------------------------