∴ GitHub / 趋势仓库
M-Abozaid / esp32-c3-adblock
在无 PSRAM 的 ESP32-C3 上实现 Pi-hole 式 DNS 广告拦截
- 语言
- C++
- Star
- 1.3k
- Fork
- 119
- 当日新增(10-06)
- +196
- 累计在榜
- 1 天
- 最高名次
- 第 14 名
- 首次上榜
- 2026-10-06
∴ 是什么
这是一个基于哈希存储的 DNS 广告拦截器固件,运行在低成本的 ESP32-C3 芯片上。它将约 53.7 万个域名以 40 位 FNV-1a 哈希形式存于闪存中,通过二分查找进行匹配,实现 UDP DNS 封锁与 Web 管理面板。
∴ 解决什么问题
- 传统 ESP32 DNS sinkhole 需将域名列表载入 RAM,需要 PSRAM,成本高
- 在无 PSRAM 的低成本芯片上实现大规模域名拦截
- 减少 DNS 拦截过程中的内存占用与查询延迟
∴ 怎么上手
- 01复制并编辑 src/secrets.example.h 为 src/secrets.h,设置 WEB_USER、WEB_PASS、OTA_PASS
- 02运行 python3 tools/build_blocklist.py data/blocklist.bin 构建拦截列表哈希表
- 03运行 pio run -t upload 烧录固件
- 04运行 pio run -t uploadfs 烧录文件系统
- 05运行 pio device monitor 查看启动信息并获取 IP(如 http://c3adblock.local)
∴ 适合谁
适合需要低成本、低功耗 DNS 级广告拦截方案的嵌入式开发者或网络爱好者,尤其适合使用 ESP32-C3 且不希望外接 PSRAM 的场景。
∴ 要点
- 使用 40 位哈希存于闪存,约 50 KB RAM 即可匹配 14 万+ 域名
- 支持 OTA 升级固件与拦截列表,可通过仪表盘或 CLI 进行
- 提供 Web 仪表盘,支持客户端管理、自定义域名封禁等
- 支持多种列表格式:hosts 文件、纯域名列表、AdGuard 规则
- WiFi 设置通过开放 AP 门户完成,无需重新烧录
- 所有状态变更接口需 HTTP Basic Auth,并校验自定义头防止 CSRF
许可证 MITadblockerarduinodnsdns-sinkholeesp32esp32-c3iotpi-holeplatformio
解读由 AI 依据项目 README 生成,生成于 2026-10-06,以 GitHub 原文为准。
∴ 在榜记录
GitHub Trending 今日榜的每日存档,日期按北京时间。2026-10-06 首次上榜,累计在榜 1 天,最高第 14 名。