Как установить неподписанные дополнения в firefox. Установка непроверенных дополнений в Firefox

В свете последних событий связанных с релизом Mozilla Firefox 48, который навёл шухеру среди части пользователей, в связи с обязательным наличием подписи у расширений, люди столкнувшиеся с этой проблемой встали перед выбором, либо:

  1. не пользоваться неподписанными расширениями (плохой вариант);
  2. использовать небрэндированные сборки;
  3. идти окольными путями, пытаясь отключить проверки любыми способами, некоторые из которых предложены в следующих комментариях:
    https://geektimes.ru/post/279132/#comment_9480372
    https://geektimes.ru/post/279132/#comment_9480382
  4. подписать необходимое расширение самостоятельно.
Как вы уже догадались, здесь пойдёт речь о последнем способе. Если мы не планируем распространять расширения через официальный каталог, то подпись мы можем получить без ручных проверок, т.е. легко и просто.

Для этого нам понадобятся:
  1. учётная запись на addons.mozilla.org
  2. установленный nodejs версии >= 0.10
  3. npm версии >=3.0.0 (npm up npm)
  4. jpm для nodejs (npm install jpm).
Будем рассматривать процесс подписания на примере расширения «Random Agent Spoofer». Данное расширение содержит список юзер-агентов, которые довольно быстро устаревают, а обновляется дополнение не часто. В свою очередь, в официальном репозитории файлы с нужными нам данными обновляются регулярно и возникает закономерное желание пустить их в дело.

Итак, учётную запись зарегистрировали, программное окружение установлено, можно приступать.

Берём подопытное расширение и распаковываем его в отдельную папку, в нашем случае используем слепок репозитория, расположенного по адресу https://github.com/dillbyrne/random-agent-spoofer .
Получим следующую структуру каталогов:
test\
lib\
doc\
data\
.gitignore
LICENSE
package.json
README.md

Если используется готовое собранное расширение, то в корне папки где оно распаковано, необходимо удалить файлы «bootstrap.js» и
«install.rdf», они создаются программой сборки, а при модификации уже подписанных дополнений ещё и папку «META-INF». Т.к. мы имеем дело с ещё не собранным дополнением, то это не требуется. Следующим шагом будет редактирование файла «package.json», расположенного опять же в корне каталога распакованного расширения. В нашем случае его начало выглядит так:
{
"name": "random-agent-spoofer",
"title": "Random Agent Spoofer",
"id": "jid1-AVgCeF1zoVzMjA@jetpack",
"description": "Allows the use of various browser profiles (including useragent ,platform, oscpu, accept headers and other options), which it can randomly switch between after a chosen period of time has expired",
"author": "dbyrne",
...
}

Если в нём содержится параметр «id» его надо либо изменить, либо удалить. В противном случае, мы получим ошибку при попытке подписи о том, что не являемся его владельцем.
Далее командуем следующее «заклинание» для сборки расширения в архив:

Jpm xpi --addon-dir <путь к папке куда распаковали>

Или просто:

Jpm xpi , если текущий каталог это и есть корень распакованного расширения.

На выходе должен появиться файл собранного расширения.xpi, который и будем подписывать.

А теперь приготовим свой api-ключ, ради получения которого и регистрировались на addons.mozilla.org . Его можно увидеть по адресу addons.mozilla.org/ru/developers/addon/api/key в таком виде:

Издатель JWT: Секрет JWT:

Где Ваш персональный ключ. И в заключение, собственно, сам акт подписания осуществляем скомандовав:

Jpm sign --api-key --api-secret --xpi <путь к расширению полученному на предыдущем шаге>

Если всё пройдёт без ошибок и автоматическая проверка будет пройдена, то в текущем каталоге мы получим подписанное расширение, в котором и нуждались.

Полезные ссылки:
Документация по jpm: developer.mozilla.org/en-US/Add-ons/SDK/Tools/jpm
Signing Api: olympia.readthedocs.io/en/latest/topics/api/signing.html

Всем спасибо за внимание, удачи!

43-я версия Mozilla Firefox на каналах Stable и Beta блокирует установку неподписанных расширений.

Для отмены проверки подписи у расширений можно изменить настройки:

  • в адресной строке введите about:config и перейдите на страницу;
  • нажмите кнопку "Я обещаю, что буду осторожен" на странице предупреждения;
  • в поле "Поиск" введите название параметра: xpinstall.signatures.require ;
  • найдите его в списке и дважды нажмите на него, чтобы значение "true" изменилось на "false"

Отключение проверки подписи через пользовательские скрипты

