工程师打造硬件广告拦截器仅耗50KB内存封杀537000广告域名
日期@2026-07-25https://mp.weixin.qq.com/s/QWR8MyHQUlwActYip5dilA
工程师打造“硬件广告拦截器”,仅耗 50KB 内存,封杀 537000 广告域名
点击**👆**科技小萌👇关注我,加★**星标★**## 前言
要打造一台带广告拦截功能的硬件 DNS 过滤器,成本能低到什么程度?
答案是:只要找个便宜甚至废弃的硬件,成本几乎可以是零。
有一位名叫 ZedAxis( GitHub 账号为 @M-Abozaid )的全栈工程师,就用一块售价只要 5 美元的 ESP32-C3 SuperMini 开发板,成功做出了一个能在局域网里拦截广告的备用 DNS 服务器。
即便这台小设备封杀了超过 50 万个广告域名,处理一条被拦截的请求也只需要大约 10 毫秒,表现相当出彩。
为您推荐新年最推荐软件之 v2026 版
Windows 11 2026 (含 6 月更新) iso 镜像科技小萌微信群邀请函 2026
详细介绍
在普通家庭网络里,很多人会选择用树莓派( Raspberry Pi )跑 Pi-hole 软件来做主路由的 DHCP 与 DNS 解析,以此实现全局域网拦截广告。
但问题在于,如果 Pi-hole 突然重启或者宕机,网络就会退回普通 DNS 解析,广告也就跟着露头了。
为了解决这个问题,开发者决定做一台低成本、低功耗的备用 DNS 拦截器。

不过 ESP32-C3 这款芯片只有 400KB 的 RAM 和 4MB 的 Flash 闪存,跟常规的 PC 或树莓派相比,内存资源非常紧张。
像 Pi-hole 这类工具,通常会直接把几十万条明文域名黑名单全部加载进 RAM 里面,而 ESP32 根本吃不下这么大的数据量。
为了突破硬件瓶颈,开发者用了一招巧妙的哈希算法。
在生成黑名单时,系统会自动下载公开的广告黑名单,剔除重复项和注释后,把每个域名转成 40 比特(即 5 字节)的 FNV-1a 哈希值。
经过测试,40 比特刚好能完美平衡存储空间和哈希冲突问题。
这些哈希值排序好之后,会被直接写入芯片的 Flash 闪存里。
当局域网发送 DNS 查询请求时,芯片会对请求域名计算哈希,并在 Flash 里的哈希表进行二分查找。
如果匹配成功就直接拦截,匹配不上再转给外部 DNS 服务器处理。
通过这种“不把黑名单载入 RAM,直接在 Flash 里查找”的方式,整个系统在运行期间只消耗大约 50KB 的 RAM。
如果保留芯片的 OTA 远程升级功能,可以在 4MB 的 Flash 里面塞下约 25 万个域名;
如果把 OTA 占用的空间释放掉,甚至能一口气塞进 537000 个广告域名。
这台小巧的硬件拦截器只要插在路由器或光猫的 USB 接口上就能直接供电,工作电流只有几毫安,平时完全不占用过多资源。
一旦主 DNS 服务器因为重启或故障掉线,它就能立刻无缝接管,继续帮局域网内的设备过滤广告。
目前该项目已经在 GitHub 上开源(遵循 MIT 开源协议),项目中不仅包含了生成哈希表的 Python 脚本,还提供了一个简易的 GUI 界面,方便查看统计数据以及配置自定义拦截域名。
如果有兴趣,完全可以花几块钱买一块 ESP32 开发板,动手折腾出一台专属的微型硬件广告拦截器。
esp32-c3-adblockhttps://github.com/M-Abozaid/esp32-c3-adblock
为小妹转发和点赞
如果您喜欢小妹的分享,请点击文章末尾的点赞、分享、在看,这对您来说不会花费太多时间,但是对小妹的成长有很大的帮助,谢谢您的支持!
免费搞定 Google 官方认证证书网络、虚拟化、任何软件问题,点这儿新年最推荐软件之 v2026 版唯一有效下载 BiliBili 1080p 视频的方法终于搞定 Windows11 拖动任务栏位置轻松破解 Windows11 登录密码
Source: WeChat Article