Permitir 'bloquear objetos' de um site específico

8

Desejo permitir "objetos bloqueados", incluindo fontes, para determinados sites com o plug-in NoScript FireFox.

Entendo por que o NoScript bloqueia fontes , mas, para alguns sites confiáveis, quero permiti-los.

Li como permitir scripts de apenas um domínio e como habilitar alguns scripts específicos além do manual da ABE . Mas não posso fazer isso funcionar. Aqui estão algumas regras da ABE que eu tentei no 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

Entretanto, nenhum desses conjuntos de regras permitirá a inclusão de fontes no Toggl. Você vê onde estou errado?

(NoScript 2.6.9.6rc3 no FireFox 34.0.5)

Jura
fonte

Respostas:

5

o site noscript declara:

Por exemplo, definir o noscript.allowedMimeRegExpvalor da preferência como

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

permitirá permanentemente qualquer carregamento de FRAME / IFRAME de somesite.com, fontes da Web de some-other-site.com e conteúdo 3D do WebGL https://www.khronos.org.

Eu não acho que a ABE possa fazer isso. Uma maneira hacky de habilitar a fonte apenas 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 esta função simples (obtida da Anekos ) em .vimperatorrc que usa uma expressão com uma aparência negativa:

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.

EDIT : 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 atende à preferência, a menos que a página seja recarregada, então recarregue manualmente ou use tabs.reload(config.browser.mCurrentTab, false);

Parece que você deve definir um valor booleano e um tempo limite para impedir que o LocationChange execute (portanto, faça um 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 da simples alternância pré-baseada em URL está obviamente alterando o diretório de download.

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

As regras dinâmicas e estáticas especificam que as origens são permitidas para um domínio / URL. Estou usando isso há alguns anos. Os tipos incluem fonte , bem como script embutido , folha de estilo , imagem , objeto , script , xmlhttprequest , sub_quadro , 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. bloquear solicitações de terceiros de qualquer página para qualquer lugar
  2. bloquear fontes de terceiros em qualquer página de qualquer lugar
  3. reative fontes de terceiros em uma página do domínio allow-font-on-this-site.com de qualquer lugar
  4. opcionalmente, reative a solicitação em nossa página para origens no domínio font-cdn.org

Com noop ('no operation'), ainda aplicamos a filtragem estática de regras (geralmente definida em regras distribuídas conhecidas como listas de bloqueio de anúncios ou malvertising).

Bart
fonte
11
Obrigado pela sua resposta completa e pelo tempo que você dedicou a ela.
Jura