允许来自特定站点的“阻止对象”


8

我想使用NoScript FireFox插件允许某些站点的“被阻止的对象”(包括字体)。

我知道为什么NoScript阻止字体,但是对于一些受信任的网站,我仍然希望允许它们。

我阅读了如何仅允许来自一个域的脚本以及如何启用ABE手册之外的某些特定脚本。但是我无法使其工作。这是我为Toggl尝试的一些ABE规则:

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

但是,这些规则集都不允许Toggl包含字体。你看到我要去哪里了吗?

(FireFox 34.0.5上的NoScript 2.6.9.6rc3)

Answers:


5

无脚本的网站状态:

例如,将noscript.allowedMimeRegExp首选项值设置为

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

将永久允许从somesite.com加载任何FRAME / IFRAME,从some-other-site.com加载Web字体,从加载WebGL 3D内容https://www.khronos.org

我认为ABE无法做到。一种仅针对特定站点/域启用字体的怪异方法是使用Vimperator / Pentadactyl,并在LocationChange事件上自动更改MimeRegExp设置。要在离开页面时还原设置,可以在.vimperatorrc中使用此简单函数(从Anekos处获取),该函数使用带有负前瞻性的表达式:

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

我还没有测试过,但我会的。

编辑:应该是

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

...但是除非重新加载页面,否则noscript不会选择首选项,因此可以手动重新加载或使用 tabs.reload(config.browser.mCurrentTab, false);

似乎应该设置一个布尔值和一个超时,以防止LocationChange再次执行(因此,循环执行)重载。可能将PageLoadPre事件上的另一个autocmd用于该布尔值。我知道这变得越来越难看。抱歉。

ps。一个简单的基于URL的首选项切换的更有用的应用程序显然是更改了下载目录。

编辑(2017):使用uBlock Origin,您可以专门针对某些类型的html对象,文件或行为。

动态和静态规则均指定域/ URL允许使用来源。我已经使用了几年了。类型包括字体以及内联脚本样式表图像对象脚本xmlhttprequestsub_framemediawebsocketpopunderpopup

示例规则:

* * 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

也就是说:

  1. 阻止第三方请求从任何页面到任何地方
  2. 从任何地方阻止任何页面上的第三方字体
  3. 在任何地方重新启用域上页面上的第三方字体allow-font-on-this-site.com
  4. (可选)重新启用对页面上源于font-cdn.org域的源的请求

使用noop(“无操作”)时,我们仍将应用静态规则过滤(通常在称为广告屏蔽或恶意列表的分布式规则中定义)。


1
感谢您的详尽回答以及您投入的时间。
朱拉
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.