Twitter verhindert das Blockieren von Skripts

519
user21820

Ich bin auf ein komisches Problem gestoßen. Wenn ich UBlock Origin in Pale Moon aktiviert habe, um alle Skripts (einschließlich Inline-Skripts) zu blockieren, zeigt die Twitter- Webseite das folgende unangenehme Verhalten:

  1. Das Kontextmenü wird nicht mit der rechten Maustaste angezeigt (durch Doppelklicken mit der rechten Maustaste wird es angezeigt).

  2. Viele Standardtasten funktionieren nicht, einschließlich Auf / Ab / Bild / Bild und F5 und Rücktaste und Alt + Links / Rechts / Home. Strg + W schließt die Registerkarte nicht und Strg + T zeigt keine neue Registerkarte an (Strg + Tab funktioniert jedoch).

Ich habe bestätigt, dass es um das Blockieren von Twitter-Skripts geht, da ich zwei weitere Addons (eines davon AdBlock Lite ) habe, die das Herunterladen von Skripts über eine NsIContentPolicy blockieren. Beide behaupten, dass sie erfolgreich blockiert werden:

Aber blockiere nicht:

Ich vermute, dass UBlock Origin auch einige Skripte blockiert, die die Maus und bestimmte Tastenkombinationen entführen. Wenn alle drei Addons für Twitter deaktiviert sind, verschwindet das obige Verhalten.

Ich habe sogar ein Greasemonkey- Skript für @run-at document-startund stopImmediatePropagationfür jedes Keydown-Ereignis festgelegt, kann aber das Tastatur-Hijacking nicht verhindern.

Meine Fragen

  1. Ich sehe, dass die erste JS-Datei, die anscheinend blockiert ist, mit einem <script>Tag verknüpft ist und nicht nur mit einem <link>Tag. Ich vermute also, dass die NsIContentPolicy für <link>Tags fehlschlägt (insbesondere mit dem Attribut rel='preload'?). Ich wäre dankbar, wenn jemand erklären könnte, was los ist.

  2. Gibt es eine Möglichkeit, dass ich 100% ige Garantie dafür habe, dass alle Skripts nicht ausgeführt werden, es sei denn, ich schreibe sie von Fall zu Fall in eine weiße Liste?

Die mobile Version von Twitter funktioniert einwandfrei und entführt weder Maus noch Tastatur.

0
Ich sehe nicht das Verhalten, das Sie beschreiben. Wenn ich alle Inline-Skripts sowie die Skripte von 1st-Party und Drittanbietern blockiere, werden alle Skripts blockiert. Das Kontextmenü mit der rechten Maustaste wird korrekt angezeigt. Die Seite dn / up funktioniert einwandfrei. _ "Ich vermute" _ ist absolut nicht hilfreich - Sie müssen nicht "verdächtigen". Verwenden Sie einfach die Dev-Konsole, um zu bestätigen, dass alle Skripts blockiert sind. rhill vor 7 Jahren 0
@ rhill: Ich würde mich freuen, wenn du mir sagst, wie ich das überprüfen soll. Im Javascript-Profiler sehe ich nichts von Twitter, aber wenn ja, wie können die Tasten und die Maus entführt werden? Können Sie mir sagen, wie das ` ` Tag gehandhabt wird? Wie fange ich diese Anfragen ein? user21820 vor 7 Jahren 0
@ rhill: Als ich das vorher kommentierte, wusste ich nicht, dass die Konsole eine Option zum Deaktivieren von Javascript hatte. Auf diese Weise werden alle Skripts blockiert, und auch mein GM-Skript. Mit UBlock Origin ist also eindeutig etwas nicht in Ordnung. Es scheint, dass es erfolgreich Inline-Skripte auf anderen Websites blockiert, da mein mit GM versehener Event-Listener im Gegensatz zu Twitter nicht für sie ausgelöst wird und die Konsole CSP-Verstöße protokolliert. Ich denke, dass meine Methode besser ist als die Verwendung eines CSP, da es für nichts anderes als eine andere Erweiterung möglich sein sollte, einen Event-Listener vor meiner zu injizieren. Irre ich mich user21820 vor 7 Jahren 1
@rhill: Übrigens, sind Sie der Entwickler von UBlock Origin? Auf der Twitter-Webseite wird beim Klicken auf die Seite der folgende Fehler generiert: `TypeError: elem.matches ist keine Funktion @ chrome: //ublock0/content/js/scriptlets/load-large-media-interactive.js: 160 `. user21820 vor 7 Jahren 0

1 Antwort auf die Frage

1
user21820

Endlich hatte ich etwas Zeit, um darauf zurückzukommen. Ich habe ein GreaseMonkey-Skript verwendet, um einen Ereignis-Listener einzufügen, um das beforescriptexecuteLaden aller Skripts zu verhindern. Dabei wurde festgestellt, dass UBlock Origin (1.9.6) die Ausführung der Inline-Skripts auf der Twitter-Website nicht blockierte. Ich habe also im Wesentlichen meine eigene Frage beantwortet:

  1. Das Problem lag bei UBlock Origin und überhaupt nicht bei den <link rel="preload" ...>Tags.

  2. Mit diesem GM-Skript kann ich problemlos alle Skripte blockieren und insbesondere jede Whitelist auflisten, die ich möchte.