Permitir 'bloquear objetos' desde un sitio específico

8

Quiero permitir "objetos bloqueados", incluidas las fuentes, para ciertos sitios con el complemento NoScript FireFox.

Entiendo por qué NoScript bloquea las fuentes , pero para algunos sitios web confiables quiero permitirles no obstante.

Leí cómo permitir secuencias de comandos de un solo dominio y cómo habilitar algunas secuencias de comandos particulares además del manual de ABE . Pero no puedo hacer que funcione. Aquí hay algunas reglas ABE que he probado para 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

Sin embargo, ninguno de estos conjuntos de reglas permitirá la inclusión de fuentes para Toggl. ¿Ves a dónde voy mal?

(NoScript 2.6.9.6rc3 en FireFox 34.0.5)

Jura
fuente

Respuestas:

5

el sitio noscript dice:

Por ejemplo, estableciendo el noscript.allowedMimeRegExpvalor de preferencia en

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

permitirá permanentemente cualquier carga de MARCO / IFRAME de somesite.com, fuentes web de some-other-site.com y contenido WebGL 3D de https://www.khronos.org.

No creo que el ABE pueda hacerlo. Una forma hacky de habilitar la fuente solo para un sitio / dominio en particular es usar Vimperator / Pentadactyl y cambiar la configuración de MimeRegExp automáticamente en un evento LocationChange. Para revertir la configuración al salir de la página, puede usar esta función simple ( obtenida de Anekos ) en .vimperatorrc que usa una expresión con una mirada negativa hacia adelante:

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

No he probado esto pero lo haré.

EDITAR : debería 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", 
        "")}
);

... pero noscript no recoge la preferencia a menos que la página se vuelva a cargar, por lo tanto, vuelva a cargarla manualmente o use tabs.reload(config.browser.mCurrentTab, false);

Parece que debe establecer un valor booleano y un tiempo de espera para evitar que LocationChange ejecute (por lo tanto, bucle) la recarga nuevamente. Quizás otro autocmd en el evento PageLoadPre podría usarse para el booleano. Esto se está poniendo bastante feo, lo sé. Lo siento.

PD. obviamente, una aplicación más útil de cambio de pref basado en URL simple es cambiar el directorio de descarga.

EDITAR (2017): con uBlock Origin puede apuntar específicamente a ciertos tipos de objetos, archivos o comportamientos html.

Tanto las reglas dinámicas como las estáticas especifican que los orígenes están permitidos para un dominio / url. He estado usando esto por algunos años ahora. Los tipos incluyen fuente , así como script en línea , hoja de estilo , imagen , objeto , script , xmlhttprequest , sub_frame , medios , websocket , popunder y popup .

reglas de ejemplo:

* * 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 signifíca:

  1. bloquear solicitudes de terceros desde cualquier página a cualquier lugar
  2. bloquear fuentes de terceros en cualquier página desde cualquier lugar
  3. Vuelva a habilitar las fuentes de terceros en una página en el dominio allow-font-on-this-site.com desde cualquier lugar
  4. opcionalmente, vuelva a habilitar la solicitud en nuestra página para orígenes en el dominio font-cdn.org

Con noop ('no operación') todavía aplicamos el filtrado de reglas estáticas (comúnmente definidas en reglas distribuidas conocidas como listas de bloqueo de publicidad o malvertising).

Bart
fuente
1
Gracias por su minuciosa respuesta y el tiempo que dedicó.
Jura