最近家里的光纤宽带在访问一些特定的行业网站的时候总时不时的被电信弹窗,这类利用 iframe 劫持网站弹广告的方式实在太下作了,其实就是一种变相的网络攻击行为。而且这种类型的广告经常会让正常网站的访问用户误解,影响网站的声誉,比如有不明所以的用户会问「你们网站原来没有广告的,现在怎么一访问就弹广告呢?」
如何有效避免这种 iframe 劫持? 有不少朋友分享过相关的技巧,比如常用的代码:
<script type="text/javascript"> if (top.location !== self.location) { top.location=self.location; } </script>
将上述代码嵌入页面头部,可某种程度上避免。不过,电信运营商的手段也在不断升级,稍加变化还能绕过去。
有研究人员给出了一段升级代码:
<style> html{display : none ; } </style> <script> if( self == top ) { document.documentElement.style.display = 'block' ; } else { top.location = self.location ; } </script>
国外有个特定术语叫 Framekiller ,说的就是如何抵御这种劫持的事儿。不过这个代码也有可能再次被绕过去,就看运营商的流氓手段到什么程度了。或许最为有效的办法是加密传输内容(https)。Updated: 在电信运营商那里,这套玩意儿叫做「智能流量增值系统」,其实就是「DNS 劫持」。另外还有更高级的大杀器,「网络定向直投系统」。网络上能找到一些介绍信息。
网络定向直投系统(也称 iPUSH ),是由中国电信开发的划时代网络技术,可以以各种格式定时定点将广告推送到网络在线用户端的浏览主页面。 通过这个传播平台,不论电信用户在浏览器地址栏中输入任何网址进行浏览,网络定向直投系统均可将广告主动送达用户,不依赖于某个固定的网站。
网络定向直投系统「原理」:基于宽带接入网,通过对用户上网行为的分析,在用户上网时、或正在上网的过程中,系统主动、定向、策略性、个性化的向用户推送广告宣传信息。 方式:根据用户当前浏览的网站或匹配对应的关键字,向用户推送图片、Flash、视频等多媒体交互式广告内容。有朋友告诉我,这套玩意儿「通过对电信核心线路的过滤,把目标 HTTP 包整个给替换掉,换成他们自己的页面」,总之电信运营商为了牟利,上的全是hei,ke级手段。
直白的说,就是在用户好不知情的情况下强行插广告,非常的流氓,非常的下作,非常的无耻。
单纯从用户端无法屏蔽这种流氓广告,建议自己有网站的朋友们,工程师们,想办法从网站层面抵制这种行为,别让流氓们占了便宜。也欢迎大家给我补充一下更好的办法。我们抵制一点,他们就会收敛一点。