ESP32-S3: Блокировка рекламы на уровне сети всего за несколько долларов
Домой > В помощь строителю > ESP32-S3: Блокировка рекламы на уровне сети всего за несколько долларов

ESP32-S3: Блокировка рекламы на уровне сети всего за несколько долларов

Рекомендации ZDNET основаны на многочасовом тестировании, исследованиях и сравнительном анализе товаров. Данные собираются из лучших доступных источников, включая каталоги поставщиков и розничных продавцов, а также другие авторитетные и независимые обзорные сайты. Также изучаются отзывы потребителей, чтобы понять, что действительно важно для реальных людей, которые уже владеют и используют оцениваемые продукты и услуги.

При переходе с сайта ZDNET к продавцу и покупке продукта или услуги, издание может получать партнерские комиссионные. Это поддерживает работу редакции, но не влияет на содержание обзоров или их независимость, а также на цену для покупателя. Ни ZDNET, ни обозреватели не получают компенсации за эти независимые обзоры. Редакция следует строгим принципам, гарантирующим, что редакционный контент никогда не подвергается влиянию рекламодателей.

Редакционная команда ZDNET стремится предоставлять максимально точную информацию и экспертные рекомендации, чтобы помочь читателям принимать обоснованные решения при покупке техники и других продуктов. Редакторы тщательно проверяют и фактчекингуют каждую статью, чтобы обеспечить соответствие контента самым высоким стандартам. В случае обнаружения ошибок или недостоверной информации, статья будет исправлена или дополнена.

Обозреватель ZDNET рассказал, как ему удалось запрограммировать плату ESP32-S3 стоимостью 7 долларов США для блокировки всей веб-рекламы, затратив на это всего несколько минут.

Ключевые выводы ZDNET

  • Дешевая плата стоимостью около 7 долларов США может быть использована для блокировки рекламы.
  • Устройство работает как DNS-«черная дыра» (DNS sinkhole), отсекая рекламу до её загрузки.
  • Среди других вариантов — использование Raspberry Pi или покупка готового аппаратного решения.

Отмечается, что рост цен на платы Raspberry Pi стимулировал поиск более дешевых и, возможно, более подходящих альтернатив. Хотя Raspberry Pi является отличной платформой, для многих задач, в которых она использовалась в течение почти 15 лет своего существования, она часто оказывалась избыточной.

Недавно возникла необходимость в создании решения для блокировки рекламы, не столько из-за неприязни к рекламе, сколько из-за работы с ограниченной пропускной способностью интернет-канала. Сначала обозреватель инстинктивно потянулся за платой Raspberry Pi, но отказался от этой идеи, вспомнив текущую стоимость этих устройств.

Изначально планировалось использовать PiHole на Raspberry Pi, но затем вспомнился проект по блокировке рекламы, который работал на плате ESP32. Положительным моментом является то, что эти платы можно приобрести менее чем за 10 долларов США.

Представляем ESP32-S3

Между Raspberry Pi 5 и платой ESP32 (в частности, ESP32-S3) существует значительная разница. Pi 5 оснащена четырехъядерным 64-битным чипом Arm Cortex-A76 с частотой 2,4 ГГц, гигабайтами оперативной памяти и возможностью использования карт microSD или быстрых NVMe SSD-накопителей. В то же время ESP32 использует двухъядерный 32-битный процессор Tensilica Xtensa LX7 с тактовой частотой до 240 МГц, 520 КБ оперативной памяти и до 16 МБ флеш-памяти.

Raspberry Pi 5 может потреблять до 12 Вт энергии (и это без учета подключения различных HAT-модулей и других периферийных устройств), в то время как плата ESP32 потребляет милливатты.

Для данного проекта ESP32 была выбрана как оптимальное решение, несмотря на некоторые неизбежные компромиссы, которые будут рассмотрены далее.

Что потребуется

Прежде всего, потребуется плата ESP32. Рекомендуется выбирать модель ESP32-S3 с 8 МБ PSRAM (существует также версия с 4 МБ, но её использование повлечет за собой компромиссы) вместо классической ESP32. ESP32-S3 быстрее и эффективнее, а её производительность необходима для корректной работы программного обеспечения блокировщика рекламы. Наиболее экономичный способ приобрести эти платы — купить набор из трех штук за 20 долларов США.

При первом знакомстве с платой ESP32-S3 её миниатюрные размеры могут вызвать удивление, но она действительно представляет собой полноценный компьютер, который легко помещается на кончике пальца.

Для работы платы понадобится кабель USB-C для передачи данных и подачи питания. При этом, карта microSD для функционирования устройства не требуется.

Что касается программного обеспечения, потребуется загрузить ESP32_AdBlocker, который выполняет основную работу. Для установки ПО на плату также понадобится утилита Arduino IDE. Процесс установки прост: необходимо настроить приложение Arduino IDE для работы с платой ESP32, открыть проект в приложении, подключить плату к ПК и нажать кнопку «Загрузить».

Важно отметить, что при подключении платы ESP32-S3 к компьютеру она имеет два USB-порта. Следует использовать тот, который помечен как COM или USB/Native (если смотреть на плату с портами внизу, это правый порт). В качестве альтернативы можно попробовать другой порт.

