Краткое пояснение про плагины NPAPI и PPAPI
Опубликовано: Бармалей · 03.02.2014 · 01:00 ••• Обновление: 07.02.2021 · 16:50 0

Общие определения и терминология

NPAPI – Википедия

Программный интерфейс подключаемых модулей Netscape (англ. Netscape Plugin Application Programming Interface, NPAPI) — кроссплатформенная архитектура разработки плагинов, поддерживаемая многими браузерами.


PPAPI – Википедия

Pepper API — кроссплатформенное свободное API для создания модулей для Native Client. Плагин Pepper API (англ. Pepper Plugin API, сокр. PPAPI) — кроссплатформенное API для защищённых технологией Native Client плагинов, основанное на NPAPI, но полностью переписанное. На данный момент используется в Chromium-подобных браузерах для запуска PPAPI-версии Adobe Flash и встроенной программы просмотра PDF-файлов.

12 августа 2009 на странице Google Code был представлен проект Pepper, связанный с разработкой плагина Pepper API, на которой было написано, что PPAPI — набор модификаций NPAPI для создания подобных плагинов более переносными и безопасными. Плагин был создан для лёгкой реализации запуска вне процесса. В дальнейшем целью проекта стало обеспечивание основы для создания полностью кроссплатформенных плагинов.

Начиная с 13 мая 2010 года Chromium стал единственным браузером, поддерживающим новую модель плагинов. Mozilla Firefox не поддерживает Pepper, так как нет полной спецификации API за пределами её реализации в Chrome, которая была создана только для браузерного движка Blink. По состоянию на 2016 год Pepper поддерживается в Chrome, Chromium и браузерах на Blink, например – Opera.

Применение NPAPI в качестве NP-плагинов в браузерных расширениях

Функционал некоторых расширений требует использование дополнительных плагинов (NPAPI), позволяющих решать задачи, которые невозможно реализовать на обычных JS. Такие плагины, как правило, пишутся разработчиком аддона именно под конкретное расширение и являются "локальными" – они "заточены" под определённый тип браузеров и не устанавливаются в систему (в отличие от общесистемных NP‑плагинов типа Adobe Flash, Java и др.).

До версии 31 включительно во всех версиях хром‑браузеров имелась поддержка этого типа плагинов и, соответственно, расширений на их основе. С января 2014 Google убрала поддержку таких плагинов в своём браузере* Chrome (что мы и видим, соответственно, начиная с версии 32). Что же касается плагинов PPAPI, наиболее известным является медиа‑плагин PepperFlash, распространяемый гуглом в "комплекте" со своим браузером.

* Уточнение: на текущий момент все новые версии Chromium-браузеров не работают с такими плагинами полноценно, хотя часть функционала иногда сохраняется. Но эта "часть" уже зависит от содержимого и функций конкретного плагина, грубо говоря – "лотерея", так как заранее неизвестно, что будет работать, а что – "отвалится" (из функций).

Тем не менее, в отдельных хромоклонах (в основном – китайских) сохраняется полноценная поддержка NP‑плагинов, что позволяет использовать в них большинство расширений с такими плагинами.

Отсюда ответ на вопрос "чем лично мне это грозит?" – в версиях гуглохрома 32+ расширения, применяющие функционал NPAPI, НЕ работают. В частности, отвалилась часть функций у известных расширений PigToolBox и Chrome Toolbox, не работает подавляющее большинство IETab'ов, нормально не работает* проигрывание видео через Adobe Flash. Со временем** подобные расширения будут просто выпилены из Google WebStore (новые не принимаются в "гуглозин" уже с сентября 2013).

* Уточнение: вернее сказать "проблематично работает", на текущий момент есть прямой запрет на использование Adobe Flash (несмотря на широкую распространённость этой технологии и использование её на множестве сайтов). Также нужно отметить, что проблемы при работе с этой версией флэша в хром‑браузерах часто возникали и раньше, до "эпохи полного отлома".

