[原创]从程序员角度分析安徽电信HTTP劫持的无耻行径,以及修改Hosts文件,使用OPENDNS无效情况下的解决方案
问题描述
新年刚过,我就发现使用的安徽电信E9套餐有HTTP劫持的情况(网上有人说DNS劫持,有人说网页劫持),我想大致就是这种情况。
重现非常简单,在地址栏输入一些不存在的网址(比如http: //www.dsjkjdsafjklasfewrewre.com/)或者国内无法访问的网址(比如http://www.facebook.com/),就会跳转到电信的广告页面,并且每次的广告页面还不一样,比如有:
这种每次都随机的做法可真是无耻。有时候干脆直接跳转到 3158.cn 或者 淘宝的首页,更是无耻之极。
尝试解决问题
在确定不是电脑问题,不是操作系统问题(WindowsXP,Windows 7, Mac OS),不是中毒问题,不是浏览器问题(在所有浏览器IE,Firefox,Safari,Chrome…)后,我拨通了10000号进行投诉。
安徽电信的工作人员上门查看后也不知道什么原因,在我指出是可能是电信的DNS服务器的问题时,工作人员居然表示不知道这回事,说是要上报上级领导,至今无果。
我对这一解释真的很诧异,网上有很多关于这个问题的投诉,并且似乎从几年之前就已经存在,而他们居然不知道,下面我简单列几篇对臭名昭著的IP地址(61.132.221.146)的投诉:
http://www.315ts.net/archive/tousu/2011/0219/1078852.shtml
http://bbs.360.cn/4036159/13707592.html
http://www.tianya.cn/publicforum/content/it/1/565721.shtml
http://www.huangwei.me/blog/2010/02/09/anti-telecom-ad/
……
无奈之下,我只好分别在下面各个地方进行了投诉,还在等待反馈:
1. 中国电信在线投诉: http://tousu.ct10000.com/
2. 315消费电子投诉网:http://www.315ts.net/
3. 工信部电信用户申诉平台:http://www.chinatcc.gov.cn:8080/cmsadmin/shouli/shensu.jsp
从程序员角度看问题
作为一名程序员,在遇到这种问题时,是不能袖手旁观的。我们完全可以从HTTP请求分析出安徽电信在到底在哪个地方做了手脚。
这里我使用Filddler来监视所有的HTTP请求响应。
1.打开IE浏览器,在地址栏输入http://www.facebook.com/,这次是跳转到http://61.132.221.146/index_o.html,我们看Filddler的监控面板
很明确,这里是在请求facebook.com时,返回的HTTP状态吗是302,也就是URL重定向。我们在写网站时,遇到Session超时时重定向到登录页面也是这样做的。我们来仔细看下这个HTTP请求的响应代码:
问题的关键时,facebook.com不会把自己的页面重定向到电信的广告页面。那是谁做的?很明显了,是给我提供ISP服务的安徽电信了,无耻。
2. 在地址栏输入不存在的网址,比如http://www.uewkhdshfiueyhfsahd.com /,这次是跳到电信的114广告页面 。
这次不是302跳转了,而是返回的200,一个不存在的网址怎么会正常返回呢,我们来看下返回的内容:
原来这次是通过JavaScript跳转了,无耻。
3. 再次在地址栏输入不存在的网址,比如http://www.uewkhdshfiueyhfsahd.com /,这次是跳到2345.com广告页面 。
这次的跳转有点复杂,首先是uwoieurewuorwoerwerwer.com 跳转到 61.191.206.4(这个也是电信的服务器),然后跳转到61.191.206.4:81 /2345-3.html。我们来看下这一过程:
4. 打开一个国外网站dailyjs.com,因为其中通过iframe嵌入了facebook.com的页面,所以这个iframe也被重定向到61.132.221.146这个电信的广告页面。
我们通过IE的Developer Tools来看下这个iframe中有啥东西:
facebook.com 居然返回国内的广告页面,我只能说两个字了:无耻!
5. 最让人受不了的是这种情况,我正常的打开ajaxian.com,整个页面都已经出来了,但是突然整个页面跳转到3158.cn。无耻!!!
我把这次的完整HTTP请求响应都记下来了,因为其中的请求太多,还没来的及分析是怎么跳转了。有兴趣的网友可以下载这个文件,然后用Filddler打开,帮忙分析下怎么跳转的。
解决方案
我尝试了很多方法都不行,比如修改Hosts,使用Google的DNS或者OpenDNS。网上对这种方法有详细的描述:
http://www.williamlong.info/archives/1101.html
http://www.cnbeta.com/articles/23851.htm
http://bbs.kafan.cn/thread-180388-1-1.html
http://www.ytbbs.com/thread-1911401-1-1.html
……
不过这种方法在我这里都不行,貌似这已经不是简单的DNS劫持了,下面的文章对我的启发很大:
http://www.huangwei.me/blog/2010/02/09/anti-telecom-ad/
http://wenwen.soso.com/z/q253938024.htm
综合所有看到的文章,我觉得可以通过如下三种种途径来解决这个问题。
1. 将投诉进行到底。
2. 使用Firefox插件(BlockSite)和IE的受限站点设置
当访问一个不存在的网址时的效果:
IE下在“工具”->Internet选项中设置:
3. 修改本机路由表。
参考如下两个文章:
http://www.huangwei.me/blog/2010/02/09/anti-telecom-ad/
步骤:
1. 打开命令行窗口
2. 依次输入如下命令:
route -p add 61.132.221.146 mask 255.255.255.255 192.168.1.33
route -p add 60.169.12.74 mask 255.255.255.255 192.168.1.33
route -p add 61.191.206.4 mask 255.255.255.255 192.168.1.33
3. route print 查看刚才的命令是否成功。
附:安徽电信3个广告页面的IP地址
1. 61.132.221.146
2. 60.169.12.74
3. 61.191.206.4
强烈建议
如果你也曾遇到这种情况,或者正在经历这个过程,请把你的网络提供商,以及跳转的广告页面地址贴出来,我过段时间会弄一个汇总页面。
我会逐步更新这个事情的处理结果。
续
作者: 三生石上 发表于 2011-02-19 19:07 原文链接
最新新闻:
· Google Apps Shell Interface 让不会编码的人也能玩 API(2011-02-20 13:26)
· 乔布斯尚有心拆房,杰克林公馆终成废墟(2011-02-20 12:49)
· 三星Galaxy S 4G 23日上市 合约价200美元(2011-02-20 12:44)
· 淘宝进入物流市场:传统企业有危机也有商机(2011-02-20 12:42)
· 新版MacBook Pro或支持Light Peak高速连接(2011-02-20 12:41)
编辑推荐:PM与工程师