站长如何屏蔽流氓宽带商在你的页面里面强行插入的广告代码

如果屏蔽页面上的广告?对于普通用户来说,使用AdBlock插件是最佳选择(针对火狐浏览器和谷歌浏览器用户,不知道IE浏览器容易如何处理这样的问题)。

没有人喜欢广告,但在互联网上,绝大多数网站的主要来源只有广告,如果没有广告收入,这些网站基本上都会倒闭。

为了在投放放过和不骚扰用户之间取得平衡,很多站长是很有克制在页面上投放少量的广告。但站长们的这些良苦用心往往会被一些流氓宽带商的恶意行为给 粉碎了。几乎所有的宽带商(联通宽带、电信宽带、移动宽带、长城宽带、方正宽带等)都会在用户使用它们的宽带服务浏览网页时,在这些网页的页面上强行嵌入 自己的广告服务。

以大家熟知的36kr网站为例子来说明这个问题。我使用的是方正宽带,当用户访问36kr网站的页面时,正常情况下,36kr网站的页面是没有放置广告的,更不会在页面的右下角弹出广告。但当使用方正宽带访问36kr网站时,你就会发现页面右下角有广告弹出。

(点击查看大图)

我们使用火狐浏览器的代码调试窗口,发现,在页面的尾部无端多出来很多iframe和嵌入有广告代码的div。很显然,这些代码并不是36kr放置的。它是宽带商捕捉用户浏览的网页,擅自非法的这些页面上添加自己的广告服务代码。这些代码能给宽带商带来一笔额外的收入。

(点击查看大图)

 

对于站长来说,这些广告很讨厌,用户会认为这些都是网站站长投放的。站长背了黑锅,而且没得到任何好处,更重要的,影响了在用户心中的形象,流失了用户。

站长应该维权,但站长是弱势群体,维权路上很难成功。那么,我们只能自己想办法,我们可以通过技术的手段,在页面代码里做一些改动,阻拦或屏蔽这些宽带商非法嵌入的代码。

我发现,宽带商非法嵌入的广告代码通常是两种形式,一种是在页面尾部加入数个iframeiframe里的内容是宽带商承揽的广告;另外一种形式是直接嵌入divdiv里嵌入一些html代码和js,最终呈现的内容还是宽带商承揽的广告。

但无论是iframe还是div,这些HTML广告代码都有相同的特征。

首先说说iframe形式,这些iframe在页面文档中的位置一定都是 body 元素的直接子元素,用CSS 选择器可以这样表示:

body > iframe{....}

以我个人的经验,一般正常的页面里很少有使用iframe的,即使有,也很少有将iframe直接放到body元素下的。所以,对于这些流氓宽带商非法嵌入的iframe,我们可以通过下面的CSS进行屏蔽:

    body > iframe{
        opacity:0;
        display:none;
    }

把这段代码放入页面里,这非法嵌入的广告iframe,虽然存在,但完全看不见。

对于第二种情况,也就是div形式的广告,我发现这些div通常会放置在页面的最后,也就是页面里正常HTML元素的最后一个的后面。如果我们的页面里最后一个元素是:

    <div id='last-div'></div>

,则就要其后非法插入的广告代码的CSS选择可以是这样:

div#last-div ~ div { }

,只要能捕捉目标,我们就能消灭它们,隐藏这些非法入侵者的代码很简单,跟上面消灭iframe的方式一样:

    div#last-div ~ div {
        display: none;
        opacity:0;
    }

将上面这这种代码一起放到页面里的CSS文件里,黑心的宽带商非法插入的广告就无法显示,我只是小范围的测试了一下,效果很好,但很有可能还有更多没有考虑到的情况。如果你知道这种方法有遗漏的地方,或者有更好的方法,请告诉我,在下面留言,或发邮件给我,谢谢。

 

原文:http://www.webhek.com/block-isp-pop-ad

更多参考:

Anti-AdBlock 反AdBlock,自动检测浏览器是否开启AdBlock

用JavaScript探测页面上的广告是否被AdBlock屏蔽了的方法

网页检测 AdBlock 的 6 种方法

 

本文: 站长如何屏蔽流氓宽带商在你的页面里面强行插入的广告代码

Loading

Add a Comment

Your email address will not be published. Required fields are marked *

Time limit is exhausted. Please reload CAPTCHA.