Flashless • RU : Что "под капотом"
Опубликовано: Бармалей · 10.03.2018 · 00:02 ••• Обновление: 12.01.2021 · 11:16 0

Для "продвинутых" пользователей, желающих знать технические подробности расширения Flashless • RU.

В этой статье:


Технические детали: применяемые API и примечания по исходному коду

В исходном коде используется только чистый JS (ES5), неподдерживаемые в "старых" браузерах функции отсутствуют.

Скрипты работают в "строгом" режиме – для гарантированного выполнения функций и облегчения отлова ошибок.

Расширение работает полностью автономно, не имеет фонового процесса и занимает память в покое.

Работа аддона основана на CSS-фильтрации html-тегов <embed>, <object> и <iframe> (принцип работы + пояснение). Кроме объектов Adobe Flash фильтруются также элементы MS Silverlight и видео Adobe Director. Поиск и выбор "под зачистку" осуществляется по типу и классу таких объектов.

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

Расширение существует в виде двух независимых линеек, Flashless Pico и Flashless Nano, первая из которых имеет минимальные требования к версии браузера (17+) и работает только в режиме CSS+JS фильтрации. Второй вариант (Nano) в дополнение к инлайн-фильтрам позволяет заблокировать флэш ещё и на уровне настроек браузера.

В версиях Flashless Nano кроме плагина Adobe Flash опционально блокируется также и веб-плагин VLC media player (существует только в виде NPAPI-плагина). В этой линейке при каждом включении аддона (или при рестарте браузера) производится проверка наличия в браузере установленных плагинов, могущих воспроизводить флэш-контент, и их автоматическая блокировка.

Плагин Adobe Flash блокируется безусловно и без запросов (как наиболее известный и "злостный" поставщик флэша)). Если при проверке будет обнаружен ещё и плагин VLC media player, буден выдан однократный запрос на его блокировку. Ответ пользователя в любом случае будет запомнен и может быть изменён только при переустановке расширения (сохраняется в localStorage расширения).

В версиях Flashless Nano для управления блокировкой загрузки флэш-объектов по типу контента (на уровне настроек браузера) применяется API chrome.contentSettings. Управление блокировками по типу контента перекрывает связанную часть настроек браузера (chrome://settings/content), но не ограничивает* пользователя в возможности задания исключений для отдельных сайтов ("белый список").

* Сто́ит отметить, что "вам это не поможет", потому как скрипт-инжектор и CSS-фильтр в любом случае "сделают своё чёрное дело" и снесут (и обнулят) флэш даже на самых "белых и пушистых" сайтах.))

Обе линейки Flashless имеют один и тот же ID и могут быть взаимозаменяемы путём установки "поверх". Это сделано во избежание дублирования одних и тех же функций фильтрации, абсолютно идентичных в обоих линейках одной версии.

Аддон не имеет практических ограничений* по версии браузера, используемые API работают в версиях 22+.

* В манифесте ограничение "снизу" установлено только в линейке Flashless Nano, так как оно связано с вызовом функций API управления плагинами в браузере, отсутствующего в более старых версиях. Для других версий работоспособность аддона возможна даже в "раритетах" на 17-й версии движка…)

Исходный код НЕ обфусцирован, исключительно с целью удобства при возможных доработках и для облегчения читаемости кода при его исследовании.

Если кому-то это критично – удалите комментарии и пропустите через компрессоры…)


Ресурсы и ссылки по разработке Flashless • RU



Блокировка контента Бармалей
Бармалей 10.03.2018 12.01.2021 256 0.0

Общие технические сведения о разработке
Статус разработки:Активная, поддерживается автором
Язык интерфейса:Русский
Версия браузера:17+ (рекомендуется 22+)
Протестировано в:SRWare Iron 17/29/31/49 + 360 Extreme Explorer 11/12 (CR-69/78)
Технологии и API:Чистый JS (ES5), API: content_scripts, contentSettings

Поделиться

Всего комментариев: 0
close