Firefox 扩展“未通过针对是否适用于Firefox的验证,现已禁用。”问题的解决

也是最近几周的事情,Firefox 扩展大批量出现无法使用的情况,给用户的感觉是莫名其妙:

像我这种还停留在 firefox 55 的老用户,也是莫名惊诧!原先使用的  adblock 以及 Adblock u 都无法使用了,广告铺面而来,那空气,糟透了。

据说原因是  firefox 的证书过期了,导致一部分扩展跟着倒霉。

还好,官方的反应还是快:

同样,也给出了解决办法——升级到 firefox 66.0.4。

或者,不想升级的,使用特殊版本可以设置:

 

如果愿意升级的话,看到这里就算完了吧。

如果你是通用版,且不愿意升级。那么还有两个临时解决方案。

其一、启用插件调试模式临时使用插件:

以 AdblockU 和 脚本之家为例:

在地址栏键入“about:debugging”

启用启动附加组件调试:

C:Users<Username>AppDataRoamingMozillaFirefoxProfiles<example text>.defaultextensions

文件夹中找到被禁用的 扩展,这里是 adblockultimate:

点击确定,然后就 OK了。

让我们看下启用后的状态:

不过这种方法 仅仅在 浏览器浏览时生效,一旦重启浏览器,就又需要重新启用了。

其二,还有一个时间稍微长点的办法(此方法启动可以直接启用所有证书问题无法使用的扩展),据作者说24小时需要重新做一次,为什么是24 小时,我也不太明白,可能是 firefox 更新的计划任务吗?

按下组合键:

ctrl-shift-J

调用 firefox 控制台:

根据你的版本选择临时启用的代码:

v56 版本及其下,比如我的是 ff 55:

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();

v57 版本及以上:

// Re-enable *all* extensions

    async function set_addons_as_signed() {

        Components.utils.import("resource://gre/modules/addons/XPIDatabase.jsm");

        Components.utils.import("resource://gre/modules/AddonManager.jsm");

        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 XPIDatabase.updateAddonDisabledState(addon);

        }

        XPIDatabase.saveChanges();

    }

    set_addons_as_signed();

回车后 后运行

需要注意的是后面两种办法都只适合临时启用扩展,如果想一劳永逸,那还是直接升级到 firefox 66.0.4 及以上吧!

原文地址:https://www.cnblogs.com/wpcnblog/p/12841072.html