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

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

我想允许某些带有 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)

答案1

noscript 网站状态:

例如,将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 的网络字体以及来自 的 WebGL 3D 内容https://www.khronos.org

我认为 ABE 无法做到这一点。一种只为特定网站/域启用字体的不规范方法是使用 Vimperator/Pentadactyl 并在 LocationChange 事件上自动更改 MimeRegExp 设置。要在离开页面时恢复设置,您可以使用这个简单的函数(从阿内科斯) 在 .vimperatorrc 中使用具有负向前瞻的表达式:

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 事件上的另一个自动命令可用于布尔值。我知道这变得相当糟糕。抱歉。

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

编辑(2017):与uBlock 起源您可以专门针对某些类型的 html 对象、文件或行为。

动态和静态规则都指定允许域/url 的来源。我已经使用这个几年了。类型包括字体内联脚本样式表图像目的脚本xmlhttp请求子帧媒体网络套接字弹出式弹出窗口

示例规则:

* * 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. 在域中的页面上重新启用第三方字体允许此网站上的字体.com从任何地方
  4. 可选择在我们的页面上重新启用对域名 font-cdn.org 来源的请求

无操作(“无操作”)我们仍然应用静态规则过滤(通常在分布式规则中定义,称为广告拦截或恶意广告列表)。

相关内容