最近一直都被电信的流氓行为所困扰,不管打开什么网站浏览器都会向221.232.161.106这个地址发出请求,开始还以为是电脑中毒了呢,后来一查才知道是电信的IP,查看网页的源代码时发现只有寥寥几行,一个偌大的网站怎么会只有几行代码,这才意识到网页被电信劫持并框架了,google了下发现各地都有这种情况,电信这样做是为了推送广告。这个大概与DNS劫持还不同,因为我换用OpenDNS也不能解决问题,据说是路由器劫持什么的,反正很令人厌恶,每次网站装载后都不能正确显示标题,必须反复刷新才行;更重要的是电信在未经用户允许的情况下这样做显得比较龌龊,无怪乎网友们都对大佬电信怨声载道呢!
在网上搜了一圈,找到一些规避这种流氓行为的方法,诸如什么屏蔽IP、修改host文件等,不幸的是都不管用。 不过我发现一个有趣的现象,有些网站从来不会被框架,比如我的博客,就从来没有出现这种情况,事有蹊跷,随即查看源代码,结果发现“凶手”竟是一行很简单的JS代码:
if (top.location != self.location) {top.location=self.location;}
这就是传说中防止iframe的代码,如果把这行代码应用到所有的网站上不就都解决了吗,呵呵,我几乎马上想到了Greasemonkey,只需在Greasemonkey里新建一个脚本,把上面的代码填入,然后把脚本应用的网页修改为http://* 就可以了,这就表示应用到所有网页上了。不过有的时会遇到该脚本与网站其他脚本冲突的情况或者网页还中还嵌入了其他的iframe元素(比如blogspot,还有blogbus的后台等),这样的话只需在Greasemonkey中把相应的网站添加到例外中即可。
俺自己也照样写了个, 有需要的可以直接下载该js回去按上,不过我总觉得这个脚本忒简陋,应该可以写的更好以避免各种冲突。

