多彩编程 多彩编程MZPH · CODE BLOG
ARTICLE DETAIL

文章详情

深耕前端与后端开发技术的一线实战笔记与踩坑复盘。

10分钟从零到去广告网关:esp32-c3-adblock快速上手教程

10分钟从零到去广告网关:esp32-c3-adblock快速上手教程 10分钟从零到去广告网关esp32-c3-adblock快速上手教程【免费下载链接】esp32-c3-adblockPi-hole-class DNS ad-blocker on a $2 ESP32-C3 (no PSRAM): 537k domains as 40-bit FNV-1a hashes in flash, binary-searched. UDP DNS sinkhole web dashboard. https://youtube.com/shorts/RaxszOUMi8E?featureshare项目地址: https://gitcode.com/GitHub_Trending/es/esp32-c3-adblock想让家里的每台设备都告别广告开源项目esp32-c3-adblock用一块仅需 2 美元、不带 PSRAM 的 ESP32-C3 开发板做出了一台Pi-hole 同级的 DNS 去广告网关它把 53 万 广告域名压缩成 40 位 FNV-1a 哈希存进 Flash通过二分查找 UDP DNS 黑洞拦截sinkhole实现拦截RAM 占用仅约 50 KB单次拦截查询约 10 毫秒。本文带你 10 分钟内完成从零搭建、配置 WiFi 到全网生效的完整流程。为什么这个项目值得关注大多数 ESP32 去广告方案要把域名字符串整个装进 RAM因此必须配 PSRAM而 esp32-c3-adblock 把域名变成固定 5 字节的哈希存 Flash硬件成本直接砍半对比项字符串存 RAM 方案哈希存 Flash本项目硬件ESP32 PSRAM约 8 美元ESP32-C3无 PSRAM约 2 美元14 万域名约 2.5 MB RAM0.67 MB FlashRAM 占用占满大部分约 50 KB查询耗时字符串比对约 18 次 Flash 读约 10 ms含 WiFi RTT拦截原理一句话讲清DNS 查询进来 → 提取域名 → 计算 FNV-1a 哈希含父域名后缀 → 在 Flash 哈希表中二分查找 ├─ 命中 → 直接回复 0.0.0.0广告死掉 └─ 未中 → 转发给上游 DNS原样中继回复硬件准备清单任意ESP32-C3开发板官方在 C3 SuperMini 上实测4 MB Flash不需要 PSRAM稳定的 USB 供电手机充电头或路由器背后的 USB 口均可劣质 USB 线容易在 WiFi 发射时掉电重启可选USB-A 转 USB-C 转接头直接插路由器使用无需额外电源想更美观仓库自带可打印外壳 esp32-c3-supermini-enclosure.stl打印注意保留天线端空隙和通风孔README 打印说明三步刷入配置、构建、烧录提示请先用git clone https://gitcode.com/GitHub_Trending/es/esp32-c3-adblock获取项目源码。第 1 步复制并编辑 secrets.h项目模板文件 secrets.example.h 里要填 3 类信息cp src/secrets.example.h src/secrets.h # 然后编辑 src/secrets.hWIFI_SSID/WIFI_PASS可留空稍后用设备热点配网推荐更灵活WEB_USER/WEB_PASS/OTA_PASS必填这是仪表盘管理端点和 OTA 升级的密码务必改成真实值第 2 步构建广告拦截列表用仓库自带脚本 build_blocklist.py不传参数时会下载一份日用均衡列表StevenBlack base Hagezi Light约 10 万条拦截广告/跟踪/恶意域名同时保留微信类、社交、聊天软件可用python3 tools/build_blocklist.py data/blocklist.bin脚本支持混用 URL 和本地文件兼容 hosts 文件、纯域名列表、AdGuard 规则三种格式细节见 test_build_blocklist.py 覆盖的测试用例。第 3 步USB 一键刷入最后一次插 USBplatformio.ini 已预设好 C3 环境两条命令搞定pio run -t upload # 刷固件 pio run -t uploadfs # 刷广告列表文件系统littlefs pio device monitor # 查看启动日志记住设备 IP⚠️ 请安装较新的 PlatformIOVSCode 扩展自带或pip install -U platformio过旧的系统包会报resultcallback错误。免重刷配网热点 引导页如果secrets.h没写 WiFi设备会自动开启一个开放热点C3-AdBlock-XXXX手机连上它会弹出引导页选择你的家庭网络、输入密码即可全程不用重新烧录。以后想换网络在仪表盘点Forget WiFi或者上电时按住BOOT键配网页面就会再次出现。让全网去广告把 DNS 指过去设备启动后通过 mDNS 暴露了c3adblock.local两种方式接入把某台设备的 DNS 手动改成 C3 的 IP更省事在路由器里把它设为二级 DNSsecondary resolver主 DNS 挂了它还能顶上两条命令即可验证拦截是否生效dig c3的IP doubleclick.net # → 0.0.0.0已拦截 dig c3的IP github.com # → 真实 IP正常转发网页仪表盘与 OTA 升级浏览器打开c3adblock.local就是完整控制台之后基本告别 USBBlocklist上传新构建的blocklist.bin或配置远程定时自动更新Firmware上传.pio/build/c3/firmware.bin完成固件 OTA也可用命令行pio run -t upload --upload-port c3adblock.local --upload-protocol espota统计查看每台客户端的拦截/放行次数还能一键拉黑某台设备、添加自定义拦截域名一个取舍要知道4 MB Flash 下固件 OTA 需要双 app 分区见 partitions.csv广告列表空间约 1.3 MB、上限约 25 万域名若要上 53 万域名的极限列表则需换单 app 分区表牺牲固件 OTA。懒人彩蛋不想装 PlatformIO仓库 docs/ 目录内置了浏览器一键刷写页 docs/index.html基于 ESP Web Tools manifest.jsonChrome/Edge 桌面端点一下 Connect Install约 30 秒刷入固件 14 万域名列表。常见坑与排查Linux 下串口被抢Fedora/Ubuntu 默认的 ModemManager 会占用/dev/ttyACM0并重置 C3执行sudo systemctl stop ModemManager即可详细 udev 规则见 README.md 的 Gotchas 一节默认密码警告secrets.h仍是占位值时设备仍能启动但仪表盘会显示警告横幅——请一定设置真实密码因为这台设备处于全网 DNS 查询的路径上核心固件源码在 main.cppDNS 服务端 Web 服务器仪表盘页面在 page.h写在最后用 2 美元的板子换掉一台树莓派去广告服务器这正是 esp32-c3-adblock 的魅力哈希存 Flash、RAM 仅 50 KB、10 毫秒响应、OTA 免维护。跟着上面的步骤走10 分钟后你的全屋设备都会安静许多 ️ 项目采用 MIT 协议LICENSE放心折腾。【免费下载链接】esp32-c3-adblockPi-hole-class DNS ad-blocker on a $2 ESP32-C3 (no PSRAM): 537k domains as 40-bit FNV-1a hashes in flash, binary-searched. UDP DNS sinkhole web dashboard. https://youtube.com/shorts/RaxszOUMi8E?featureshare项目地址: https://gitcode.com/GitHub_Trending/es/esp32-c3-adblock创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表