41.0b1 + 'da doğrulanmamış bir firefox eklentisini yüklemeye nasıl zorlanırsınız?


15

Firefox'taki en son güncelleme (41.0b1), doğrulanmamış uzantıların ( HTTPS Everywhere ve Privacy Badger ) kurulumunu agresif bir şekilde engelliyor .

Bu uzantıları yüklemeye nasıl zorlayabilirim? İçinde about:configgeçici olarak değiştirebileceğim bir ayar var mı?

Mozilla Firefox için bu değişikliği vurgular burada , kötü niyetli uzantıları corralling de verimsiz olma önceki çabalar kaydetti.

Yanıtlar:


19

Evet, içinde bir ayar var About:config, adı xpinstall.signatures.required. Değerinin false olarak ayarlanması için tercih adını çift tıklayın. Artık imzasız uzantıları Firefox'a yükleyebilirsiniz. Tarayıcının yeniden başlatılması gerekmez.


2
Fantastik! Bu düzeltme, EFF ve diğerleri orada uzantıları doğrulanana kadar yeterli olacaktır.
VitaminYes

1
Bu sürüm 43 ve sonraki sürümlerden sonra da çalışmaz. :(
Suresh Atta

Son FF'de işe yaramayacağını söyleyen birçok kaynağa rağmen, 48.0'da Linux'ta benim için çalıştı. Eklentiler sayfasını açmak ve xpi dosyasını oraya sürüklemek zorunda kaldım.
Brezilyalı Adam

@ThatBrazilianGato: Win7 FF48.0'da benim için çalışmıyor :(
glavić

4
Benim için bu kadar. Bye Firefox, 0.6 sürümünden beri seni sevdi. :-( Umarım bir gün bir çözüm olur.
andreas

2

Firefox 48 ve sonraki sürümlerde bu yöntem çalışmaz. Bunun yerine Firefox dizininde iki yapılandırma dosyası oluşturmalısınız.

  1. Oluştur config.js not defteri dosyayı (emin dosya uzantısıdır yapmak .js ve .txt ):

    //
    try {
    Components.utils.import("resource://gre/modules/addons/XPIProvider.jsm", {})
    .eval("SIGNED_TYPES.clear()");
    }
    catch(ex) {}
    
  2. Config.js dosyasını Firefox kurulum dizininize taşıyın :

    Windows: C: \ Program Dosyaları \ Mozilla Firefox
    (veya C: \ Program Dosyaları (x86) \ Mozilla Firefox )

    Linux: / usr / lib64 / firefox- <sürüm>
    (veya / usr / lib / firefox- <sürüm>)

    Mac: /Applications/Firefox.app

  3. Not defterinde config-prefs.js oluşturun :

    pref("general.config.obscure_value", 0);
    pref("general.config.filename", "config.js");
    
  4. Config-prefs.js dosyasını Firefox varsayılanları \ pref dizinine taşıyın .
    (örn. C: \ Program Dosyaları \ Mozilla Firefox \ defaultults \ pref )

  5. Firefox'u yeniden başlatın.

  6. İmzasız XPI'yı Firefox penceresine sürükleyin veya Firefox Eklentileri ayarlarında "Dosyadan Eklentiyi Yükle" seçeneğini kullanın.


Bu kaynaktan kaynak: https://forum.mozilla-russia.org/viewtopic.php?id=70326


Ne yazık ki bu yöntem FF 66.0.3 64 bit üzerinde çalışmıyor gibi görünüyor. Mozilla'nın BÜYÜK zaman harcadığına şimdi şiddetle ihtiyaç duyulacaktı.
CoolKoon

1

Görünüşe göre Firefox 60 ve üstü üzerinde ne yukarıda ne xpinstall.signatures.requiredde config.js hilesi işe yaramaz (Mozilla, lütfen sallayın!).

Yukarıda atıfta bulunulan Rus forumu görünüşe göre Firefox'un bu sürümleri için de bir çözümden bahsediyor. Bu yüzden bunu config.js'ye koyun, daha sonra C: \ Program Files \ Mozilla Firefox'a kaydedin

//
try {(code => {
    var {classes: Cc, interfaces: Ci, utils: Cu} = Components;
    var jsval, evl = true, re = e => Cu.reportError(e), imp = name => {try {
        return Cu.import(`resource://gre/modules/addons/${name}.jsm`, {});
    } catch(ex) {}}
    if ((jsval = imp("AddonSettings"))) {
        jsval.AddonSettings = {ADDON_SIGNING: false, REQUIRE_SIGNING: false, ALLOW_LEGACY_EXTENSIONS: true};
        try {evl = jsval.eval("this") === jsval;} catch(ex) {evl = false;}
    }
    var jsvals = ["XPIProvider", "XPIInstall"].map(imp).filter(i => i);
    jsvals[0].AddonSettings && lockPref("extensions.allow-non-mpc-extensions", true);
    jsvals[0].signaturesNotRequired = true;

    if (evl) return jsvals.forEach(jsval => {try {jsval.eval(code);} catch(ex) {re(ex);}});

    var sl = Cc["@mozilla.org/moz/jssubscript-loader;1"].getService(Ci.mozIJSSubScriptLoader);
    Cu.importGlobalProperties(["URL", "Blob"]); var url = URL.createObjectURL(new Blob([(code)]));
    jsvals.forEach(jsval => {try {sl.loadSubScript(url, jsval);} catch(ex) {re(ex);}});

})(String.raw`((vzss, pckg) => {
    var trueDesc = {enumerable: true, value: true};
    typeof Extension == "function" && Object.defineProperty(Extension.prototype, "experimentsAllowed", trueDesc);
    "AddonInternal" in this && Object.defineProperty(AddonInternal.prototype, "providesUpdatesSecurely", trueDesc);
    this.isDisabledLegacy = () => false;
    if ("XPIDatabase" in this) this.XPIDatabase.isDisabledLegacy = () => false;
    try {SIGNED_TYPES.clear();} catch(ex) {};

    if (!vzss && !pckg) return;

    var re = /\x06\x03U\x04\x03..(\{[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}\}|[a-z0-9-\._]*\@[a-z0-9-\._]+)0\x82\x02"0\r\x06\t/i;
    var getUUID = () => {
        var gen = Cc["@mozilla.org/uuid-generator;1"].getService(Ci.nsIUUIDGenerator);
        return (getUUID = () => gen.generateUUID().toString())();
    }
    var getIdFromString = str => {
        var match = str && str.match(re);
        return match ? match[1] : getUUID();
    }
    var getState = arg => ({
        signedState: AddonManager.SIGNEDSTATE_NOT_REQUIRED,
        cert: typeof arg == "object" ? arg : {commonName: arg}
    });
    var checkAddon = addon => {
        if (addon.id || (
            "_installLocation" in addon
                ? addon._installLocation.name == KEY_APP_TEMPORARY
                : addon.location.isTemporary
        ))
            return getState(null);
    }
    var getRoot = () =>
        !AppConstants.MOZ_REQUIRE_SIGNING && Services.prefs.getBoolPref(PREF_XPI_SIGNATURES_DEV_ROOT, false)
            ? Ci.nsIX509CertDB.AddonsStageRoot : Ci.nsIX509CertDB.AddonsPublicRoot;

    if (vzss) {
        var getURI = file => {
            var jsval = Cu.import("resource://gre/modules/addons/XPIProvider.jsm", {});
            return (getURI = file => jsval.getURIForResourceInFile(file, "META-INF/mozilla.rsa"))(file);
        }
        var getIdFromFile = file => {
            var str, is = {close() {}}, sis = {close() {}};
            try {
                is = Services.io.newChannelFromURIWithLoadInfo(getURI(file), null).open();
                sis = Cc["@mozilla.org/scriptableinputstream;1"].createInstance(Ci.nsIScriptableInputStream);
                sis.init(is);
                str = sis.readBytes(sis.available());
            } catch(ex) {}
            sis.close(); is.close();
            return getIdFromString(str);
        }
        this.verifyZipSignedState = function verifyZipSignedState(aFile, aAddon) {
            var res = checkAddon(aAddon);
            return res ? Promise.resolve(res) : new Promise(resolve => {
                var callback = {openSignedAppFileFinished(rv, zipReader, cert) {
                    zipReader && zipReader.close();
                    resolve(getState(cert || getIdFromFile(aFile)));
                }};
                gCertDB.openSignedAppFileAsync(getRoot(), aFile, callback.wrappedJSObject = callback);
            });
        }
    }

    if (pckg) Package.prototype.verifySignedState = function verifySignedState(addon) {
        var res = checkAddon(addon);
        return res ? Promise.resolve(res) : new Promise(resolve =>
            this.verifySignedStateForRoot(addon, getRoot()).then(({cert}) => {
                if (cert)
                    resolve(getState(cert));
                else
                    this.readBinary("META-INF", "mozilla.rsa").then(
                        buffer => resolve(getState(
                            getIdFromString(String.fromCharCode(...new Uint8Array(buffer)))
                        )),
                        () => resolve(getState(getUUID()))
                    );
            }, Cu.reportError)
        );
    }
})(
    "verifyZipSignedState" in this, typeof Package == "function"
);`)} catch(err) {
    err.message != "Components is not defined" && Components.utils.reportError(err);
}

Daha sonra bunu C: \ Program Files \ Mozilla Firefox \ defaults \ pref klasörüne kaydedilen config-prefs.js dosyasına eklemelisiniz

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

FF 66.0.3 üzerinde çalıştığı test edilmiştir. Maalesef eklentilerinizi ve temalarınızı sihirli bir şekilde geri getirmeyecek, ancak en azından onları yeniden yükleme seçeneğini yeniden etkinleştiriyor. Zaten Mozilla'nın sunduğu her şeyden daha iyi, forumlarının bu sorunla ilgili şikayetlerle dolu olmasına rağmen özellikle umursamıyorlar.


Gerçekten bunu istiyorsanız, rastgele kesmek yüklemeyin, signatures.required tercih dizesinin gerçekten etkinleştirildiği bir Nightly kullanın.
Félix Saparelli

1
Neden yapayım? Şimdiye kadar yalnızca doğrudan Firefox'un resmi addon sitesinden meşru ve orijinal eklentiler yüklediğim FF'nin kararlı sürümleri olduğunu düşündüğümde tamamen iyiydim. Ve şimdi tüm bu eklentiler (ve Mesih uğruna temalar!) Birdenbire çalışmayı bıraktı. Maalesef FF'nin potansiyel olarak daha da bozuk bir sürümünü yüklemek yerine, geçerli kurulumumu çalıştıran bir şey tercih ediyorum.
CoolKoon

PS Eklentiler, telefonumda da çalışan FF'nin (v66.0.2) Android sürümünde çalışmayı bıraktı, ancak merakla xpinstall.signatures.requiredhala hala orada çalışıyor gibi görünüyor.
CoolKoon
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.