2012-04-06 36 views
1

他的Chrome瀏覽器選項卡有時候變成了「tamll.com」,這是中國最大的購物網站。這是一個新的廣告javascript改變「window.opener.location」,我怎麼能阻止它?

起初我認爲這可能是由惡意軟件造成的。但他有一個乾淨的操作系統,他檢查了電腦中的所有內容。

然後我發現this javascript。代碼總是在這個問題的底部。這個腳本被包含在「bbs.gfan.com」中。

該腳本使用window.opener.location更改另一個瀏覽器選項卡的網頁。當您從google.com打開「bbs.gfan.com」中的任何頁面(例如,在google中搜索「bbs.gfan.com」並單擊第一個答案)時,此腳本將檢查window.opener是否爲空,並且將window.opener.location設置爲_5had0w.mall。然後window.opener標籤將跳轉到新地址。

有沒有辦法阻止腳本,當它試圖改變window.opener.location?或者有沒有辦法直接禁用window.opener.location?

我認爲一個普通的網頁永遠不會改變這個變量,它只能被這樣的廣告腳本使用。

這種廣告腳本讓我感覺不舒服。它不僅打開一個網頁廣告,而且另一個網頁將會消失......

if ("undefined" == typeof (_5had0w)) { 
    _5had0w = []; 
    _5had0w.ssite = new RegExp("(www.baidu.com)|(www.google.c)|(www.youdao.com)|(search.cn.yahoo.com)|(search.yahoo.com)|(114search.118114.cn)|(bing.118114.cn)|(search.114.vnet.cn)|(bing.com)|(www.soso.com)|(www.sogou.com)|(www.taobao.com)|(gougou.com)|(www.gouwo.com)|(cache.baidu.com)|(m.baidu.com)|(baidu.asp)|(hao123.com)|(265.com)|(114la.com)|(115.com)|(etao.com)", "i"); 
    _5had0w.win = window; 
    try { 
    if (parent && parent.f && parent.document.getElementById("fulliframe")) { 
     _5had0w.win = parent 
    } 
    } catch (e) {} 
    _5had0w.getcookie = function (sName) { 
    var aCookie = document.cookie.split("; "); 
    for (var i = 0; i < aCookie.length; i++) { 
     var aCrumb = aCookie[i].split("="); 
     if (sName == aCrumb[0]) return unescape(aCrumb[1]) 
    } 
    return "" 
    }; 
    _5had0w.setcookie = function (sValue) { 
    date = new Date(); 
    date.setMinutes(date.getMinutes() + 100); 
    document.cookie = "oc_busy=" + escape(sValue) + "; expires=" + date.toGMTString() + ";path=/" 
    }; 
    _5had0w.mall = "http://gomallg.blogbus.com/?76"; 
    _5had0w.np = false; 
    _5had0w.nvIt = function (lochref) { 
    try { 
     _5had0w.win.opener.location = lochref 
    } catch (e) { 
     try { 
     _5had0w.win.opener.navigate(lochref) 
     } catch (e2) { 
     try { 
      _5had0w.win.opener.opener.navigate(lochref) 
     } catch (e3) { 
      _5had0w.np = true 
     } 
     } 
    } 
    }; 
    _5had0w.nvUrl = function() { 
    var _co = _5had0w.getcookie("oc_busy"); 
    if (_co == "" || _co.indexOf("mall") < 0) { 
     _5had0w.nvIt(_5had0w.mall); 
     if (!_5had0w.np) { 
     _5had0w.setcookie(_co + "_mall") 
     } 
    } 
    }; 
    _5had0w.oload = function() { 
    if (_5had0w.win.opener && "" == _5had0w.getcookie('rf6_auth')) { 
     if (_5had0w.ssite.test(_5had0w.win.document.referrer)) { 
     _5had0w.nvUrl() 
     } 
    } 
    }; 
    try { 
    if (document.attachEvent) { 
     window.attachEvent("onload", _5had0w.oload) 
    } else { 
     window.addEventListener("load", _5had0w.oload, false) 
    } 
    } catch (e) {} 
} 
+0

似乎沒有發生在我身上,你能指定哪些瀏覽器受此影響? – sg3s 2012-04-06 06:17:09

+0

谷歌Chrome瀏覽器 – user1260771 2012-04-06 06:42:42

回答

0

這個Web應用程序,走的是一個事實,即谷歌和其他網站正在從gfan.com打開優勢。因此,gfan.com Web應用程序確實可以控制新窗口,因爲它打開了它們。

如果應用程序底部的腳本是您懷疑導致問題的原因,那麼您可以嘗試使用Chrome和Firefox中可以作爲擴展安裝的幾個adblockers中的一個。

如果這不起作用,您可以嘗試編輯您的主機文件並將遠程腳本的域指向127.0.0.1,以便本地覆蓋DNS。這假設它是一個遠程腳本,而不是從gfan.com本身提供;否則,您將無法訪問gfan.com。

Chrome Adblock是一個adblocker,你可以嘗試。

+0

感謝您的回答。 Adblock和AdblockPlus確實不適用於此腳本。我想找到一種方法來直接禁用window.opener.location,因爲我認爲它永遠不會被普通網站使用。 – user1260771 2012-04-06 06:39:38

+0

執行此操作,在Chrome控制檯中運行'window.open(「http://google.com」);'。在彈出窗口中,運行'window.opener'。它會告訴你,由於跨域安全性,你無法訪問stackoverflow.com。如果一個腳本使用window.opener,它是一個彈出窗口,由同一個域上的另一個頁面打開。爲了解決這個問題,您需要一個Chrome擴展,重新定義或取消window.opener對象本身。 – jmort253 2012-04-06 06:48:13

+0

跨域安全性導致的錯誤是針對Chrome控制檯,而不是針對腳本本身。 Chrome控制檯可以顯示對象中的內容,並且當控制檯中的腳本嘗試訪問對象window.opener時,它被拒絕。所以如果你輸入「window.opener」,控制檯中的輸出顯示對象中沒有任何東西,但實際上是。網頁中的腳本可以使用「window.opener.location」。 – user1260771 2012-04-06 07:14:46

相關問題