Zezwalaj na „blokowanie obiektów” z określonej witryny

8

Chcę zezwolić na „zablokowane obiekty”, w tym czcionki, dla niektórych witryn z wtyczką NoScript FireFox.

Rozumiem, dlaczego NoScript blokuje czcionki , ale dla kilku zaufanych stron internetowych chcę na to pozwolić.

Czytam, jak zezwolić na skrypt tylko z jednej domeny i jak włączyć niektóre konkretne skrypty oprócz instrukcji ABE . Ale nie mogę sprawić, żeby działało. Oto kilka zasad ABE, które wypróbowałem dla 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

Żaden z tych zestawów reguł nie pozwoli jednak na włączenie czcionek dla Toggl. Czy widzisz, gdzie się mylę?

(NoScript 2.6.9.6rc3 w FireFox 34.0.5)

jura
źródło

Odpowiedzi:

5

na miejscu noscript stany:

Na przykład ustawienie noscript.allowedMimeRegExpwartości preferencji na

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

na stałe zezwoli na dowolne ładowanie FRAME / IFRAME z somesite.com, czcionek internetowych z some-other-site.com i zawartości WebGL 3D z https://www.khronos.org.

Nie sądzę, że ABE może to zrobić. Jednym z hackerskich sposobów włączenia czcionki tylko dla określonej witryny / domeny jest użycie Vimperatora / pentadaktyla i automatyczna zmiana ustawienia MimeRegExp w przypadku zdarzenia LocationChange. Aby przywrócić ustawienie podczas opuszczania strony, możesz użyć tej prostej funkcji ( pobranej od Anekos ) w .vimperatorrc, która używa wyrażenia z ujemnym wyprzedzeniem:

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

Nie testowałem tego, ale zrobię to.

EDYCJA : tak powinno być

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

... ale noscript nie wybiera preferencji, chyba że strona zostanie przeładowana, więc albo przeładuj ręcznie, albo użyj tabs.reload(config.browser.mCurrentTab, false);

Wydaje się, że powinieneś ustawić wartość logiczną i limit czasu, aby zapobiec ponownemu uruchomieniu (i zapętleniu) przeładowania przez LocationChange. Być może dla wartości logicznej można użyć innego autocmd zdarzenia PageLoadPre. To robi się dość brzydkie, wiem. Przepraszam.

ps. bardziej użyteczną aplikacją prostego przełączania wstępnego opartego na adresach URL jest oczywiście zmiana katalogu pobierania.

EDYCJA (2017): Za pomocą uBlock Origin możesz w szczególności celować w określone typy obiektów HTML, plików lub zachowań.

Zarówno reguły dynamiczne, jak i statyczne określają, że pochodzenie jest dozwolone dla domeny / adresu URL. Używam tego od kilku lat. Typy obejmują czcionkę, a także skrypt wbudowany , arkusz stylów , obraz , obiekt , skrypt , xmlhttprequest , sub_frame , media , websocket , popunder i popup .

przykładowe zasady:

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

co oznacza:

  1. zablokować żądanie strony trzeciej z dowolnej strony w dowolne miejsce
  2. blokuj czcionki innych firm na dowolnej stronie z dowolnego miejsca
  3. ponownie włącz czcionki innych firm na stronie w domenie allow-font-on-this-site.com z dowolnego miejsca
  4. opcjonalnie ponownie włącz prośbę na naszej stronie do źródeł w domenie font-cdn.org

Dzięki noop („brak operacji”) nadal stosujemy statyczne filtrowanie reguł (powszechnie definiowane w regułach rozproszonych znanych jako listy blokujące reklamy lub listy złośliwych reklam).

Bart
źródło
1
Dziękujemy za dokładną odpowiedź i poświęcony na to czas.
Jura,