Permitir 'bloquear objetos' de um site específico

8

Eu quero permitir "objetos bloqueados", incluindo fontes, para certos sites com o plugin NoScript FireFox.

Eu entendo por que o NoScript bloqueia fontes , mas para alguns poucos sites que eu quero permitir-lhes, no entanto.

Eu li como permitir script de apenas um domínio e como habilite alguns scripts em particular além do manual ABE . Mas eu não posso fazer isso funcionar. Aqui estão algumas regras ABE que eu tentei para o 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

Nenhum desses conjuntos de regras permitirá a inclusão de fonte para o Toggl. Você vê onde estou errado?

(NoScript 2.6.9.6rc3 no FireFox 34.0.5)

    
por JosKodify 10.12.2014 / 09:42

1 resposta

5

o site noscript afirma:

For example, setting the noscript.allowedMimeRegExp preference value to

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

will permanently allow any FRAME/IFRAME load from somesite.com, web fonts from some-other-site.com and WebGL 3D content from https://www.khronos.org.

Eu não acho que a ABE possa fazer isso. Uma maneira hacky de ativar a fonte somente para um site / domínio específico é usar o Vimperator / Pentadactyl e alterar a configuração MimeRegExp automaticamente em um evento LocationChange. Para reverter a configuração ao sair da página, você pode usar essa função simples (obtida de Anekos ) em .vimperatorrc que usa uma expressão com um lookahead negativo:

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

Eu não testei isso, mas vou.

EDITAR : deve ser

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

... mas o noscript não capta a preferência a menos que a página seja recarregada, portanto, recarregue manualmente ou use tabs.reload(config.browser.mCurrentTab, false);

Parece que você deve definir um booleano e um tempo limite para impedir que o LocationChange execute (assim, em loop) o recarregamento novamente. Talvez outro autocmd no evento PageLoadPre possa ser usado para o booleano. Isso está ficando muito feio eu sei. Desculpa.

ps. uma aplicação mais útil de prefixo baseado em URL simples está obviamente mudando o diretório de download.

EDITAR (2017): Com uBlock Origin , você pode segmentar especificamente determinados tipos de objetos html, arquivos ou comportamentos.

As regras dinâmicas e estáticas especificam que as origens são permitidas para um domínio / URL. Eu tenho usado isso há alguns anos. Os tipos incluem fonte , bem como script em linha , folha de estilos , imagem , objeto , script , xmlhttprequest , sub_frame , mídia , websocket , popunder e pop-up .

regras de exemplo:

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

que significa:

  1. bloqueia solicitações de terceiros de qualquer página para qualquer lugar
  2. bloqueia fontes de terceiros em qualquer página de qualquer lugar
  3. reativar as fontes de terceiros em uma página no domínio allow-font-on-this-site.com de qualquer lugar
  4. reativar opcionalmente a solicitação em nossa página para origens no domínio font-cdn.org

Com noop ('sem operação'), ainda aplicamos a filtragem de regra estática (geralmente definida em regras distribuídas conhecidas como listas de anúncios ou de mal-intencionados).

    
por 07.02.2015 / 14:07