Wie kann ich meinen Browser dazu bringen, `zu ignorieren<noscript>` tag content even when javascript is disabled? </noscript>

940
Mindwin

Being a bit over conscious, My browsers have a whitelist for javascript they can run. But <noscript> tag content can give away this preference of mine, because the browser then attempts to load those pesky analytics 1x1 images.

Is there a way to make a browser ignore[1] this content even when javascript is disabled?

I do not mention which browser because I can swap open source browsers if needed. Chromium, Firefox, Opera, etc. So answers that address a single browser are fine.


[1] By "ignore" I mean don't make requests for bait content that will give away javascript-disabled status. I can put up a userscript that deletes <noscript> from the DOM, but by then it might be too late.

2
Abgesehen davon haben Sie keine Option. Sie können natürlich versuchen, NoScript oder AdBlocker zu verwenden, die diese Dinge normalerweise auch blockieren. Wenn Sie das Verhalten eines Browsers auf einer solchen grundlegenden Ebene ändern möchten, müssen Sie wahrscheinlich einen eigenen Wurf durchführen. Seth vor 7 Jahren 1
@Seth-Browser sind zu freizügig (promiscuous?). Sie tun (viele) Dinge hinter Ihrem Rücken, die Sie lieber nicht erlaubt hätten, wenn Sie wüssten, was es war. Aber [Stallman hatte uns schon gewarnt] (http://www.theregister.co.uk/2009/03/23/stallman_javascript_warning/) mehrmals. Mindwin vor 7 Jahren 0
@Seth ABP funktioniert, aber ich muss eins nach dem anderen auf die schwarze Liste setzen. NoScript tut nicht viel für ` Mindwin vor 7 Jahren 0

3 Antworten auf die Frage

1
George

Sie meinen neugierigen Code wie:

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

??

Ich weiß nicht, wie die Bewertung von deaktiviert werden kann <noscript>, aber im obigen Beispiel könnten Sie eine kurze Browsererweiterung schreiben, um jede Anfrage mit einer URL zu löschen, die die Teilzeichenfolge enthält facebook.com/tr?.

In Chrome.webRequest finden Sie eine Beschreibung der API des Chrome-Browsers zum Anzeigen, Ändern oder Blockieren von Anforderungen während des Flugs.

Hier ist ein Arbeitsbeispiel:

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 $`); return ; }  chrome.webRequest.onBeforeRequest.addListener( checkUrl,, ['blocking'] ); 

Verwenden Sie für das Symbol, was Sie möchten. Oder löschen Sie es und lassen Sie den Browser einen Dummy-Wert angeben. Die einzige Aufgabe besteht darin, den Eintrag der Erweiterung auf der chrome://extensionsSeite hervorzuheben .

Die Erweiterung funktionierte gut auf der betreffenden Seite. Das Konsolenprotokoll der Seite enthält eine Fehlermeldung net::ERR_BLOCKED_BY_CLIENTfür den Image-Abruf. Ebenso eine rote Fehlerzeile auf der Registerkarte Netzwerk.

Auch die URL-Vorfilterung funktioniert gut. Das JavaScript wird nur für die spezifische Tracking-URL aufgerufen. Beim Überprüfen der Erweiterungskonsole sehe ich keine "Passing ..." -Meldungen, selbst wenn ich Facebook besuche.

0
Seth

Ich bin mir nicht sicher, wo Ihr aktuelles Interesse an den Informationen liegt, wann oder nicht in Ihrem Browser JavaScript aktiviert ist oder nicht. Sie sind richtig, dass bestimmte Browser mehr tun, als manche es wünschen. Der Artikel, den Sie in einem Ihrer Kommentare verlinkt haben, bezieht sich meiner Meinung nach auf ein anderes Thema als Ihre Frage.

In Bezug auf das in Ihrer Frage angegebene Szenario ist es die normale Operation eines Browsers, Ressourcen anzufordern, die Teil der Seite sind. Ein Browser kennt die tatsächlichen Daten, die von einer URL geladen werden, nicht, indem er sie nur betrachtet, und kann daher nicht ein einzelnes Tracking-Pixel erkennen, bevor es tatsächlich geladen wird. Dies ist auch nichts, was Ihr Browser "hinter Ihrem Rücken" tut, und Sie machen sich wahrscheinlich mehr Sorgen um den Drittanbieter, der diese Grafik geliefert hat, als Ihren Browser.

Die Lösungen, die ich in dieser Angelegenheit sehen kann, sind folgende:

  • Blockieren Sie alle Anfragen von fremden Domains. Sie scheinen sich bereits eines Toolsets bewusst zu sein, das dies tun könnte. Sie können zB RequestPolicy verwenden und den Umfang entsprechend einstellen. Dies schützt Sie jedoch nicht vor der Verfolgung von Pixeln, die von derselben Domäne geliefert werden, die Sie besuchen.
  • Verwenden Sie so etwas wie ein GreaseMonkey-Skript oder ähnliches, um das DOM zu ändern und das noscriptTeil zu entfernen . Je nachdem, wann das Skript geladen wird, ist es möglicherweise zu spät, und Ihr Browser kann auch versuchen, es vorab im Cache zu speichern. Die folgende Frage könnte dabei hilfreich sein: Wie wird das greasemonkey-Skript ausgeführt, bevor der Seiteninhalt angezeigt wird?
  • Verwenden Sie einen Textbrowser.
  • Forken Sie Ihren bevorzugten Browser und ändern Sie ihn, um den Noscript-Teil nicht auszuwerten. Dies wäre wahrscheinlich die sicherste Option, aber auch die komplexeste.

Auf bestimmten Websites kann das noscriptTag wertvolle Informationen für Sie enthalten. Da Sie die Art des Inhalts nicht erkennen können, ohne nachzuschauen und möglicherweise zusätzliche Ressourcen zu laden, scheint es keine gute Möglichkeit zu geben, "schlechten" Inhalt hier zu identifizieren. Außer bei einigen wirklich subjektiven Regeln.

Darüber hinaus, wenn Sie sich Sorgen um das Tracking machen, und nicht um die Informationen, wann immer Sie JavaScript aktiviert haben oder nicht, gibt es eine Menge weiterer Technologien, die Sie offenlegen könnten. Wie das Canvas-Element Flash und Cookies. Die Frage wäre also, was Ihr eigentliches Ziel ist, diesen Abschnitt einer Seite zu ignorieren, wenn viele andere Komponenten genauso gefährlich sein könnten.

0
g.rocket

Wenn Sie uBlock Origin verwenden, wird der Filter verwendet

##noscript 

sollte funktionieren, obwohl ich es nicht getestet habe. uBlock-Ursprungsfilter werden ausgeführt, bevor die Seite ausgewertet wird. Dies sollte also verhindern, dass diese Elemente überhaupt abgerufen werden.