确定向/eyeblaster/addineyev2.html发出请求的广告

Tal*_*Tal 19 javascript iframe ads frame web

我有一个大型网站,使用两个大型在线广告"Remnant"提供商.这些提供商可以定期启动和停止在我们网站上投放的广告系列.

来自其中一家提供商的广告之一错误地向以下网址发出请求:

/eyeblaster/addineyev2.html

我已确定,当网站上的广告通过iframe提供时,某些网站会使用所请求的文件.理论上,此文件会规避跨域限制,以便广告提供商可以使用iframe中的javascript调整iframe大小.

我通过绊倒这个支持文档确定了这个文件的使用:

http://support.google.com/dfp_premium/bin/answer.py?hl=en&answer=1085693

我的问题是我们的网站不使用iframe来发送广告,因此发送到"/eyeblaster/addineyev2.html"URI的请求会导致404错误,而且是不必要的.由于错误来自供应商提供的大型CMS,因此错误会显示在我们的Google Analytics跟踪代码上.这会导致我们的明显网页浏览量膨胀.

综合浏览量通胀可能非常严重,因为404错误页面也包含广告.该404页面还可以加载有缺陷的广告,从而导致广告的递归循环加载完全相同的"/eyeblaster/addineyev2.html"404页面.

到目前为止,我无法通过Firebug或类似的开发人员工具见证广告直接请求此网址.然而,这个不存在的页面的流量是巨大的,因此违规广告肯定仍在混合中.问题是我无法弄清楚哪个广告被破坏了,所以我无法告诉我们的补余提供商将其删除.两家供应商都假装对这个问题一无所知.

我无法删除404错误页面上的Google跟踪代码,但我可以向该页面添加其他JavaScript.

有没有什么方法可以通过向尝试在iframe中请求该页面时产生的404错误添加一些javascript来识别导致"/eyeblaster/addineyev2.html"请求的广告?

基本上几乎是一个"帧破坏者"脚本,而不是破坏框架,提供有关iframe元素附近的HTML节点的信息?我认为这是有可能的,但我目前看不到明确的道路.

谢谢!

Tal*_*Tal 10

我找到了自己的答案,我将在这里分享一个罕见的事件,另一个Web开发人员试图找到一个广告,同时向他们做同样的事情.

违规数字广告带有一个指向"/eyeblaster/addineyev2.html"的iframe,我使用了这些知识,编码了以下javascript以收集有关包含iframe的页面的信息(即包含广告的页面)它).

if(top != self) {
    $.post("/ad_diagnose/log.php", {
        a: $('#ad-div-one', top.document).html(),
        b: $('#ad-div-two', top.document).html(),
        c: $('#ad-div-three', top.document).html(),
        d: $('#ad-div-four', top.document).html(),
        e: $('#ad-div-five', top.document).html(),
    });
}
Run Code Online (Sandbox Code Playgroud)

这个JavaScript使用JQuery(我们的CMS提供商无论如何都包含在每个页面中).它会检查错误页面是否存在于iframe(top!= self)中,然后它会抓取应包含广告的父页面上每个html元素的原始html.

该数据被包装到一个对象中,并发布到一个简单的PHP脚本,该脚本会将发布到其中的每个值的日志写入文件.

最后,我收到了一个日志文件,其中违规广告代码很可能在其中.我能够对该文件进行快速grep并发现广告的iframe指向"/eyeblaster/addineyev2.html"

我希望这有助于其他人!


Mig*_*uel 10

为避免不必要的跟踪,您应该放置一个虚拟空文件/eyeblaster/addineyev2.html,或者,如果您使用nginx类似的操作

server {
  ...

  location = /eyeblaster/addineyeV2.html { echo ""; }
}
Run Code Online (Sandbox Code Playgroud)

或更好

server {
  ...

  location = /eyeblaster/addineyeV2.html { return 404 "404 - page not found";}
}
Run Code Online (Sandbox Code Playgroud)

如果您没有静态托管并且无法配置代理服务器,则可以通过javascript在404页面跟踪中添加条件

if (document.URL.indexOf('/eyeblaster/addineyeV2.html') == -1) {
   doAnalyticsTracking();
}
Run Code Online (Sandbox Code Playgroud)

  • 添加了一个javascript选项 (2认同)
  • @Miguel,只是重读你的帖子.你是对的,有条件的javascript跟踪代码本身可以防止捕获该页面的任何分析信息.它将永久地解决问题,而不会有任何返回的机会.虽然我觉得喜欢找到负责任的广告,但最好还是花在其他地方.+1可获得更快更好的解决方案! (2认同)