Разрешить «блокировать объекты» с определенного сайта


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)

Ответы:


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


1
Спасибо за ваш тщательный ответ и время, которое вы вложили в него.
Юра
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.