前言 一个成熟的大型网站(如淘宝、京东等)的系统架构并不是开始设计就具备完整的高性能、高可用、安全等特性,它总是随着用户量的增加,业务功能的扩展 逐渐演变完善的,在这个过程中,开发模式、技术架构、设计思想也发生了很大的变化,就连技术人员也从几个人发展到一个部门甚至一条产品线。所以成熟的系统 架构是随业务扩展而完善出来的,并不是一蹴而就;不同业务特征的系统,会有各自的侧重点,例如淘宝,要解决海量的商品信息的搜索、下单、支付,例如腾讯, 要解决数亿的用户实时消息传输,百度它要处理海量的搜索请求,他们都有各自的业务特性,系统架构也有所不同。尽管如此我们也可以从这些不同的网站背景下, 找出其中共用的技术,这些技术和手段可以广泛运行在大型网站系统的架构中,下面就通过介绍大型网站系统的演化过程,来认识这些技术和手段。 一、最开始的网站架构 最初的架构,应用程序、数据库、文件都部署在一台服务器上,如图:…
站长如何屏蔽流氓宽带商在你的页面里面强行插入的广告代码
如果屏蔽页面上的广告?对于普通用户来说,使用AdBlock插件是最佳选择(针对火狐浏览器和谷歌浏览器用户,不知道IE浏览器容易如何处理这样的问题)。
没有人喜欢广告,但在互联网上,绝大多数网站的主要来源只有广告,如果没有广告收入,这些网站基本上都会倒闭。
为了在投放放过和不骚扰用户之间取得平衡,很多站长是很有克制在页面上投放少量的广告。但站长们的这些良苦用心往往会被一些流氓宽带商的恶意行为给 粉碎了。几乎所有的宽带商(联通宽带、电信宽带、移动宽带、长城宽带、方正宽带等)都会在用户使用它们的宽带服务浏览网页时,在这些网页的页面上强行嵌入 自己的广告服务。
以大家熟知的36kr网站为例子来说明这个问题。我使用的是方正宽带,当用户访问36kr网站的页面时,正常情况下,36kr网站的页面是没有放置广告的,更不会在页面的右下角弹出广告。但当使用方正宽带访问36kr网站时,你就会发现页面右下角有广告弹出。
(点击查看大图)
我们使用火狐浏览器的代码调试窗口,发现,在页面的尾部无端多出来很多iframe
和嵌入有广告代码的div
。很显然,这些代码并不是36kr放置的。它是宽带商捕捉用户浏览的网页,擅自非法的这些页面上添加自己的广告服务代码。这些代码能给宽带商带来一笔额外的收入。
(点击查看大图)
对于站长来说,这些广告很讨厌,用户会认为这些都是网站站长投放的。站长背了黑锅,而且没得到任何好处,更重要的,影响了在用户心中的形象,流失了用户。
站长应该维权,但站长是弱势群体,维权路上很难成功。那么,我们只能自己想办法,我们可以通过技术的手段,在页面代码里做一些改动,阻拦或屏蔽这些宽带商非法嵌入的代码。
我发现,宽带商非法嵌入的广告代码通常是两种形式,一种是在页面尾部加入数个iframe
,iframe
里的内容是宽带商承揽的广告;另外一种形式是直接嵌入div
,div
里嵌入一些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屏蔽了的方法
本文: 站长如何屏蔽流氓宽带商在你的页面里面强行插入的广告代码