2012-04-06 4 views
1

Один из моих друзей рассказывает, что его вкладка браузера Chrome иногда менялась на «tamll.com», который был крупнейшим торговым сайтом в Китае.Вот новый тип объявления javascript, изменив «window.opener.location», как я могу его заблокировать?

Сначала я думаю, что это может быть вызвано вредоносным ПО. Но у него есть чистая ОС, и он все проверил на своем компьютере.

Затем я нашел this javascript. Код всегда находится в нижней части этого вопроса. И этот скрипт включен в «bbs.gfan.com».

В скрипте используется окно window.opener.location, чтобы изменить веб-страницу другой вкладки браузера. Когда вы открываете любые страницы в «bbs.gfan.com» с сайта google.com (например, «bbs.gfan.com» в поисковой системе Google и щелкните первый ответ), этот скрипт проверяет, не является ли 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

+0

google chrome browser – user1260771

ответ

0

Это веб-приложение, воспользовавшись тем, что Google и другие веб-сайты открываются с gfan.com. Поэтому веб-приложение gfan.com имеет некоторый контроль над новыми окнами, так как оно их открыло.

Если сценарий в нижней части приложения является тем, что, как вы подозреваете, вызывает проблему, вы можете попробовать один из нескольких рекламных блоков, которые вы можете получить для Chrome и Firefox, которые можно установить как расширения.

Если это не помогло, вы можете попробовать отредактировать свой файл хоста и указать домен удаленного сценария 127.0.0.1, чтобы локально локализовать DNS. Это предполагает, что это удаленный скрипт и не обслуживается самим gfan.com; в противном случае вы также не сможете получить доступ к gfan.com.

Chrome Adblock - рекламный блок, который вы можете попробовать.

+0

Спасибо за ваш ответ. Действительно, Adblock и AdblockPlus не работали для этого скрипта. Я хочу найти способ напрямую отключить window.opener.location, так как я думаю, что он никогда не будет использоваться обычным веб-сайтом. – user1260771

+0

Сделайте это, запустите 'window.open (« http://google.com »);' в консоли Chrome. В всплывающем окне запустите 'window.opener'. Он скажет вам, что вы не можете получить доступ к stackoverflow.com из-за междоменной безопасности. Если скрипт использует window.opener, это всплывающее окно, открытое другой страницей в этом же домене. Чтобы обойти это, вам понадобится расширение Chrome, которое переопределяет или аннулирует сам объект window.opener. – jmort253

+0

Ошибка, вызванная междоменной безопасностью, предназначена для консоли Chrome, а не для самого скрипта. Консоль chrome может показать, что находится в объекте, и когда скрипт в консоли попытается получить доступ к объекту window.opener, ему было отказано. Поэтому, если вы наберете «window.opener», вывод в консоли показывает, что в объекте ничего нет, но на самом деле было. Скрипт на веб-странице может использовать «window.opener.location». – user1260771