中国电信的流氓行径早有所闻,用上深圳电信的宽带之后,终于切身体会这些垄断企业的无耻。深圳电信的网页劫持症状是:在 Chrome 浏览器右下角弹出广告窗口。弹出窗口也就罢了,它还时不时导致正常网页变成以“另存为”的方式打开,必须刷新页面才能正常载入。
最近终于难以忍受了,决定用 userscript 解决这个问题。首先查看被劫持后的网页代码,如下:
<html> <head> <meta http-equiv='pragma' content='no-cache'/> <meta http-equiv='expires' content='-1'/> <script> var stat_path='http://121.15.207.199:81/stat.aspx?p=1355029095|1879779|43659|0|0|0'; var cnt_path=''; window.setInterval('window.status=location.href', 200); </script> </head> <body scroll='no' style='border:0; margin:0; padding:0;' id='mainbody'> <iframe src='about:blank' width='100%' height='100%' frameborder='0'></iframe> <script language='JavaScript' src='http://121.15.207.29:1010/openV4.js'></script> <script language='JavaScript'> var content='http://gd.189.cn/sz/push/ip5.htm?p=1355029095|1879779|43659|0|0|0¶m=ABioyajZGekprCz8jKys/LzMvJx8zPv87JzNGYm9mPkJOWnIaWm8LLzMnKxtmejZqenJCbmsLLy8/Mz8/ZjJCKjZyaio2TwoiIiNGRmoiM'; var old_url='http://www.cnblogs.com/?1355029095'; var param='780|520|9'; if(checkpop(stat_path)) {try{OpenWin(content,stat_path,cnt_path,old_url);}catch(e){}} else{location.href = old_url;} </script> </body> </html>
对 userscript 怎么编写也不熟悉,从 http://userscripts.org 以及其它网站找到一些例子,经过修改,终于得到了下面的避免深圳电信网页劫持的用户脚本:
// ==UserScript== // @name Remove Telecom Hijack // @version 12.12.09 // @include http* // @run-at document-start // ==/UserScript== document.addEventListener('beforeload', function(e){ s = document.getElementsByTagName('script')[0]; if (!s) { return; } else { a = s.innerHTML.toLowerCase(); if (a.indexOf("cnt_path=''") > 0 && a.indexOf(".status=loc") > 0) { e.preventDefault(); console.log('hijack: ' + location.href); history.go(0); } } },true);
将这个用户脚本的内容保存为 xxx.user.js 文件(只能以 .user.js 结尾!),然后打开 Chrome 浏览器的扩展程序页面,将该文件拖放进去即可安装该用户脚本。
参考资料:
[1] Userscripts.org - Anti TelecomAds
[2] Userscripts.org - ISP广告杀手 ISP Ads Killer
[3] Userscripts.org - Fuck ct10000
[4] 电信http劫持插入iframe广告,路由器ip段封锁加chrome脚本自动刷新
[5] 广东电信的流氓行径,抓着现行了。。
[6] 布丁布丁吃什麼?: Google Chrome安裝userscript的方法