-
Notifications
You must be signed in to change notification settings - Fork 299
无插件广告拦截功能设置方案
按照本项目的方案,只使用 OpenClash 一个插件,且中国大陆域名均绕过了 OpenClash 内核,因此无法依靠 OpenClash 的规则来完成广告拦截
利用 OpenClash 的“插件设置”>“开发者选项”功能,让 OpenClash 每次启动时,为 Dnsmasq 拉取相应的规则文件,并清理 DNS 缓存使广告拦截功能生效。
以下内容均以 OpenClash 最新 Dev 版本为示例,旧版本可能有所不同,不保证可用。
v0.46.043 之前版本的 OpenClash 无需在结尾处添加清理 DNS 缓存步骤。
“开发者选项”内容示例:
#!/bin/sh
. /usr/share/openclash/log.sh
. /lib/functions.sh
# This script is called by /etc/init.d/openclash
# Add your custom firewall rules here, they will be added after the end of the OpenClash iptables rules
LOG_OUT "Tip: Start Add Custom Firewall Rules..."
# 以下是广告过滤规则拉取脚本
LOG_OUT "拉取 anti-AD 广告过滤规则…"
curl -s https://anti-ad.net/anti-ad-for-dnsmasq.conf -o /tmp/dnsmasq.d/anti-ad-for-dnsmasq.conf
# 广告过滤规则拉取脚本结束
# 以下是 GitHub520 加速规则拉取脚本
LOG_OUT "拉取 GitHub520 加速规则…"
sed -i '/# GitHub520 Host Start/,/# GitHub520 Host End/d' /etc/hosts
curl https://raw.hellogithub.com/hosts >> /etc/hosts
sed -i '/^$/d' /etc/hosts
sed -i '/!/d' /etc/hosts
# GitHub520 加速规则拉取脚本结束
# 清理 DNS 缓存,v0.46.043 之前版本无需此步骤
LOG_OUT "清理 DNS 缓存…"
/etc/init.d/dnsmasq reload
exit 0
图片仅供示意
根据个人需求手工修改开发者选项的说明如下:
注意“开发者选项”中自带的内容,不要删除!以下内容需要添加在原有的“exit 0”之前
以下代码内容中,#符号开头的是注释,你可以自己修改。LOG_OUT 开头的命令则可以在 OpenClash 的运行日志中输出相应的内容,以便于观察状态。
你可以使用任意支持 dnsmasq 格式的广告拦截规则文件,此处以 anti-AD 广告拦截规则为例。
利用相关的命令,使 OpenClash 启动时拉取 anti-ad-for-dnsmasq.conf 文件至 /tmp/dnsmasq.d/ 目录下,从而实现广告拦截功能
在 OpenClash 的开发者选项中添加如下指令,即可令 OpenClash 在每次启动时拉取为 Dnsmasq 拉取最新的 anti-AD 规则:
# 以下是广告过滤规则拉取脚本
LOG_OUT "拉取 anti-AD 广告过滤规则…"
curl -s https://anti-ad.net/anti-ad-for-dnsmasq.conf -o /tmp/dnsmasq.d/anti-ad-for-dnsmasq.conf
# 广告过滤规则拉取脚本结束
你也可以将 anti-AD 规则替换成任何支持 Dnsmasq 格式的广告规则,替换下载链接和文件名即可
有些人可能对 anti-AD 规则比较反感
可以使用 秋风广告规则,一款优秀的轻量广告拦截规则
该规则是 hosts 文件,因此需要相应的命令来修改 hosts 文件,清除旧规则再添加新规则
以下内容仅做示例,如果命令中的广告拦截规则文件下载失败,请自行更换为你的网络环境下可以访问的规则下载 CDN 地址!
在开发者选项中添加如下指令即可在每次启动时为 Dnsmasq 加载最新的秋风广告规则:
sed -i '/# AWAvenue-Ads-Rule Start/,/# AWAvenue-Ads-Rule End/d' /etc/hosts
curl https://github.tmby.shop/https://raw.githubusercontent.com/TG-Twilight/AWAvenue-Ads-Rule/main/AWAvenue-Ads-Rule.txt | \
sed '/127.0.0.1 localhost/d; /::1 localhost/d; 1s/^/# AWAvenue-Ads-Rule Start\n/; $s/$/\n# AWAvenue-Ads-Rule End/' >> /etc/hosts
sed -i '/^$/d' /etc/hosts
sed -i '/!/d' /etc/hosts
需要注意的是,hosts 规则必须清楚旧内容再添加新内容
如果你换用了其他的 hsots 规则,请自行修改 sed 有关的命令以使其可以正确的修改 hosts 文件的内容,千万不能直接复制!
以上广告拦截规则请二选一,因为 anti-AD 已经包含了秋风广告规则
可以顺带添加 GitHub520 的加速规则,该规则是 hosts 文件,因此同样需要相应的命令来清除旧规则再添加新规则
在开发者选项中添加以下内容,实现每次启动时清空旧的 Github520 加速规则再合并新规则:
sed -i '/# GitHub520 Host Start/,/# GitHub520 Host End/d' /etc/hosts
curl https://raw.hellogithub.com/hosts >> /etc/hosts
sed -i '/^$/d' /etc/hosts
sed -i '/!/d' /etc/hosts
如果你的网络环境过于奇葩,无法访问任何 Github 相关的 CDN,但是可以通过 Github520 访问 Github,那么请将 Github520 规则的拉取指令放在前,广告拦截规则的拉取指令放在后,并且在中间加上重启 Dnsmasq 的命令,使 Github520 规则生效后再执行广告拦截规则的拉取。(感谢 AKA-Cigma 提供)
具体命令见下方示例:
# 以下是 GitHub520 加速规则拉取脚本
LOG_OUT "拉取GitHub520加速规则…"
sed -i '/# GitHub520 Host Start/,/# GitHub520 Host End/d' /etc/hosts
curl https://raw.hellogithub.com/hosts >> /etc/hosts
sed -i '/^$/d' /etc/hosts
sed -i '/!/d' /etc/hosts
# GitHub520 加速规则拉取脚本结束
# 清理 DNS 缓存
LOG_OUT "清理 DNS 缓存…"
/etc/init.d/dnsmasq reload
# 以下是广告过滤规则拉取脚本
LOG_OUT "拉取秋风广告过滤规则…"
sed -i '/# AWAvenue-Ads-Rule Start/,/# AWAvenue-Ads-Rule End/d' /etc/hosts
curl https://github.tmby.shop/https://raw.githubusercontent.com/TG-Twilight/AWAvenue-Ads-Rule/main/AWAvenue-Ads-Rule.txt | \
sed '/127.0.0.1 localhost/d; /::1 localhost/d; 1s/^/# AWAvenue-Ads-Rule Start\n/; $s/$/\n# AWAvenue-Ads-Rule End/' >> /etc/hosts
sed -i '/^$/d' /etc/hosts
sed -i '/!/d' /etc/hosts
# 广告过滤规则拉取脚本结束
# 清理 DNS 缓存
LOG_OUT "清理 DNS 缓存…"
/etc/init.d/dnsmasq reload
注意以上所有的命令都是示例,请根据自身网络环境修改。如果你是纯小白,无法确定自己的网络环境能否访问以上内容,也不了解各种广告拦截规则的差异,那么请直接按照下方“最终效果”中的内容修改你的“开发者选项”即可。
添加完 anti-AD 和 Github520 规则后,开发者选项中的内容应当如下:
#!/bin/sh
. /usr/share/openclash/log.sh
. /lib/functions.sh
# This script is called by /etc/init.d/openclash
# Add your custom firewall rules here, they will be added after the end of the OpenClash iptables rules
LOG_OUT "Tip: Start Add Custom Firewall Rules..."
# 以下是广告过滤规则拉取脚本
LOG_OUT "拉取 anti-AD 广告过滤规则…"
curl -s https://anti-ad.net/anti-ad-for-dnsmasq.conf -o /tmp/dnsmasq.d/anti-ad-for-dnsmasq.conf
# 广告过滤规则拉取脚本结束
# 以下是 GitHub520 加速规则拉取脚本
LOG_OUT "拉取 GitHub520 加速规则…"
sed -i '/# GitHub520 Host Start/,/# GitHub520 Host End/d' /etc/hosts
curl https://raw.hellogithub.com/hosts >> /etc/hosts
sed -i '/^$/d' /etc/hosts
sed -i '/!/d' /etc/hosts
# GitHub520 加速规则拉取脚本结束
# 清理 DNS 缓存
LOG_OUT "清理 DNS 缓存…"
/etc/init.d/dnsmasq reload
exit 0
本项目之方案编写于2024年4月
项目维护者允许转载本方案内容和以本方案内容进行二次创作,比如以本项目内容制作视频等。
Youtube 已经有上不止一个 UP 主搬运了本方案内容,当然肯定会有人说“OpenClash 设置就摆在那里都是巧合雷同罢了”
内容相同我无所谓,但是连原理解释和示例操作也雷同,甚至重点强调部分都相同,开发者选项也照抄,就差照着读了。
虽然如此,但是这些形式我都不反对,毕竟任何搬运行为都是有利于小白的,制作视频盈利我也不反对,毕竟这也是要花时间的,也是付出时间的劳动。
你可以以任何形式,利用本项目的内容,但是
请注明本项目的地址,请注明本项目的地址,请注明本项目的地址!
感谢合作!
讲解本项目相关的 OpenClash 设置方法。
讲解如何设置并优雅的使用 OpenWrt 的 IPv6 功能。
讲解如何使 OpenClash 和 Dnsmasq 搭配实现无需第三方插件参与的广告拦截设置方法。
工作不正常?看这里