В Firefox 48 для Stable и Beta каналов, Mozilla отменила действие параметра xpinstall.signatures.require. На каналах Dev, Nightly и ESR, а так же в сборке Firefox Unbranded, которая представляет собой стабильную версию, параметр ещё доступен.

Все расширения представленные в основном репозитории Mozilla, подписаны в отличае от расширений из сторонних источников.

На сегодня существует множество расширений, предоставляемых приложениями, на платформах разработки Github и Bitbucket, а так же старые расширения, которые больше не поддерживаются разработчиками и не могут быть подписаны. Все они не могут быть установлены в Firefox Stable или Beta стандартными средствами.

Этот способ подразумевает создание двух файлов в основной директории, откуда запускается Firefox.

1. Файл config.js

1.1. Создайте текстовый файл;
1.2. Вставьте в него код:

//
try {
Components.utils.import("resource://gre/modules/addons/XPIProvider.jsm", {})
.eval("SIGNED_TYPES.clear()");
}
catch(ex) {}

1.3. Переименуйте его в "config.js". Убедитесь, что он называется config.js а не config.js.txt;
1.4. Переместите его в директорию с установленным Firefox:

  • Windows - "C:\Program Files\Mozilla Firefox\ " или "C:\Program Files (x86)\Mozilla Firefox\ ";
  • Linux - "/usr/lib/firefox-<версия> " или "/usr/lib64/firefox-<версия> ";
  • OSX - "/Applications/Firefox.app/ ".

Это каталоги установки Firefox по умолчанию. Они могут отличаться в зависимости от ваших настроек при установке или дистрибутива Linux. Важно чтобы файл оказался в корневой директории программы.

2. Файл config-prefs.js

2.1. Создайте второй текстовый файл;
2.2. Вставьте в него код:

pref("general.config.obscure_value", 0);
pref("general.config.filename", "config.js");

2.3. Переименуйте в config-prefs.js;
2.4. Переместите в "<корневая директория Firefox>\defaults\pref\ "
например "C:\Program Files\Mozilla Firefox\defaults\pref\ ";
2.5 Перезапустите Firefox.

Теперь вы можете устанавливать расширения с подписью и без в Firefox Stable или Beta.

Что при этом происходит

Код в файле config.js, загружает один из конфигурационных файлов Firefox и удаляет информацию из константы "Signed_Types" в этом файле. Эта константа определяет типы дополнений и расширений, которые должны быть подписаны для установки.

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

Код во втором файле указывает Firefox загрузить файл config.js при запуске.

Странно что это на столько просто, учитывая то что обязательная подпись расширений используется для повышения безопасности.

6 ответов

Отключите проверку подписи надстроек в релизных (всех) версиях Firefox

Версия Firefox 65+ (или около того)

Следующие инструкции отключат проверку подписи в Firefox для профиля Firefox, в который вы устанавливаете файлы. Вы собираетесь добавить некоторые файлы в каталог chrome в каталоге вашего профиля Firefox.

Я проверял это на Firefox 66.0. 3+.

IIRC, для Firefox 65 требовался немного другой код, я думаю, что оставил этот код в disable-add-on-signature.js, когда модифицировал его для Firefox 66, но я не уверен в этом.

Мы собираемся использовать технику, которая позволяет вам запускать произвольный код JavaScript в контексте браузера из файлов, хранящихся в каталоге вашего профиля Firefox. Я нашел, как это сделать из репозитория Haggai Nuchi GitHub: Firefox Quantum совместимый userChrome.js .

В Windows каталог вашего профиля Firefox будет %appdata%\Mozilla\Firefox\Profiles\ . Если у вас есть только один профиль, будет единственным каталогом в каталоге %appdata%\Mozilla\Firefox\Profiles . Если у вас есть несколько профилей, вам нужно выбрать те, в которые вы хотите установить этот хак.

Как только вы попадете в каталог своего профиля, вам нужно будет создать каталог с именем chrome , если он еще не существует. Вы будете добавлять 3 файла ниже в этот каталог:

  • userChrome.css
  • userChrome.xml
  • disable-add-on-signing.js

Затем вам понадобится следующий код в userChrome.css , который доступен из репозитория Haggai Nuchi GitHub:

/*Enable userChrome.js */ /* Copyright (c) 2017 Haggai Nuchi Available for use under the MIT License: https://opensource.org/licenses/MIT */ @namespace url(http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul); toolbarbutton#alltabs-button { -moz-binding: url("userChrome.xml#js"); }

Вам понадобится userChrome.xml (слегка измененный по сравнению с версией, доступной в репозитории Haggai Nuchi GitHub):

Вам также понадобится disable-add-on-signing.js:

