防止Firefox中的JavaScript重定向

时间:2014-12-29 14:06:38

标签: firefox firefox-addon noscript

我想在Firefox中阻止一个域(youtube.com)的JavaScript重定向,我想知道是否有一个插件可以执行此操作。我正在尝试使用NoScript,我想全局允许脚本,因为我不想禁用大多数JavaScript,但这似乎只允许JavaScript重定向。有没有办法让我只禁用JavaScript重定向(或理想情况下,显示提示)?

我能想到的唯一另一种方法就是编写我自己的扩展程序,它与window.onbeforeunloadwindow.unload混淆,但理想情况下我想使用现有的插件。

1 个答案:

答案 0 :(得分: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);
    }
}

我使用标志来测试重定向。这里有一些我曾经拿过旗帜的笔记,我不完全确定这些笔记有多精确:

  
      
  • 如果有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-on-modify但是没有。图像也可以有LOAD_REPLACE标志
  •   

当然要开始观察:

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

并停止:

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