Erlaube 'Objekte blockieren' von einer bestimmten Site

8

Ich möchte "blockierte Objekte", einschließlich Schriftarten, für bestimmte Websites mit dem NoScript FireFox-Plugin zulassen.

Ich verstehe, warum NoScript Schriftarten blockiert , aber für einige vertrauenswürdige Websites möchte ich sie trotzdem zulassen.

Ich habe gelesen, wie man Skripte nur von einer Domäne zulässt und wie man neben dem ABE-Handbuch einige bestimmte Skripte aktiviert . Aber ich kann es nicht zum Laufen bringen. Hier ein paar ABE-Regeln, die ich für Toggl ausprobiert habe:

Site .gstatic.com .bootstrapcdn.com
Accept from .toggl.com

Site fonts.gstatic.com maxcdn.bootstrapcdn.com
Accept INCLUSION(SCRIPT, OBJ, CSS) from .toggl.com

Site fonts.gstatic.com maxcdn.bootstrapcdn.com
Accept from .toggl.com

Keiner dieser Regelsätze erlaubt jedoch die Aufnahme von Schriftarten für Toggl. Sehen Sie, wo ich falsch liege?

(NoScript 2.6.9.6rc3 unter FireFox 34.0.5)

Jura
quelle

Antworten:

5

Auf der Noscript-Site heißt es:

Setzen Sie beispielsweise den noscript.allowedMimeRegExpVoreinstellungswert auf

  • FRAME@https?://somesite\.com
  • FONT@https?://some-other-site\.com
  • WebGL@https://www\.khronos\.org

Ermöglicht dauerhaft das Laden von FRAME / IFRAME von somesite.com, Web-Schriftarten von some-other-site.com und WebGL 3D-Inhalten von https://www.khronos.org.

Ich glaube nicht, dass die ABE das kann. Eine hackige Möglichkeit, die Schriftart nur für eine bestimmte Site / Domain zu aktivieren, besteht darin, Vimperator / Pentadactyl zu verwenden und die MimeRegExp-Einstellung bei einem LocationChange-Ereignis automatisch zu ändern. Um die Einstellung beim Verlassen der Seite zurückzusetzen, können Sie diese einfache Funktion (von Anekos bezogen ) in .vimperatorrc verwenden, die einen Ausdruck mit einem negativen Lookahead verwendet:

js <<EOM
function add_AutoCommand(URI, onEnter, onLeave) {
    let entered = false;
    autocommands.add('LocationChange', '(?!' + URI + ')', function () {
      if (entered) {
        entered = false;
        onLeave();
      }
    });
    autocommands.add('LocationChange', URI, function () {
        onEnter();
        entered = true;
    });
}
add_AutoCommand(https?://allow-font-on-this-site\.com, 
    :set! noscript.allowedMimeRegExp="FONT@https?://some-other-site\.com", 
    :set! noscript.allowedMimeRegExp=" "
);
EOM

Ich habe das nicht getestet, werde es aber tun.

EDIT : sollte es sein

add_AutoCommand('https?:\/\/allow-font-on-this-site\\.com.*', 
    function(){options.setPref("noscript.allowedMimeRegExp",
        "FONT@http://fonts.gstatic.com")}, 
    function(){options.setPref("noscript.allowedMimeRegExp", 
        "")}
);

... aber Noscript greift nicht auf die Einstellungen zurück, es sei denn, die Seite wird neu geladen, also entweder manuell neu laden oder verwenden tabs.reload(config.browser.mCurrentTab, false);

Es scheint, dass Sie einen Booleschen Wert und ein Timeout festlegen sollten, um zu verhindern, dass LocationChange das Neuladen erneut ausführt (und somit eine Schleife durchführt). Möglicherweise wird ein anderes Autocmd für das PageLoadPre-Ereignis für den Booleschen Wert verwendet. Ich weiß, das wird ziemlich hässlich. Es tut uns leid.

ps. Eine nützlichere Anwendung der einfachen URL-basierten Voreinstellung ist offensichtlich das Ändern des Download-Verzeichnisses.

BEARBEITEN (2017): Mit uBlock Origin können Sie bestimmte Arten von HTML-Objekten, -Dateien oder -Verhalten gezielt ansprechen.

Sowohl dynamische als auch statische Regeln legen fest, dass Ursprünge für eine Domain / URL zulässig sind. Ich benutze das jetzt seit ein paar Jahren. Zu den Typen gehören Schriftart sowie Inline-Skript , Stylesheet , Bild , Objekt , Skript , xmlhttprequest , Subframe , Medien , Websocket , Popunder und Popup .

Beispielregeln:

* * 3p block
no-remote-fonts: * true
no-remote-fonts: allow-font-on-this-site.com false
allow-font-on-this-site.com font-cdn.org noop

was bedeutet:

  1. Blockieren Sie Anfragen von Drittanbietern von jeder Seite an einen beliebigen Ort
  2. Blockieren Sie Schriftarten von Drittanbietern auf jeder Seite von überall
  3. Aktivieren Sie Schriftarten von Drittanbietern auf einer Seite in der Domain allow-font-on-this-site.com von überall wieder
  4. Optional können Sie die Anfrage auf unserer Seite wieder aktivieren, um den Ursprung in der Domain font-cdn.org zu erhalten

Mit noop ('no operation') wenden wir weiterhin die statische Regelfilterung an (üblicherweise in verteilten Regeln definiert, die als Werbeblocker- oder Malvertising-Listen bezeichnet werden).

Bart
quelle
1
Vielen Dank für Ihre gründliche Antwort und die Zeit, die Sie dafür aufgewendet haben.
Jura