В случае возникновения проблем можно найти множество полезной информации. Одной из распространенных ошибок, с которой сталкиваются пользователи, является попытка подключить ESP32 к компьютеру с помощью USB-C кабеля, предназначенного только для зарядки. Также может потребоваться корректировка настроек компиляции и платы в программном обеспечении Arduino IDE. Обозреватель привел скриншот использованных настроек для успешной работы.

Наконец, если потребуется корпус для платы ESP32-S3, существуют различные варианты: его можно купить, напечатать на 3D-принтере, или же импровизировать, обернув плату изолентой или термоусадочной трубкой большого диаметра (около 3,8 см).

Настройка платы

После загрузки программного обеспечения на ESP32 настает время первого запуска и настройки платы. Плата ESP32 теперь функционирует как сетевое устройство.

При первом включении ESP32 запускается в режиме точки доступа Wi-Fi с адресом, начинающимся как ESP32_Adblocker_XXXXXXXXXXXX (где каждый X — буквенно-цифровой символ).

Подключившись к Wi-Fi, следует перейти по адресу 192.168.4.1 и ввести SSID и пароль от домашнего маршрутизатора. После еще одной перезагрузки останется указать URL-адрес списка блокировки (обширный репозиторий списков блокировки можно найти по соответствующей ссылке). После этого основные настройки платы будут завершены.

Единственное, что останется сделать, — это настроить устройства на отправку DNS-запросов (подробнее об этом далее) на плату ESP32. Для этого необходимо использовать ранее указанный адрес — 192.168.4.1 — в качестве DNS-адреса. Подробные инструкции по выполнению этой задачи можно найти в документации CloudFlare по различным платформам (важно помнить, что DNS следует настроить на адрес ESP32, а не на 1.1.1.1 от CloudFlare).

Как это работает

При вводе URL-адреса или нажатии на ссылку, браузеру необходимо определить местоположение веб-страницы в интернете. Для получения этой информации браузер обращается к онлайн-каталогу, называемому DNS-сервером, через процедуру DNS-запроса (DNS расшифровывается как Domain Name System — система доменных имен).

DNS можно представить как телефонный справочник, но для адресов серверов. Веб-страница и все её компоненты — изображения, видео, аудио, анимированные GIF-файлы и, конечно же, реклама — могут находиться как на одном сервере, так и на разных серверах, расположенных по всему миру. Браузер запрашивает адреса, где хранятся все эти части веб-страницы, чтобы собрать и отобразить её пользователю.

И вот в чем заключается остроумное решение: поскольку теперь смартфон, ПК или маршрутизатор настроены на запрос DNS-информации у платы ESP32 (поэтому и требовалось изменить настройку DNS маршрутизатора для работы этого подхода), каждый DNS-запрос сначала фильтруется этой миниатюрной платой ESP32.

Программное обеспечение ESP32_AdBlocker содержит список блокировки из миллионов адресов интернет-рекламы. Проще говоря, каждый раз, когда браузер запрашивает ресурс, находящийся в этом списке, программа сообщает браузеру, что ресурс не найден, указывая на DNS-адрес 0.0.0.0. В результате заблокированная реклама не загружается, что также позволяет экономить интернет-трафик. Если адрес отсутствует в списке, плата передает DNS-запрос на обычный DNS-сервер.

Таким образом, создается DNS-«черная дыра» (DNS sinkhole) для большинства рекламных объявлений в интернете.

Однако существуют и ограничения. Например, данный метод не работает с рекламой на YouTube, поскольку она подается с того же сервера и по тому же адресу, что и видеоконтент. Блокировка такой рекламы привела бы к блокировке самих видео. Подход также несовместим с новыми интернет-адресами IPv6.

Тем не менее, этот проект демонстрирует возможности, которые открывает миниатюрная плата стоимостью менее 10 долларов США.

Не единственный вариант

Для специфической задачи обозревателя — временного решения при работе с ограниченной пропускной способностью интернет-соединения — данный подход оказался эффективным. Это был один из интересных проектов для экспериментов. Если же требуется долгосрочное решение или нет желания замедлять высокоскоростное интернет-соединение, хорошим вариантом станет Raspberry Pi Zero 2 W с запущенным PiHole.

Смотрите также:

Google тестирует кнопку быстрого доступа к ИИ-режиму в браузере Chrome http://domkrat.org/google-testiruet-knopku-byistrogo-dostupa-k-ii-rezhimu-v-brauzere-chrome/.

Интересное по теме: Противостояние вокруг ИИ-моделей Anthropic*, кадровые перестановки в разведке и политическое влияние на UFC

Советы в статье "Выгодное предложение от Paramount+: два месяца по специальной цене" здесь.

Однако такой подход уже увеличивает стоимость до минимум 15 долларов США за голую плату, плюс карта microSD. Это не потребует серьезных финансовых вложений, но, безусловно, это другой ценовой уровень.

PiHole можно запустить на отдельном компьютере или в виртуальной машине. Также можно приобрести готовое устройство, поддерживающее блокировку рекламы «из коробки». Однако, по мнению обозревателя, это лишает проект творческого элемента. Каждому свое решение.