//This should be installed as the file disable-add-on-signing.js in // your profile "chrome" directory. //Earlier versions of Firefox try { Components.utils.import("resource://gre/modules/addons/XPIProvider.jsm", {}).eval("SIGNED_TYPES.clear()"); } catch(ex) {} try { Components.utils.import("resource://gre/modules/addons/XPIInstall.jsm", {}).eval("SIGNED_TYPES.clear()"); } catch(ex) {} try { Components.utils.import("resource://gre/modules/addons/XPIDatabase.jsm", {}).eval("SIGNED_TYPES.clear()"); } catch(ex) {} //Tested on Firefox 66 const {XPCOMUtils} = ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm"); XPCOMUtils.defineLazyModuleGetters(this, { XPIDatabase: "resource://gre/modules/addons/XPIDatabase.jsm", }); XPIDatabase.SIGNED_TYPES.clear(); console.log("Add-on signing disabled.");

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

Надстройки, которые были отключены или удалены Firefox, не будут автоматически включены. Вам нужно будет переустановить их. Вы можете установить их, перетащив файл *.xpi в окно Firefox и подтвердив, что вы хотите установить.

Если вы хотите получить файл *.xpi для какого-либо конкретного расширения из дополнений Mozilla, вы можете скачать его, щелкнув правой кнопкой мыши кнопку "Установить" и выбрав "Сохранить как" или "Удалить".

Firefox версии 57 или более ранней (или около того)

К сожалению, я не помню, с какой версией Firefox этот метод перестал работать. Я знаю, что использовал его на Firefox 54, 55, 52ESR и FF56. *.

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

Вам нужно будет добавить пару файлов в каталог установки Firefox. Вы можете найти список примеров установочных каталогов для Windows, Linux и Mac OS на mozillaZine . Наиболее распространенные каталоги установки:

  • Windows
    • C:\Program Files\Mozilla Firefox\
    • C:\Program Files (x86)\Mozilla Firefox\
  • Linux
    • /USR/Lib/firefox- <версия>
  • OSX
    • /Applications/Firefox.app

Добавить первый файл

Затем вам нужно добавить приведенный ниже код в виде файла /defaults/pref/disable-add-on-signing-prefs.js (Windows: \defaults\pref\disable-add-on-signing-prefs.js):

//This file should be placed in the defaults/pref directory (folder) //within the Firefox installation directory with the with the name: // disable-add-on-signing-prefs.js pref("general.config.obscure_value", 0); pref("general.config.filename", "disable-add-on-signing.js");

Добавить второй файл

Вам также необходимо добавить приведенный ниже код в виде файла /disable-add-on-signing.js (Windows: \disable-add-on-signing.js): 1

//This file should be placed in the Firefox installation directory //(folder) with the with the name: // disable-add-on-signing.js try { Components.utils.import("resource://gre/modules/addons/XPIProvider.jsm", {}) .eval("SIGNED_TYPES.clear()"); } catch(ex) {} try { Components.utils.import("resource://gre/modules/addons/XPIInstall.jsm", {}) .eval("SIGNED_TYPES.clear()"); } catch(ex) {}

Результаты

Я использую эти решения уже много лет, чтобы установить несколько расширений, которые я создал для своего собственного использования, и для тестирования новых версий расширений, над которыми я работаю (когда я хочу протестировать в продакшен версии вместо Firefox Developer Edition или Ночной).

ПРИМЕЧАНИЕ. В about:addons Firefox может показывать (при некоторых условиях) надстройку как включенную (не выделенную серым цветом), но с текстом, указывающим, что надстройка "не может быть проверена и была отключена". Текст не точный! Надстройка включена и работает.

Как это устроено

Если вы хотите, вы можете отдельно отключить проверку подписи для любого из типов: "webextension" , "extension" , "experiment" или "apiextension" .

Удалите каталог META-INF из любого модифицированного расширения

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

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

1. Код в блоге помещает этот вызов в блок try{}catch(){} . Там действительно нет необходимости делать это. Единственная эффективная вещь, которая делает это, - предотвращает сообщение об ошибке в консоли браузера (Ctrl - Shift - J или Cmd - Shift - J в OSX). Там нет никакого дополнительного кода, который желательно запустить в случае сбоя. Кроме того, я предпочел бы иметь возможность видеть ошибку в консоли браузера, если это не удается, чтобы знать, что на самом деле произошел сбой. Отсутствие try{}catch(){} не имеет никаких негативных последствий и позволяет отследить проблему, если в какой-то будущей версии Firefox дополнения начнут отключаться из-за отсутствия подписи.

