Como posso fazer meu navegador ignorar o conteúdo da tag 'noscript' mesmo quando o javascript está desativado?

2

Sendo um pouco mais consciente, os meus navegadores têm uma lista branca de JavaScript que podem ser executados. No entanto, o conteúdo da tag <noscript> pode fornecer essa minha preferência, porque o navegador tenta carregar essas imagens analíticas irritantes de 1x1.

Existe uma maneira de fazer um navegador ignorar [1] este conteúdo mesmo quando o javascript está desativado?

Eu não mencionei qual navegador porque eu posso trocar os navegadores de código aberto, se necessário. Chromium, Firefox, Opera, etc Então, as respostas que abordam um único navegador estão bem.

[1] Por "ignorar", quero dizer, não faça solicitações de conteúdo isca que darão status javascript-disabled . Eu posso colocar um userscript que exclua <noscript> do DOM, mas então pode ser tarde demais.

    
por Mindwin 20.01.2017 / 12:49

3 respostas

1

Você quer dizer código intrometido como:

<noscript>
    <img height="1" width="1" alt="" style="display:none"
     src="https://www.facebook.com/tr?id=redacted&ev=PageView&noscript=1"></noscript>

??

Nãoseicomodesativaraavaliaçãode<noscript>,masnoexemploacima,vocêpodeescreverumapequenaextensãodonavegadorparacancelarqualquersolicitaçãocomumaurlcontendoa%substringfacebook.com/tr?.

Consulte chrome.webRequest para obter uma descrição da API do navegador Google Chrome para assistir, modificar ou bloquear solicitações em andamento.

Aqui está um exemplo de trabalho:

manifest.json:

{
"name": "Website Blocker",
"description": "Keeps the browser from fetching tracking URLs",
"version": "1.0",
"manifest_version": 2,
"permissions": [
    "webRequest",
    "webRequestBlocking",
    "*://*.facebook.com/tr?*"
],
"background": {
    "scripts": [
        "script.js"
    ],
    "persistent": true
},
"icons": {
    "256": "world-blocker.png"
},
"converted_from_user_script": true
}

script.js:

"use strict"

console.log("Website Blocker is running!");
var re = new RegExp('https?://.*?\.?facebook.com/tr\?', 'i');

function checkUrl(details) {
    var cancel = !!details.url.match(re);
    if (!cancel)
        console.log('Passing ${details.url}');
    return {cancel: cancel};
}

chrome.webRequest.onBeforeRequest.addListener(
    checkUrl,
    {urls: ['*://*.facebook.com/tr?*']},
    ['blocking']
);

Use o que você quiser para o ícone. Ou apague-o e deixe o navegador fornecer um falso. Sua única função é destacar a entrada da extensão na página chrome://extensions .

A extensão funcionou bem na página em questão. O log do console da página tem uma mensagem de erro net::ERR_BLOCKED_BY_CLIENT para a busca da imagem. Da mesma forma, uma linha de falha vermelha na guia Rede.

Além disso, o pré-filtro de URLs está funcionando bem. O JavaScript só está sendo chamado para o URL de rastreamento específico. Verificando o console da extensão, não vejo mensagens "Passando ...", mesmo quando visito o Facebook.

    
por 21.02.2018 / 06:17
0

Não sei onde você está preocupado com as informações de quando seu navegador tem JavaScript habilitado ou não. Você está certo de que certos navegadores estão fazendo mais do que alguns gostariam que fossem. O artigo que você vinculou em um de seus comentários é, na minha opinião, sobre um tópico diferente do que a sua pergunta embora.

No que diz respeito ao cenário declarado em sua pergunta, é a operação normal de um navegador solicitar recursos que fazem parte da página. Um navegador não tem conhecimento dos dados reais que estão sendo carregados de um URL apenas olhando para ele e, como tal, não seria capaz de detectar um pixel de rastreamento um por um antes de carregá-lo. Isso também não é nada que o seu navegador faça "pelas suas costas" e provavelmente você está mais preocupado com o terceiro que forneceu esse gráfico do que com o seu navegador.

As soluções que vejo neste assunto (agora) são as seguintes:

  • Bloquear todas as solicitações de domínios externos. Você já parece estar ciente de um conjunto de ferramentas que poderia fazer isso. Você poderia, por exemplo, usar RequestPolicy e definir o escopo de acordo. Isso não o protegerá do rastreamento de pixels entregues a partir do mesmo domínio que você está visitando.
  • Use algo como um script GreaseMonkey ou similar para modificar o DOM e remover a parte noscript . Dependendo de quando esse script é carregado, pode ser tarde demais e seu navegador também pode tentar fazer o cache prévio. A pergunta a seguir pode ser útil para isso: como executar o script greasemonkey antes que o conteúdo da página seja exibido?
  • Use um navegador de texto.
  • Prenda seu navegador favorito e modifique-o para não avaliar a parte do noscript. Esta provavelmente seria a opção mais segura, mas também a mais complexa.

Em determinados sites, a tag noscript pode conter informações valiosas para você. Como você não seria capaz de discernir a natureza desse conteúdo sem procurá-lo, possivelmente carregando recursos adicionais, não parece haver uma boa maneira de identificar conteúdo "ruim" aqui. Exceto com algumas regras realmente subjetivas.

Ainda mais se você estiver preocupado com o acompanhamento, e não com as informações sobre quando o JavaScript está ativado ou não, há muito mais tecnologias que podem expô-lo. Como o elemento 'canvas', Flash e cookies. Portanto, a questão seria qual é o seu objetivo real, ignorando essa seção de uma página quando muitos dos outros componentes podem ser tão perigosos.

    
por 20.01.2017 / 15:02
0

Se você usa o uBlock Origin, o filtro

##noscript

deve funcionar, embora eu não tenha testado. Os filtros de origem do uBlock são executados antes de a página ser avaliada, então isso deve impedir que esses elementos sejam buscados.

    
por 11.11.2018 / 19:11