[原创]从程序员角度分析安徽电信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
强烈建议
如果你也曾遇到这种情况,或者正在经历这个过程,请把你的网络提供商,以及跳转的广告页面地址贴出来,我过段时间会弄一个汇总页面。
我会逐步更新这个事情的处理结果。
续
向工信部申诉原文,备份如下(第一次申诉没受理,说事由不清):
我已经在你们网站申诉过一次,不过你们说事由不清,不受理。我就再填一次表单,希望这次能够描述清楚。
我用的是安徽电信的e9套餐,固定电话是0551-XXXXXX,宽带账号是hfiXXXXX。我遇到的问题是当网站暂时打不开时会被自动跳转到安徽电信的广告页面。有三个广告页面,是随机跳转的,他们分别是:
http://61.132.221.146/index_o.html
http://61.191.206.4:81/
http://60.169.12.74/
我写了两篇文章完整分析了整个过程,请明察:
1. http://www.cnblogs.com/sanshi/archive/2011/02/19/1958632.html
2. http://www.cnblogs.com/sanshi/archive/2011/02/20/1958834.html
希望工信部能秉公办事,我虽然知道这是行业内的潜规则,但毕竟是不合理的,并且存在不知3,4年了。我不希望只有在315晚会曝光后或者诉诸法律后才能解决。
已经向10000申诉过。在2011-2-11号和2011-2-19号分别投诉过两次,工作人员也上门过两次,都没解决。上门工作人员说不知道啥原因,要上报上级领导,至今无果。并且电信工作人员家里自己的网络也是这种情况。