Чтобы завершить ответ, приведенный выше, я обнаружил firefox-autoconfig , который состоит из установки файла autoconfig.js в /default/prefs и файла ci.clg в который является способом отключения xpinstall.signatures.required (и другие опции тоже) окончательно и автоматически при открытии Firefox (протестировано с Firefox 45.0.1)

Вы увидите это содержимое в autoconfig.js :

// pref("general.config.filename", "ci.cfg"); pref("general.config.obscure_value", 0);

И это содержимое в ci.cfg :

// Disable checking if firefox is default browser lockPref("browser.shell.checkDefaultBrowser", false); // Disable restoring session lockPref("browser.sessionstore.resume_from_crash", false); // Disable extension signature check lockPref("xpinstall.signatures.required", false); // Allow extensions to be installed without user prompt pref("extensions.autoDisableScopes", 0); pref("extensions.enabledScopes", 15); // Disable updater lockPref("app.update.enabled", false); // make absolutely sure it is really off lockPref("app.update.auto", false); lockPref("app.update.mode", 0); lockPref("app.update.service.enabled", false); // Prevent closing dialogs lockPref("browser.showQuitWarning", false); lockPref("browser.warnOnQuit", false); lockPref("browser.tabs.warnOnClose", false); lockPref("browser.tabs.warnOnCloseOtherTabs", false); // Disable Add-ons compatibility checking clearPref("extensions.lastAppVersion"); // Don"t show "know your rights" on first run pref("browser.rights.3.shown", true); //Disable plugin checking lockPref("plugins.hide_infobar_for_outdated_plugin", true); clearPref("plugins.update.url"); // Disable health reporter lockPref("datareporting.healthreport.service.enabled", false); // Disable all data upload (Telemetry and FHR) lockPref("datareporting.policy.dataSubmissionEnabled", false); // Disable crash reporter lockPref("toolkit.crashreporter.enabled", false); Components.classes["@mozilla.org/toolkit/crash-reporter;1"].getService(Components.interfaces.nsICrashReporter).submitReports = false; // Browser Console command line pref("devtools.chrome.enabled", true);

    Каталог дополнений для Nvda в формате "nvda-addon".В каталоге 199 дополнений (Nvda-addon)Каталог обновлен: 10 Октябрь 2019 ... в каталоге Nvda.ru можно скачать новые и старые версии программ экранного доступа NVDA.Скачайте на... Синтезатор речи RHVoice с голосовыми модулями на восьми языках в трёх вариантах:Дополнении Nvda-addonДля программы экранного... Архив устаревших или переставших работать дополнений для Nvda Обновлен: 1 Июля 2019 г.. В текущий... Синтезатор речи NewFon в виде Nvda-addon + Sapi5 для программы экранного доступа Nvda.Обновлено 06 Март... При помощи представленных на странице словарей можно сделать лучше произношение синтезаторов речи Vocalizer.Словари подходят не... Пакеты синтезаторов речи Vocalizer Expressive2 второго поколения для программы экранного доступа Nvda в виде одного... Комплекты синтезаторов речи на движке Sapi5 которые также можно использовать в программе экранного доступа Nvda.Здесь... Синтезаторы речи Vocalizer Expressive2 (Второго покаления) для программы экранного доступа Nvda в виде дополнений.Качество синтезаторов... Синтезаторы речи Acapela group в бесплатной программе экранного доступа Nvda для незрячих и слабовидящих, можно... Синтезаторы речи Ivona2 в программе экранного доступа Nvda можно использовать по одному через Microsoft Sapi5 ... Синтезаторы речи для программы Nvda в виде дополнений "nvda-addon" от разных разработчиков.Captain Old / NewDirect ...

Mozilla Firefox иногда (или частенько) буксует — к примеру, запрещает устанавливать некоторые расширения, по его мнению — вредные, запрещённые к установке. Говорят, всё это для нашей защиты: «Дополнение не может быть загружено из-за ошибки соединения.». Или — «Firefox заблокировал запрос на установку программного обеспечения с этого сайта».

А как быть!? если я привык к какому-то расширению и не могу жить без него иначе… и мне наплевать на все эти фронтовые дрязги разработчиков и их своеобразные прочтения сертификатов…

Что жж… давайте всё-таки привычное дополнение установим… …рассмотрим, например, случай, когда браузер Фаерфокс запрещает к установке элементы Яндекс (ниже будет ссылка на пост, в котором говорится о том, как добавить Яндекс закладки в Фаерфокс 55.0.2 ).


…однажды мы решаем установить дополнение к браузеру Mozilla Firefox элементы Яндекс… По-началу установки всё здорово как бы!

