2012-04-06 4 views
1

Einer meiner Freund-Gefilde, dass sein Chrome-Browser-Tab manchmal in "tamll.com" geändert wurde, welches die größte Shopping-Website in China war.Hier ist eine neue Art von Ad-Javascript durch Änderung "window.opener.location", wie kann ich es blockieren?

Zuerst denke ich, dass es durch eine Malware verursacht werden kann. Aber er hat ein sauberes Betriebssystem und er hat alles in seinem Computer überprüft. Dann habe ich this javascript gefunden. Der Code befindet sich immer am Ende dieser Frage. Und dieses Skript ist in "bbs.gfan.com" enthalten.

Das Skript verwendet window.opener.location, um die Webseite eines anderen Browser-Tabs zu ändern. Wenn Sie irgendwelche Seiten in "bbs.gfan.com" von google.com öffnen (zum Beispiel "bbs.gfan.com" in Google suchen und auf die erste Antwort klicken), prüft dieses Skript, ob der window.opener nicht null ist, und setze die window.opener.location auf _5had0w.mall. Dann wird der window.opener Tab auf die neue Adresse gesprungen.

Gibt es eine Möglichkeit, ein Skript zu blockieren, wenn es versucht, window.opener.location zu ändern? Oder gibt es eine Möglichkeit, die window.opener.location direkt zu deaktivieren?

Ich denke, eine normale Webseite wird diese Variable niemals ändern, sie darf nur von einem solchen Ad-Skript verwendet werden.

Diese Art von Anzeigen-Skript hat mich krank gemacht. Es ist nicht nur eine Anzeige Homepage öffnen, sondern auch wird eine andere Webseite gegangen ...

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

Scheint nicht zu passieren für mich, können Sie angeben, welche Browser davon betroffen sind? – sg3s

+0

Google Chrome Browser – user1260771

Antwort

0

Diese Web-Anwendung den Vorteil der Tatsache nimmt, dass Google und andere Websites von gfan.com geöffnet werden. Daher hat die Webanwendung von gfan.com einige Kontrolle über die neuen Fenster, seit sie geöffnet wurden.

Wenn das Skript unten in der Anwendung das ist, was Sie vermuten, verursacht das Problem, können Sie einen von mehreren Adblockern ausprobieren, die Sie für Chrome und Firefox erhalten, die als Erweiterungen installierbar sind.

Wenn dies nicht funktioniert, können Sie versuchen, Ihre Hostdatei zu bearbeiten und die Remote-Skriptdomäne auf 127.0.0.1 zu setzen, damit Sie das DNS lokal überschreiben. Dies setzt voraus, dass es sich um ein Remote-Skript handelt, das nicht von gfan.com selbst bedient wird. Andernfalls können Sie auch nicht auf gfan.com zugreifen.

Chrome Adblock ist ein Adblocker, den Sie ausprobieren können.

+0

Danke für Ihre Antwort. Tatsächlich waren Adblock und AdblockPlus für dieses Skript nicht geeignet. Ich möchte einen Weg finden, die window.opener.location direkt zu deaktivieren, da ich denke, dass sie niemals von einer normalen Website verwendet werden würde. – user1260771

+0

Führen Sie 'window.open (" http://google.com ");' in Ihrer Chrome-Konsole aus. Führen Sie im Popup-Fenster 'window.opener' aus. Es wird Ihnen mitteilen, dass Sie wegen der domänenübergreifenden Sicherheit nicht auf stackoverflow.com zugreifen können. Wenn ein Skript window.opener verwendet, ist es ein Popup-Fenster, das von einer anderen Seite derselben Domain geöffnet wurde. Um dies zu umgehen, benötigen Sie eine Chrome-Erweiterung, die das window.opener-Objekt selbst neu definiert oder ungültig macht. – jmort253

+0

Der durch die domänenübergreifende Sicherheit verursachte Fehler betrifft die Chrome-Konsole, nicht das Skript selbst. Die Chrome-Konsole kann anzeigen, was sich in dem Objekt befindet, und wenn das Skript in der Konsole versucht, auf das Objekt window.opener zuzugreifen, wurde es verweigert. Wenn Sie also "window.opener" eingeben, zeigt die Ausgabe in der Konsole an, dass nichts im Objekt ist, aber tatsächlich war. Das Skript in der Webseite kann "window.opener.location" verwenden. – user1260771

Verwandte Themen