8

Я хочу разрешить "заблокированные объекты", включая шрифты, для определенных сайтов с помощью плагина NoScript FireFox.

Я понимаю, почему NoScript блокирует шрифты, но, тем не менее, для нескольких доверенных сайтов я хочу разрешить их.

Я прочитал, как разрешить сценарии только из одного домена и как включить некоторые конкретные сценарии, кроме руководства ABE. Но я не могу заставить это работать. Вот несколько правил ABE, которые я пробовал для Toggl:

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. Вы видите, где я иду не так?

(NoScript 2.6.9.6rc3 в FireFox 34.0.5)

1 ответ1

5

сайт noscript гласит:

Например, установка значения предпочтения noscript.allowedMimeRegExp равным

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

будет постоянно разрешать любую загрузку FRAME/IFRAME с somesite.com, веб-шрифты с some-other-site.com и WebGL 3D-контент с https://www.khronos.org .

Я не думаю, что ABE может сделать это. Один хакерский способ включить шрифт только для определенного сайта / домена - это использовать Vimperator / Pentadactyl и автоматически изменять настройку MimeRegExp в событии LocationChange. Чтобы отменить настройку, покидая страницу, вы можете использовать эту простую функцию (полученную от Anekos) в .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 не выполнял (таким образом, зацикливая) перезагрузку снова. Возможно, для логического значения может быть использован другой autocmd для события PageLoadPre. Это становится довольно уродливо, я знаю. Сожалею.

пс. более полезное приложение простого преф переключения на основе URL, очевидно, изменяет каталог загрузки.

РЕДАКТИРОВАТЬ (2017): С помощью uBlock Origin вы можете специально нацеливать определенные типы html-объектов, файлов или поведений.

Как динамические, так и статические правила указывают, что происхождение разрешено для домена / URL. Я использую это в течение нескольких лет. Типы включают в себя шрифт, а также встроенный скрипт, таблицу стилей, изображение, объект, скрипт, xmlhttprequest, подфрейм, медиа, websocket, popunder и popup.

пример правил:

* * 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 («без операции») мы по-прежнему применяем статическую фильтрацию правил (обычно определяемую в распределенных правилах, известных как списки блокировки рекламы или списки вредоносной рекламы).

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .