Twitter предотвращает блокировку скриптов


0

Я столкнулся со странной проблемой. Когда я включил UBlock Origin в Pale Moon, чтобы заблокировать все скрипты (включая inline-скрипты), веб-страница Twitter как-то показывает следующее неприятное поведение:

  1. Это не показывает контекстное меню при щелчке правой кнопкой мыши (но двойной щелчок правой кнопкой вызывает его).

  2. Многие стандартные клавиши не работают, в том числе Up / Down / PgUp / PgDn и F5 и Backspace и Alt + Left / Right / Home. Ctrl + W не закрывает вкладку, а Ctrl + T не открывает новую вкладку (но Ctrl + Tab работает).

Я подтвердил, что это связано с блокировкой скриптов Twitter, потому что у меня есть два других аддона (один из которых AdBlock Lite ), которые блокируют загрузку скриптов через NsIContentPolicy, оба из которых утверждают, что успешно блокируют:

Но не блокируйте

Я подозреваю, что UBlock Origin также не может блокировать некоторые скрипты, которые захватывают мышь и некоторые сочетания клавиш. Когда все три надстройки отключены для Twitter, вышеуказанное неприятное поведение исчезает.

У меня даже есть Greasemonkey скрипт установлен @run-at document-startи stopImmediatePropagationна любом KeyDown события, но он не в состоянии предотвратить угон клавиатуры.

Мои вопросы

  1. Я вижу, что первый файл JS, который явно заблокирован, связан с <script>тегом, а не только с <link>тегом. Итак, я предполагаю, что NsIContentPolicy не работает для <link>тегов (особенно с атрибутом rel='preload'?). Буду признателен, если кто-нибудь сможет объяснить, что происходит.

  2. Есть ли способ, которым я могу иметь 100% гарантию блокировки всех скриптов от запуска, если я не внесу их в белый список на индивидуальной основе?

Мобильная версия Twitter отлично работает и не угнать мыши и клавиатуры.


Я не вижу поведения, которое вы описываете. Если я блокирую все inline-script + сторонние и сторонние сценарии, все сценарии блокируются, контекстное меню, вызываемое правой кнопкой мыши, отображается правильно, страница dn / up работает нормально. Кроме того, «Я подозреваю» совершенно бесполезно - вам не нужно «подозревать», просто используйте консоль разработчика, чтобы подтвердить, что все сценарии заблокированы.
rhill

@rhill: Буду признателен, если вы скажете мне, как правильно проверить. В профилировщике Javascript я не вижу ничего из запущенного Твиттера, но если так, как можно похитить клавиши и мышь? Можете ли вы сказать мне, как <link rel='preload'>обрабатывается тег? Как я могу получить эти запросы?
user21820

1
@rhill: Когда я комментировал ранее, я не знал, что у консоли была возможность отключить Javascript. Действительно блокирует все сценарии, как и мой сценарий GM. Так что с UBlock Origin явно что-то не так. Похоже, что он успешно блокирует встроенные сценарии на других веб-сайтах, так как мой прослушиватель событий, введенный GM, не запускается на них, в отличие от веб-страницы Twitter, и консоль регистрирует нарушения CSP. Я думаю, что мой метод лучше, чем использование CSP, поскольку для чего-либо, кроме другого расширения, должно быть невозможно внедрить прослушиватель событий перед моим. Я ошибаюсь?
user21820 20.09.16

@rhill: Кстати, вы разработчик UBlock Origin? На веб - странице Twitter он генерирует следующее сообщение об ошибке , когда я нажимаю на странице: TypeError: elem.matches is not a function @ chrome://ublock0/content/js/scriptlets/load-large-media-interactive.js:160.
user21820 20.09.16

Ответы:


1

Наконец-то у меня было время вернуться к этому. Я использовал сценарий GreaseMonkey, чтобы внедрить прослушиватель событий для beforescriptexecuteпредотвращения загрузки всех сценариев, и обнаружил, что UBlock Origin (1.9.6) не может блокировать выполнение встроенных сценариев на веб-странице Twitter. Поэтому я, по сути, ответил на свой вопрос:

  1. Проблема была с UBlock Origin, а не с <link rel="preload" ...>тегами.

  2. Используя этот сценарий GM, я могу легко заблокировать все сценарии и, в частности, белый список любого, который я желаю.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.