谁家的智能设备还没几个"关不掉"的广告?于是最近有个玩法在B站和知乎同时火了:一块十几块钱的ESP32-C3开发板,被做成了开源广告拦截器,号称"插家里就能给全屋去广告"。相关视频5万播放、4千人收藏,知乎两篇核实文章紧随其后——聪明是真聪明,玄乎也是真玄乎。知乎GitHub
它到底是何方神圣?
这个开源项目叫 esp32-c3-adblock,干的事一句话能讲清:把ESP32-C3变成一台局域网DNS服务器。手机、电脑打开任何网页前先"问路"(域名解析),正常域名照常放行,广告和追踪域名直接回一句"0.0.0.0,此路不通",广告压根加载不出来。全屋设备共享一个出口,不用每台手机单独装插件——思路就是Pi-hole那一脉,但把服务器塞进了一颗RISC-V单片机。就这,惊动了Tom’s Hardware专门写文报道。知乎Tom's Hardware
真正值得看的,是它怎么"抠"字节的。
Pi-hole们都要在内存里维护黑名单,可ESP32-C3只有400KB SRAM,53万个域名字符串想都别想。开发者的解法很DIY:不存域名本身,只存40位哈希——用FNV-1a算法把每个域名压成5个字节,排好序固化进4MB闪存;查询时二分查找,14万条黑名单只需约18次比较,含Wi-Fi往返约10毫秒搞定,运行内存只占50KB左右。为什么是40位?32位更省但撞哈希会误杀正经域名,64位更安全但每条多3字节,闪存塞不下——这个数字是在存储、误杀、性能三者之间反复权衡的结果。项目还提供了OTA自动更新:GitHub Actions每周重建规则包,板子走Wi-Fi同步;想要53万条的"满配",就得单分区、放弃OTA——鱼和熊掌,固件分区先替你做了取舍。知乎知乎GitHub
但评论区追问的三件事,动手前必须想明白:
一是它拦的是域名,不是广告位。广告跟正常内容走同一个域名的第一方广告、视频网站贴片、App信息流推广,它基本无能为力。“插上就全家广告秒没”,是自媒体加戏。知乎
二是误伤。哈希碰撞和黑名单更新都可能错杀正常网站。好在它有网页控制台(c3adblock.local),拦截统计、日志、手动加白名单都能操作,发现打不开的站点记得去看一眼。GitHub知乎
三是稳定性。它接管的是全屋DNS,板子一宕机,全家设备集体"上不了网"。还有个现实门槛:不少路由器根本没有USB口给它供电。知乎
所以这板子适合谁?没有软路由、没有NAS、也不想让电脑24小时开机,就想花十几块体验一下"全屋级"去广告的人——它是目前门槛最低的答案。已经有AdGuard Home的,不用羡慕,那是另一个赛道的玩法。至于闲鱼上冒出来的"代刷成品",你品,你细品。知乎
说到底,这个项目火出圈不是因为"去广告",而是它演示了嵌入式思维最迷人的部分:内存不够,就用算法省。这大概就是电子DIY的乐趣——花小钱,动脑子,把不可能变成"能,但有条件"。