Как урезать блокировщик рекламы до размера флешки и не потерять мощность
<div class="articl-text-cover" style="position:relative;width:100%;max-width:800px;margin-left:auto;margin-right:auto;aspect-ratio:1200/675;margin-bottom:2rem;overflow:hidden">
<div itemprop="articleBody">Египетский разработчик ZedAxis собрал на микроконтроллере ESP32-C3 фильтр рекламы, который блокирует более 537 тыс. доменов и стоит около $5.
Устройство работает как резервный сервер доменных имён для домашней сети. Основную фильтрацию у разработчика выполняет Pi-hole на одноплатном компьютере Raspberry Pi, а миниатюрная плата подменяет его во время перезагрузки или отключения. Благодаря такой схеме домашние устройства не переключаются на обычный сервер без блокировки рекламы.
ESP32-C3 располагает лишь 400 КБ оперативной и 4 МБ флеш-памяти, поэтому сохранить сотни тысяч адресов в обычном текстовом виде невозможно. Разработчик решил хранить не сами домены, а их короткие цифровые отпечатки длиной 40 бит. Вариант на 32 бита давал бы слишком много совпадений, а 64-битные значения заняли бы лишнее место.
Фильтр рекламы на базе платы ESP32-C3 ( ZedAxis )
Перед загрузкой базы программа скачивает открытые списки блокировки, удаляет комментарии и повторяющиеся записи, а затем преобразует каждый домен в цифровой отпечаток. Получившиеся значения сортируются и записываются во флеш-память платы. Когда в сеть поступает запрос, ESP32 таким же способом обрабатывает адрес сайта и ищет совпадение в базе. Найденный домен блокируется, остальные запросы перенаправляются на внешний сервер.
По словам ZedAxis, программа занимает около 50 КБ оперативной памяти, а на ответ на запрос к заблокированному домену уходит примерно 10 миллисекунд. На плате также работает простая панель управления, где можно посмотреть статистику и добавить собственные адреса в список блокировки.
Количество доменов зависит от разметки памяти. Обычно ESP32 хранит две копии программы, чтобы безопасно устанавливать обновления по беспроводной сети. Если сохранить такую возможность, в базу помещается около 250 тыс. адресов. Если отказаться от беспроводных обновлений и отдать второй раздел под список блокировки, ёмкость вырастает примерно до 537 тыс. доменов.
Проект не заменяет полноценные системы Pi-hole или AdGuard Home . Миниатюрный фильтр не ведёт подробную историю запросов, не показывает статистику по отдельным устройствам и предлагает лишь базовые настройки. Зато плата потребляет несколько десятков миллиампер и может постоянно работать как запасной сетевой фильтр.
ZedAxis подключил устройство к разъёму USB на домашнем оптическом маршрутизаторе Huawei OptiXstar. Разъём передаёт только питание, а обмен данными проходит через встроенный модуль Wi-Fi. В результате небольшой фильтр почти полностью скрывается за маршрутизатором и продолжает блокировать рекламу даже при временном отключении основного сервера.
<div class="articl-text-cover" style="position:relative;width:100%;max-width:800px;margin-left:auto;margin-right:auto;aspect-ratio:1200/675;margin-bottom:2rem;overflow:hidden">
<div itemprop="articleBody">Египетский разработчик ZedAxis собрал на микроконтроллере ESP32-C3 фильтр рекламы, который блокирует более 537 тыс. доменов и стоит около $5.
Устройство работает как резервный сервер доменных имён для домашней сети. Основную фильтрацию у разработчика выполняет Pi-hole на одноплатном компьютере Raspberry Pi, а миниатюрная плата подменяет его во время перезагрузки или отключения. Благодаря такой схеме домашние устройства не переключаются на обычный сервер без блокировки рекламы.
ESP32-C3 располагает лишь 400 КБ оперативной и 4 МБ флеш-памяти, поэтому сохранить сотни тысяч адресов в обычном текстовом виде невозможно. Разработчик решил хранить не сами домены, а их короткие цифровые отпечатки длиной 40 бит. Вариант на 32 бита давал бы слишком много совпадений, а 64-битные значения заняли бы лишнее место.
Фильтр рекламы на базе платы ESP32-C3 ( ZedAxis )
Перед загрузкой базы программа скачивает открытые списки блокировки, удаляет комментарии и повторяющиеся записи, а затем преобразует каждый домен в цифровой отпечаток. Получившиеся значения сортируются и записываются во флеш-память платы. Когда в сеть поступает запрос, ESP32 таким же способом обрабатывает адрес сайта и ищет совпадение в базе. Найденный домен блокируется, остальные запросы перенаправляются на внешний сервер.
По словам ZedAxis, программа занимает около 50 КБ оперативной памяти, а на ответ на запрос к заблокированному домену уходит примерно 10 миллисекунд. На плате также работает простая панель управления, где можно посмотреть статистику и добавить собственные адреса в список блокировки.
Количество доменов зависит от разметки памяти. Обычно ESP32 хранит две копии программы, чтобы безопасно устанавливать обновления по беспроводной сети. Если сохранить такую возможность, в базу помещается около 250 тыс. адресов. Если отказаться от беспроводных обновлений и отдать второй раздел под список блокировки, ёмкость вырастает примерно до 537 тыс. доменов.
Проект не заменяет полноценные системы Pi-hole или AdGuard Home . Миниатюрный фильтр не ведёт подробную историю запросов, не показывает статистику по отдельным устройствам и предлагает лишь базовые настройки. Зато плата потребляет несколько десятков миллиампер и может постоянно работать как запасной сетевой фильтр.
ZedAxis подключил устройство к разъёму USB на домашнем оптическом маршрутизаторе Huawei OptiXstar. Разъём передаёт только питание, а обмен данными проходит через встроенный модуль Wi-Fi. В результате небольшой фильтр почти полностью скрывается за маршрутизатором и продолжает блокировать рекламу даже при временном отключении основного сервера.
- Источник новости
- www.securitylab.ru