Javascript 如何禁用Firefox加载项的签名检查?
从版本42开始,Firefox默认拒绝安装未签名的附加组件。如何禁用此验证?只能在和通道中禁用插件验证。换句话说,在测试版和标准版本中,是不可能的Javascript 如何禁用Firefox加载项的签名检查?,javascript,firefox,firefox-addon,signing,add-on,Javascript,Firefox,Firefox Addon,Signing,Add On,从版本42开始,Firefox默认拒绝安装未签名的附加组件。如何禁用此验证?只能在和通道中禁用插件验证。换句话说,在测试版和标准版本中,是不可能的 转到about:config(将其输入地址栏) 将xpinstall.signatures.required设置为false 更多信息请访问为了完成上述回答,我发现,这包括在/default/prefs中安装一个autoconfig.js文件,以及在中安装一个ci.clg>文件,这是禁用xpinstall.signatures的一种方法。必需的(以及
about:config
(将其输入地址栏)xpinstall.signatures.required
设置为false
更多信息请访问为了完成上述回答,我发现,这包括在
/default/prefs
中安装一个autoconfig.js
文件,以及在
中安装一个ci.clg>文件,这是禁用xpinstall.signatures的一种方法。必需的(以及其他选项)当Firefox打开时,会自动确定(使用Firefox 45.0.1进行测试)
您将在autoconfig.js中看到这些内容:
//
pref("general.config.filename", "ci.cfg");
pref("general.config.obscure_value", 0);
// 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);
以及ci.cfg
中的内容:
//
pref("general.config.filename", "ci.cfg");
pref("general.config.obscure_value", 0);
// 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);
从Firefox 47开始:Firefox for Desktop的发行版和测试版将不允许安装未签名的扩展,且不允许覆盖
有关更多信息,请参阅Firefox的。禁用附加签名签入发行版(所有)版本
Firefox版本65+(大约)
以下说明将禁用Firefox上安装文件的Firefox配置文件的签名检查。您将向Firefox配置文件目录下的chrome目录添加一些文件
如果在about:config
中将javascript.enabled
设置为False
,则此代码将不起作用。该选项需要设置为True
,这是默认设置
从Firefox 69+开始,除了下面的说明之外,您还需要在关于:config
中将toolkit.legacyUserProfileCustomizations.stylesheets
设置为true
。如果它不存在,则需要将其创建为布尔选项(右键单击上下文菜单中的“新建”)。有关添加此选项的更多详细信息,请参见
我已经在Firefox 66.0.3+上测试过了
升级版本的过程似乎会在这些更改未激活的情况下短暂运行浏览器代码。因此,第一次运行新版本的Firefox时,您安装的任何依赖于禁用附加签名的扩展都将被禁用。升级到新的Firefox版本后,您可以立即重新安装这些扩展,这些扩展应该会恢复工作
IIRC,Firefox 65需要一些稍微不同的代码,我相信在我为Firefox 66修改代码时,我把代码留在了disable-add-on-signing.js中,但我不确定这一点
我们将使用一种技术,它允许您从存储在Firefox概要文件目录中的文件在浏览器上下文中运行任意JavaScript代码。我从中找到了如何做到这一点
在Windows上,您的Firefox配置文件目录将是%appdata%\Mozilla\Firefox\Profiles\[profileID]
。如果您只有一个配置文件,则[profileID]
将是%appdata%\Mozilla\Firefox\Profiles
目录中的唯一目录。如果你有多个配置文件,你需要选择一个(多个)你想安装这个黑客
一旦你进入你的档案目录,你需要创建一个名为chrome
的目录,如果它还不存在的话。您将向该目录添加以下3个文件:
userChrome.css
userChrome.xml
禁用附加签名.js
然后,您将需要中的以下代码,该代码可从Haggai Nuchi的GitHub存储库获得:
您将需要userChrome.xml
(从中稍微修改):
将这些文件添加到配置文件的chrome目录后,需要重新启动Firefox。您可以通过在中查找“Add-on signing disabled.”来验证代码是否正在运行
Firefox禁用或删除的加载项将不会自动启用。您需要重新安装它们。您可以通过将*.xpi文件拖放到Firefox窗口并确认要安装来安装它们
如果您想从中获取任何特定扩展名的*.xpi文件,可以通过右键单击“安装”按钮并选择“另存为”或“删除”来下载该文件
Firefox版本57或更早(大约)
不幸的是,我记不起这个方法在哪个版本的Firefox上停止工作了。我知道我在Firefox 54、55、52ESR和FF56*上使用过它
我最初发现了这个用于禁用强制附加签名签入的解决方案,这是这个答案中(经过一些修改)代码的原始源代码。进行这些更改将允许您使用您修改的Firefox发行版将未签名的加载项安装到配置文件中。对于大多数人来说,这将是你主要的Firefox安装。但是,如果安装了多个版本,则需要在每次安装中进行此修改。但是,一旦您进行了修改,它们将在正常的Firefox更新中保持不变
您需要在Firefox安装目录中添加几个文件。你可以找到一份工作。最常见的安装目录有:
- 窗户
- C:\Program Files\Mozilla Firefox\
- C:\ProgramFiles(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
):
添加第二个文件
您还需要将下面的代码添加为文件/disable add-on-signing.js
(Windows:\disable add-on-signing.js
):1
//This should be installed as the file disable-add-on-signing.js in
// your profile's "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.');
//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");
//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) {}
Components.utils.import("resource://gre/modules/addons/XPIProvider.jsm", {})
.eval("SIGNED_TYPES.clear()");
/* Let unsigned addons live! */
Components.utils.import("resource://gre/modules/addons/XPIProvider.jsm", {})
.eval("function mustSign(aType) { return false; }");
Components.utils.import("resource://gre/modules/addons/XPIProvider.jsm", {})
.eval("XPIProvider.verifySignatures = function() {}");
// For FF < v57 >...?
async function set_addons_as_signed() {
Components.utils.import("resource://gre/modules/addons/XPIProvider.jsm");
Components.utils.import("resource://gre/modules/AddonManager.jsm");
let XPIDatabase = this.XPIInternal.XPIDatabase;
let addons = await XPIDatabase.getAddonList(a => true);
for (let addon of addons) {
// The add-on might have vanished, we'll catch that on the next startup
if (!addon._sourceBundle.exists())
continue;
if( addon.signedState != AddonManager.SIGNEDSTATE_UNKNOWN )
continue;
addon.signedState = AddonManager.SIGNEDSTATE_NOT_REQUIRED;
AddonManagerPrivate.callAddonListeners("onPropertyChanged",
addon.wrapper,
["signedState"]);
await XPIProvider.updateAddonDisabledState(addon);
}
XPIDatabase.saveChanges();
}
set_addons_as_signed();