Но — ближе к финалу, выпадает такое предупреждающее окошко:

«Дополнение не может быть загружено…»

Кто виноват… Что делать…

Firefox заблокировал запрос на установку программного обеспечения с этого сайта

В каких версиях эта буза с запрещениями установок расширений и компонентов поднялась, я не знаю. Не вникаю в эти дуэли неправильных сертификатов, именно они и их несоответствие приводят к блоку.

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

Я лично, чтобы избегать все эти нестыковки … пользуюсь чётко настроенным по своим нуждам браузером Фаерфокс и его . По возможности пасую некоторые обновления: ну по крайней мере всегда готовлюсь к ним.

Здорово помогает в этом замечательная программка МозБекап, которой возможно сохранять все личные данные браузера — пароли, расширения, закладки и т. п. …и регулировать их, конечно же, .

Итак: как и говорилось выше, не помню версии браузера в котором впервые обнаружилась закавыка запрета, а раз не помню (и никто из простых смёртных не помнит), значит — точного эликсира нет!! однако — покажу пару вариантов на свободную установку выбранных дополнений: (какой-то из них точно заработает — у меня понёс по кочкам запрещения второй))

чтобы отключить ЗАПРЕЩЕНИЕ Firefox на установку расширений —

сделаем так:

Воспользуемся скрытыми настройками браузера Mozilla Firefox.

В адресной строке браузера пропишите следующий вензель:

…и кликаем «Enter»

Важно: при переходе к этим «скрытым» настойкам, браузер выдаёт такое забавное окошко, в котором предупреждает быть аккуратнее — осторожнее!

Как вы понимаете, нужно пообещать быть внимательным.

Тогда нас перенесёт в святая-святых браузера — в ленту технических настроек:

…затем, в «поиске» по ленте настроек (она где-то сверху) запишем такую фразу:

Внимание: возможно, есть смысл, коли у вас будет установлено значение false , заметить его на true — эксперимент — наше всё!

В качестве дополнения к материалу, для тех пользователей, которые подумывают приручить компьютер и быть с ним на «ТЫ»:

В среде программистов, (а в общем-то, возможно, помните ещё из уроков информатики) такие простые логические значения (понятия, если хотите) как TRUE – означающее истину и FALSE – означающее ложь. Если попросту «истина» — разрешение, а «ложь», соответственно — запрет.

А ещё в некоторых случаях языков программирования за значение «истина» законно прокатывает 1, и за значение ложь - 0.

Логический тип данных, или булев тип, или булевый тип (от англ. Boolean или logical data type) в честь Джорджа Буля (что весьма логично)) — математик и логик был такой.

Но это так, слегка касаясь темы…

А познавать все глубины оптимального интернета мы будем от статьи к статье) так что есть смысл подписаться




Итак, после того как подписались)) — перезапускаемся… браузер, в смысле…

Должно заработать!

Если браузер не послушался приказа (помните: «запретили запрет») — хрен с ним. Хотя такого быть не должно: о тонкостях расскажу в следующей статье, чтобы ближе по теме…

Второй вариант — теперь точно заработает… Сделаем так: и научимся…

как устанавливать расширения браузера Фаерфокс с помощью сохранённого файла

Предположим вам нужно прикрутить к браузеру элементы Янднекс (все иные расширения устанавливается по аналогии).

Переходим на официальную страничку установки — если нужно, вот ссылка //element.yandex.ru/?from=wizard___one

Фото ниже: наводим курсор на «Установить»… прижимаем правой кнопкой мыши, и в выпадающем меню выбираем «Сохранить как…»

Указываем папку для сохранения, и к вам через минутку прилетит такой файлик:

YandexElement.xpi

Полдела сделано!

В меню браузера Фаерфокс «Инструменты» выбираем «Дополнения».

На открывшейся страничке, слева — в вертикальном меню кликаем «Службы».

Мгновение..! …и око зрит:

…что — на открывшейся страничке в правом верхнем углу есть значок «шестерёнка» кликаем по этой шестерне (это настройки), а в выпавшем окошке-меню выбираем опцию «Установить из файла…»

Ну, вы, думаю, догадались.

Нужно указать путь (папку) в которой сохранён ценный файл расширения.

Минута… и дополнение установлено. Заметьте — без всяких трогательных запрещений и божечкой заботы о нас грешных…

А мы… продолжаем: переходим к следующей статье о том, как …

И… — подписывайтесь, впереди много полезного для лёгкой работы по правилам оптимального интернета!


!..подписываясь на обновления сайт -
...расстаёмся с невежеством..!


...город веб мастеров Михалика.ru © - запросто с WordPress