** С весны 2014, как говорится, "процесс пошёл" – примером может служить замена установщика расширения Chrome Toolbox на деинсталлятор. :/

Выходы из этой ситуации…

…у "енд-юзера" примерно следующие:

  1. Ждать, пока разработчик адаптирует своё расширение под "новый стандарт".. но ждать можно долго.. =)
  2. Искать другие подходящие расширения с нужным функционалом (возможно – несколько вместо одного).
  3. Не использовать версии хром-браузера выше 31-й + отключить обновление ядра браузера.
  4. Не использовать гугло-хром и "родственные" клоны на основе Chromium – есть и другие "хромоноги"…
  5. Не использовать хром-браузер как класс…  

Зачем всё это написано и как определить…

…содержит ли расширение "неугодный" плагин: во избежание вопросов "вот тут рекомендуют, а у меня не ставится или не работает" – читаем внимательно описание на странице нужного вам расширения или скачиваем* установщик нужного вам аддона и самостоятельно изучаем содержимое CRX‑файла расширения перед установкой. Если в списке файлов присутствует хотя бы один *.dll, то с очень высокой вероятностью это и есть NPAPI‑плагин и такой аддон во всех новых версиях гугло‑хрома работать НЕ будет (более того – любой новый "хромоног" просто не даст поставить этот аддон**). Обновлённых же версий известных расширений, но уже с PPAPI‑плагинами (или его преемником*** NaCl), к сожалению, в массе не наблюдается…

* Можно вручную скачать расширение несколькими способами, распаковать и посмотреть содержимое.

** Есть, конечно, ещё и установка в режиме разработчика…
…но увы – расширение и при этом всё равно полноценно не заработает.

*** Эта технология на текущий момент также считается "устаревшей" и практически не используется.

Насколько это актуально

В версиях хром-браузеров 42+ поддержка NP-плагинов отключена по умолчанию, при попытке запуска даже Adobe Flash каждый раз выдаётся запрос на однократный запуск. Для отключения запроса и автоматического разрешения запуска таких плагинов можно применить ключ --enable-npapi или включить опцию chrome://flags/#enable-npapi.

С версии 45 поддержка NPAPI отключена полностью* и указанные ключ и флаг уже не работают (подробности).
* В начальных билдах 45-й версии можно использовать ключ --enable-npapi-for-testing (в дальнейшем также удалён).

В общем и целом, во всех современных версиях "классических" браузеров на движке Chromium NPAPI плагины не поддерживаются от слова "совсем". Более того, с января 2021 года во всех таких браузерах полностью отключена поддержка последнего "могиканина", плагина Adobe Flash во всех его видах, включая PPAPI-версию (компания Adobe также прекратила подержку этого плагина).

Насколько "всё плохо"

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

Все эти решения не являются универсальными и не могут быть использованы многократно в разных расширениях по одной простой причине – все они нестандартны и чаще всего "заточены" под единственное браузерное дополнение. Положение осложняется ещё и тем, что в подобных случаях применяются самые различные методы построения, включая .NET и другие тяжеловесные фреймворки.

Во всей этой "смуте" есть и хорошая новость – несмотря на все запреты, даже в WebStore появляются отдельные расширения, разработчики которых сумели обойти все ограничения. Примером одного из первых решений такого рода может служить этот аддон (обсуждение – отсюда и далее, конечные варианты рабочих решений – тут).

Кроме того, сегодня есть и ещё один вариант использования "запрещённых" плагинов – в отдельных хромоклонах нормальная поддержка NPAPI сохраняется и в новых версиях, вплоть до 86 движка в китайском 360 Extreme Explorer. Да, придётся менять браузер, но если какой-то NPAPI плагин действительно необходим, это вполне оправданно.

В общем, не всё так уж плохо, при желании выход можно найти…  

Ссылки по теме

Общие принципы Бармалей

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

Бармалей 03.02.2014 07.02.2021 337 5.0

Поделиться

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