在你的机器上运行DNS服务器,使用Pi-hole黑名单阻止189,000+个广告、追踪器和恶意软件域名,实现全网拦截。
AdBlock DNS. 网络全域广告和跟踪器屏蔽在 DNS 级别.是一项面向实际任务的技能,主要用于直接运行在您的机器上的 Pi- hole 替代方案作为 OpenClaw 技能;不需要单独的硬件;
使用时应结合输入条件选择合适的执行方式,核对必要参数、依赖环境与输出内容,并按原始要求处理异常情况。该技能适合需要稳定复用相关能力的场景,可作为自动化工作流的一部分,也便于后续检查、调整和扩展。从功能定位来看,该技能强调把分散的操作要求整理成清晰、可复用的处理流程,使用户能够围绕既定目标快速准备输入、选择执行方式并获得结构化结果。
实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。
在 DNS 层面实现全网范围的广告与追踪器拦截。这是一个以 OpenClaw 技能形式直接运行于本机的 Pi-hole 替代方案,无需额外硬件。
该技能在本机运行一个 DNS 陷井(sinkhole)服务器,可拦截整个网络中广告、追踪器、恶意软件及遥测(telemetry)相关的域名请求。任何将本机设为 DNS 服务器的设备(包括手机、平板、智能电视、笔记本电脑、IoT 设备等)均可自动获得无广告浏览体验。
使用与 Pi-hole 相同的主流屏蔽列表(Steven Black、AdAway、EasyList、EasyPrivacy、Anti-Malware),可拦截超过 18.9 万个广告与追踪器域名;同时支持 IPv4(A 记录)和 IPv6(AAAA 记录)查询的拦截。
可有效拦截: 网站横幅广告、追踪像素(tracking pixels)、第三方广告网络(如 Doubleclick、Amazon Ads、Criteo、Rubicon 等)、App 内广告、遥测/分析追踪器、恶意软件相关域名。
无法拦截: YouTube 广告、Twitch 广告,或任何与内容本身同源(same domain)提供的广告。这些平台通常通过自有 CDN(例如 YouTube 使用 googlevideo.com)分发广告,若直接屏蔽该域名将导致整个服务不可用。这是所有 DNS 级别拦截工具(包括 Pi-hole)的根本性限制。如需屏蔽 YouTube 广告,请使用 uBlock Origin 等浏览器扩展。
该技能在本机运行一个 DNS 服务器。当设备发起域名查询时:
0.0.0.0(表示已拦截)1.1.1.1)所有 DNS 查询均被记录并统计(包括总查询数、拦截率、被拦截最多的域名等)。
cd /path/to/skills/adblock/scripts bash setup.sh
该脚本将执行以下操作:
用户在安装过程中需输入一次 sudo 密码。
替代方式(不使用 systemd,手动启动):
sudo node dns-server.js
此为关键步骤。 DNS 服务器仅在设备主动指向它时才生效。
获取本机本地 IP 地址:
hostname -I | awk '{print $1}'
随后,将各设备的 DNS 服务器设置为该 IP 地址:
路由器(全网统一拦截):
192.168.1.1)1.1.1.1(当本机离线时作为回退)单个设备配置:
/etc/resolv.conf,或使用 NetworkManager:nmcli con mod "Wi-Fi" ipv4.dns "MACHINE_IP"# 应返回 0.0.0.0(表示已被拦截) nslookup ads.google.com MACHINE_IP # 应返回真实 IP 地址(表示放行) nslookup google.com MACHINE_IP
或通过 API 检查:curl http://localhost:8053/stats
当用户询问广告拦截相关操作时,请使用以下命令:
curl -s http://localhost:8053/stats | python3 -m json.tool
返回内容包括:总查询数、被拦截查询数、拦截率、被拦截最多的域名。
若某网站因误拦截而无法正常访问:
curl -s -X POST http://localhost:8053/whitelist/add -H "Content-Type: application/json" -d '{"domain":"example.com"}'
curl -s -X POST http://localhost:8053/blacklist/add -H "Content-Type: application/json" -d '{"domain":"annoying-site.com"}'
curl -s "http://localhost:8053/check?domain=ads.google.com"
屏蔽列表默认每 24 小时自动更新。如需立即强制更新:
curl -s -X POST http://localhost:8053/update
curl -s http://localhost:8053/whitelist
setup.sh 脚本已自动完成服务配置。如需手动管理服务,请使用以下命令:
sudo systemctl start adblock-dns # 启动服务 sudo systemctl stop adblock-dns # 停止服务 sudo systemctl restart adblock-dns # 重启服务 sudo systemctl status adblock-dns # 查看服务状态 journalctl -u adblock-dns -f # 实时查看日志 # 彻底卸载服务 sudo systemctl disable adblock-dns sudo rm /etc/systemd/system/adblock-dns.service sudo systemctl daemon-reload
编辑 data/config.json 文件:
{
"upstream": "1.1.1.1", // 上游 DNS(可选 Cloudflare、Google 8.8.8.8 等)
"port": 53, // DNS 服务端口(53 为标准端口,需 root 权限)
"apiPort": 8053 // 统计 API 端口
}
data/blocklist.txt —— 合并生成的屏蔽列表(自动生成)data/whitelist.txt —— 白名单域名(每行一个)data/custom-blacklist.txt —— 自定义额外屏蔽域名(每行一个)data/stats.json —— 查询统计信息data/config.json —— 服务配置文件相关专题
热门下载
相关下载
精品课程
共6课时 | 54.7万人学习
共89课时 | 133.9万人学习
共49课时 | 82.5万人学习