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

2871
Jura

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

8

1 ответ на вопрос

5
Bart

на 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(),  function() ); 

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

Спасибо за ваш тщательный ответ и время, которое вы вложили в него. Jura 9 лет назад 1