Для "продвинутых" пользователей, желающих знать технические подробности расширения 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 |