javascript - 这是一种新的广告 JavaScript 类型,更改为 "window.opener.location",我该如何阻止它?

标签 javascript dom browser ads

我的一位 friend 说,他的 Chrome 浏览器标签有时会变成“tamll.com”,这是中国最大的购物网站。

起初我认为这可能是由恶意软件引起的。但他有一个干净的操作系统,并且他检查了计算机中的所有内容。

然后我发现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) {}
}

最佳答案

此网络应用程序利用了 Google 和其他网站从 gfan.com 打开的事实。因此,gfan.com Web 应用程序确实对新窗口有一定的控制权,因为它打开了新窗口。

如果您怀疑应用程序底部的脚本导致了问题,您可以尝试为 Chrome 和 Firefox 提供的几种可作为扩展安装的广告拦截器之一。

如果这不起作用,您可以尝试编辑主机文件并将远程脚本的域指向 127.0.0.1,以便在本地覆盖 DNS。这假设它是一个远程脚本并且不是由 gfan.com 本身提供的;否则,您也将无法访问 gfan.com。

Chrome Adblock是一个广告拦截器,您可以尝试一下。

关于javascript - 这是一种新的广告 JavaScript 类型,更改为 "window.opener.location",我该如何阻止它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10039772/

相关文章:

javascript - IPFS Angular11 ipfs-http-client new IpfsHttpClient = 错误 : export 'AbortController' , Multiaddr

javascript - 使用 JavaScript 访问 iframe 和 body 标签中的元素

HTML 阴影属性?

javascript - 动态设置 `grid-template-columns` css属性的值

javascript - 如何使用 javascript 单击最后一个子链接

javascript - 如何通过 JavaScript 更改 CSS 渐变?

javascript - 使用 jQuery 获取元素时,值未定义

java - 使用给定的 xpath 列表仅保留 xml 中想要的元素

javascript - 如果不尊重即使内在值(value)也是错误的

javascript - 是否可以使用Javascript关闭Android浏览器?