在你的机器上运行DNS服务器,使用Pi-hole黑名单阻止189,000+个广告、追踪器和恶意软件域名,实现全网拦截。
AdBlock DNS. 网络全域广告和跟踪器屏蔽在 DNS 级别.
功能概述
AdBlock DNS. 网络全域广告和跟踪器屏蔽在 DNS 级别.是一项面向实际任务的技能,主要用于直接运行在您的机器上的 Pi- hole 替代方案作为 OpenClaw 技能;不需要单独的硬件;
核心要点
- What it Does.;
- Runs a。
- 它将相关步骤、工具调用和结果整理方式集中到统一流程中,帮助使用者更快完成目标并减少重复操作。
使用与执行
使用时应结合输入条件选择合适的执行方式,核对必要参数、依赖环境与输出内容,并按原始要求处理异常情况。该技能适合需要稳定复用相关能力的场景,可作为自动化工作流的一部分,也便于后续检查、调整和扩展。从功能定位来看,该技能强调把分散的操作要求整理成清晰、可复用的处理流程,使用户能够围绕既定目标快速准备输入、选择执行方式并获得结构化结果。
结果检查与注意事项
实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。
AdBlock DNS
在 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(表示已拦截) - 若该域名未被屏蔽,则将查询转发至上游 DNS(默认为 Cloudflare 的
1.1.1.1)
所有 DNS 查询均被记录并统计(包括总查询数、拦截率、被拦截最多的域名等)。
安装配置
步骤 1:运行安装脚本
cd /path/to/skills/adblock/scripts bash setup.sh
该脚本将执行以下操作:
- 按需安装依赖项
- 创建 systemd 服务(以 root 权限运行,开机自启,崩溃后自动重启)
- 下载屏蔽列表(涵盖约 15 万以上域名)
- 在端口 53 启动 DNS 服务器
- 在端口 8053 启动统计信息 API 服务
- 输出本机 DNS IP 地址及设备配置指引
用户在安装过程中需输入一次 sudo 密码。
替代方式(不使用 systemd,手动启动):
sudo node dns-server.js
步骤 2:修改设备的 DNS 设置
此为关键步骤。 DNS 服务器仅在设备主动指向它时才生效。
获取本机本地 IP 地址:
hostname -I | awk '{print $1}'
随后,将各设备的 DNS 服务器设置为该 IP 地址:
路由器(全网统一拦截):
- 登录路由器管理后台(通常地址为
192.168.1.1) - 找到 DNS 设置项(通常位于 DHCP 或 Internet/WAN 设置中)
- 将主 DNS 设置为本机 IP 地址
- 将备用 DNS 设置为
1.1.1.1(当本机离线时作为回退) - 此时局域网内所有设备均已受保护
单个设备配置:
- iPhone/iPad: 设置 → Wi-Fi → 点击当前连接的网络 → 配置 DNS → 手动 → 添加本机 IP 地址
- Android: 设置 → 网络 → Wi-Fi → 当前网络 → 高级 → DNS → 设置为本机 IP 地址
- Mac: 系统设置 → 网络 → Wi-Fi → 详细信息 → DNS → 添加本机 IP 地址
- Windows: 设置 → 网络 → Wi-Fi → 硬件属性 → DNS 服务器分配 → 手动 → 设置 IPv4 DNS
- Linux: 编辑
/etc/resolv.conf,或使用 NetworkManager:nmcli con mod "Wi-Fi" ipv4.dns "MACHINE_IP"
步骤 3:验证是否生效
# 应返回 0.0.0.0(表示已被拦截) nslookup ads.google.com MACHINE_IP # 应返回真实 IP 地址(表示放行) nslookup google.com MACHINE_IP
或通过 API 检查:curl http://localhost:8053/stats
Agent 命令
当用户询问广告拦截相关操作时,请使用以下命令:
查看统计信息
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—— 服务配置文件
使用约束
- 端口 53 需要 root / sudo 权限
- 设备必须显式配置为使用本机 IP 作为 DNS 服务器,拦截功能方可生效
- 若本机离线,所有将其设为 DNS 的设备将失去域名解析能力(请务必配置备用 DNS 作为回退)
- 仅拦截域名层级请求,无法移除网页内的广告元素(此类需求请使用浏览器广告拦截扩展)
- 绕过系统 DNS 的 HTTPS/DoH 查询(如部分 App 或浏览器启用 DoH 后)将不会被拦截
热门AI工具
相关专题
出现错误代码dns_probe_possible,这个错误提示意味着浏览器无法解析网站的域名。想了解更多错误代码的相关内容,可以阅读本专题下面的文章。
2930
2024.01.05
dns解析失败是网络问题、DNS服务器问题、域名拼写错误、DNS缓存问题、域名注册问题、防火墙或安全软件、域名服务器设置问题和DNS劫持等原因造成的。更多关于dns解析失败的问题详细请看本专题下面的文章。php中文网欢迎大家前来学习。
5359
2023.11.09
dns故障解决办法:1、重启DNS服务器;2、检查网络连接,确保您的网络连接正常;3、清除DNS缓存;4、修改本地DNS设置;5、使用代理服务器;6、更新软件和驱动程序;7、检查系统日志;8、重装系统即可。
1675
2023.10.20
本专题介绍Gradle插件开发的基本流程,涵盖插件类编写、自定义任务注册、扩展参数设计和插件应用方法,帮助你理解插件如何组织构建逻辑,减少多个项目之间的重复配置。
0
2026.10.22
本专题介绍Gradle Wrapper的基本作用,涵盖文件组成、生成方法、版本配置和任务调用,帮助你理解项目如何使用指定的Gradle版本,减少不同开发环境带来的构建差异。
0
2026.10.22
本专题整理Golangci-lint常用Linters的用途与配置方法,覆盖错误处理、无效代码、安全、复杂度、命名和依赖检查,帮助项目合理选规则。
0
2026.10.22
本专题介绍Gradle Java项目构建方法,涵盖Java插件配置、依赖声明、源码编译、测试执行和打包检查,帮助你理解各阶段的任务关系,逐步完成项目构建。
0
2026.10.22
本专题汇总PHP常见时间戳漏洞,包括2038年溢出、时区漂移、时间戳伪造、重放攻击、时间盲注与日志审计失效等,并给出升级64位环境、使用 DateTimeImmutable、统一UTC、严格超时校验、预处理绑定、hash_equals 比对等修复方案,帮助开发者快速排查和加固时间相关代码。
0
2026.10.22
本专题聚焦Golangci-lint YAML配置文件,讲清运行参数、规则启停、目录排除、问题过滤及严重级别设置,便于团队统一检查标准。
0
2026.10.22
热门下载
相关下载
精品课程
共6课时 | 12.1万人学习
共79课时 | 161.5万人学习
共6课时 | 54.7万人学习
最新文章