Предотвратить перенаправления JavaScript в Firefox

Я хочу предотвратить перенаправления JavaScript в Firefox для одного домена (youtube.com), и мне было интересно, есть ли плагин, который будет это делать. Я пытаюсь использовать NoScript, и я хотел бы разрешить сценарии глобально, потому что я не хочу отключать большинство JavaScript, но это, кажется, просто позволяет перенаправления JavaScript. Есть ли способ для меня, чтобы просто отключить перенаправления JavaScript (или в идеале, отображать подсказку)?

Единственный другой способ сделать это - написать собственное расширение, которое мешает window.onbeforeunload а также window.unload, но в идеале я хотел бы использовать существующий аддон.

1 ответ

var {utils: Cu, classes: Cc, instances: Ci, results: Cr} = Components
Cu.import('resource://gre/modules/Services.jsm');
var myobserve = function(aSubject, aTopic, aData) {
    var httpChannel = aSubject.QueryInterface(Ci.nsIHttpChannel);


    if (httpChannel.loadFlags & Ci.nsIHttpChannel.LOAD_REPLACE) {
            //its a redirect, lets block it
            httpChannel.cancel(Cr.NS_BINDING_ABORTED);
    }
}

Я использую наличие флагов для проверки перенаправления. Вот некоторые заметки, которые я сделал на флагах некоторое время назад, я не совсем уверен, насколько точны эти заметки:

  • if имеет LOAD_DOCUMENT_URI, как правило, также имеет LOAD_INITIAL_DOCUMENT_URI, если его верхнее окно, но при просмотре источника мы просто видим LOAD_DOCUMENT_URI. Если кадр, мы просто видим LOAD_DOCUMENT_URI. js css файлы и т. д. (я думаю, что некоторые imgs запускают http, изменяют, не уверен, может быть, все, но не кэшированные) входят с LOAD_CLASSIFY_URI или без флагов (0)
  • заметьте, однако, что при наличии перенаправления вы получите LOAD_DOC_URI и LOAD_INIT_DOC_URI при начальном, а затем при последующих перенаправлениях до окончательного перенаправления. Все перенаправления имеют флаг LOAD_REPLACE tho
  • примечание: я думаю, что все imgs бросают http-на-модифицировать, но cahced изображения не делают. изображения также могут иметь флаг LOAD_REPLACE

Конечно, чтобы начать наблюдение:

Services.obs.addObserver(myobserve, 'http-on-modify-request', false);

и остановиться

Services.obs.removeObserver(myobserve, 'http-on-modify-request', false);
Другие вопросы по тегам