Adblock Dns

Polar Sponsor
爱发电 赞助
.NET 9.0

在你的机器上运行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

该脚本将执行以下操作:

  1. 按需安装依赖项
  2. 创建 systemd 服务(以 root 权限运行,开机自启,崩溃后自动重启)
  3. 下载屏蔽列表(涵盖约 15 万以上域名)
  4. 在端口 53 启动 DNS 服务器
  5. 在端口 8053 启动统计信息 API 服务
  6. 输出本机 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 后)将不会被拦截

相关专题

更多
dns_probe_possible怎么解决
dns_probe_possible怎么解决

出现错误代码dns_probe_possible,这个错误提示意味着浏览器无法解析网站的域名。想了解更多错误代码的相关内容,可以阅读本专题下面的文章。

2024.01.05

2930

5

dns解析失败是什么原因
dns解析失败是什么原因

dns解析失败是网络问题、DNS服务器问题、域名拼写错误、DNS缓存问题、域名注册问题、防火墙或安全软件、域名服务器设置问题和DNS劫持等原因造成的。更多关于dns解析失败的问题详细请看本专题下面的文章。php中文网欢迎大家前来学习。

2023.11.09

5359

8

dns故障如何解决
dns故障如何解决

dns故障解决办法:1、重启DNS服务器;2、检查网络连接,确保您的网络连接正常;3、清除DNS缓存;4、修改本地DNS设置;5、使用代理服务器;6、更新软件和驱动程序;7、检查系统日志;8、重装系统即可。

2023.10.20

1675

4

Gradle插件开发入门教程
Gradle插件开发入门教程

本专题介绍Gradle插件开发的基本流程,涵盖插件类编写、自定义任务注册、扩展参数设计和插件应用方法,帮助你理解插件如何组织构建逻辑,减少多个项目之间的重复配置。

2026.10.22

0

11

Gradle Wrapper配置教程
Gradle Wrapper配置教程

本专题介绍Gradle Wrapper的基本作用,涵盖文件组成、生成方法、版本配置和任务调用,帮助你理解项目如何使用指定的Gradle版本,减少不同开发环境带来的构建差异。

2026.10.22

0

10

Golangci-lint检查器使用教程
Golangci-lint检查器使用教程

本专题整理Golangci-lint常用Linters的用途与配置方法,覆盖错误处理、无效代码、安全、复杂度、命名和依赖检查,帮助项目合理选规则。

2026.10.22

0

15

Gradle怎么构建Java项目
Gradle怎么构建Java项目

本专题介绍Gradle Java项目构建方法,涵盖Java插件配置、依赖声明、源码编译、测试执行和打包检查,帮助你理解各阶段的任务关系,逐步完成项目构建。

2026.10.22

0

10

PHP时间戳漏洞修复教程
PHP时间戳漏洞修复教程

本专题汇总PHP常见时间戳漏洞,包括2038年溢出、时区漂移、时间戳伪造、重放攻击、时间盲注与日志审计失效等,并给出升级64位环境、使用 DateTimeImmutable、统一UTC、严格超时校验、预处理绑定、hash_equals 比对等修复方案,帮助开发者快速排查和加固时间相关代码。

2026.10.22

0

25

Golangci-lint配置文件与规则设置
Golangci-lint配置文件与规则设置

本专题聚焦Golangci-lint YAML配置文件,讲清运行参数、规则启停、目录排除、问题过滤及严重级别设置,便于团队统一检查标准。

2026.10.22

0

15

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
热门推荐
/
最新课程
phpStudy极速入门视频教程
phpStudy极速入门视频教程

共6课时 | 54.7万人学习

独孤九贱(4)_PHP视频教程
独孤九贱(4)_PHP视频教程

共89课时 | 133.9万人学习