【问题标题】:finding advertisements on a page with javascript使用 javascript 在页面上查找广告
【发布时间】:2015-02-27 13:20:57
【问题描述】:

大家好,正在编写一个脚本来检测带有 javascript 的页面中是否存在广告。大多数广告都出现在 i 框架中。所以我做了一些类似的代码

window = 'Url_of_the_website_to_be_checked';
if(window != window.top) 
{
console.log('adv detected');
} else {
console.log('adv not found');
}

但是当我运行代码时,即使页面有广告,我也没有得到预期的输出。

这实际上是如何用js来完成的。有没有其他方法可以做到这一点??..

任何帮助都会非常有帮助和感激..Thanx

【问题讨论】:

  • window.top 的值是多少?也许您想遍历window.top.frames 进行检查?
  • @gvee 我已经检查了 window.top.check ..但结果还是一样..你能给我一个例子

标签: javascript


【解决方案1】:

以下答案提供了已知广告客户域名的列表,可能有用

Finding Ads on a web page

为了检测页面上的广告,我会检查页面上的 iframe,然后检查 iframe 的 src 域是否在已知广告商列表中。您可以只检查它是否与当前网站域匹配,但这会将外部脚本/小部件(如 Facebook)识别为广告,因为它们也使用嵌入式 iframe。

您可以使用下面的代码来获取源代码

var frames = document.getElementsByTagName("iframe");
var frame = frames[0];
var srcString = frame.src

然后,您可以从该 src 字符串中提取域名,并与您的广告商列表进行比较,该列表可能只是一个数组或存储在数据库中。

此代码应该有助于使用 jQuery 获取网站上的所有 iframe 并获取每个 iframe 的域

$('iframe').each(function(index, frm) {
  if (undefined != frm.src && frm.src != '') {
    var parser = document.createElement('a');
    parser.href = frm.src;
    console.log(parser.hostname);
  }
});

如果需要,你可以不使用 jQuery 来实现

【讨论】:

  • 如果有框架,我如何检查多个网站?
  • 如果您想查看外部网站的广告,您最好使用无头浏览器,例如PhantomJS。这可以加载站点并加载所有页面脚本。然后您可以搜索网站 DOM。要检查多个,您可以将要测试的站点列表保存在数据库或数组中,然后对其进行迭代。
  • 你给我的第一个链接是python,第二个链接与主题无关
  • 嗨,第一个链接的接受答案提供的链接可以很好地研究您想要实现的目标。它提供了一个已知广告商的列表,便于参考。第二个链接显示如何访问 iframe 的窗口对象。当 window 是字符串时比较 window != window.top 将不起作用。 MDN Window
  • 是的,但是在你给我的第二个例子中看到这里..它正在创建一个元素 iframe..我不想创建一个我只想检查加载的页面是否有 iframe?跨度>
猜你喜欢
  • 2012-11-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-10
  • 1970-01-01
  • 2011-06-05
  • 2012-04-15
相关资源
最近更新 更多