防治运营商HTTP劫持的终极技术手段
2016-09-18 13:28
323 查看
运营商HTTP劫持(非DNS劫持)推送广告的情况相信大家并不陌生,解决的方法大多也是投诉增值业务部门进而投诉工信部。但这种方法费时费力,投诉接听人员并不了解情况导致答非所问的情况有很多,有时候不但受气最终也没能完全解决问题,或者解决问题后过了一段时间复发的情况并不少见。 近年来,运营商HTTP劫持非但没有收敛,反而变本加厉,玩出了新花样:比如通过HTTP劫持进行密码截获的活动;比如下载软件被替换的情况;比如劫持进行返利(当然返利不是返给你)的情况。 本文介绍一种技术手段用来防止HTTP劫持,在大多数情况下不但可以解决广告推送的问题,也能解决密码截获和下载软件被替换的情况。最终的效果是运营商停止了HTTP劫持,而非劫持后通过浏览器插件进行广告过滤。此种方法的好处是既不用安装浏览器插件进行广告过滤,也不用额外的服务器(HTTP代理或***之类的),并且能防止下载软件被替换和返利劫持,也能在一定程度上防范密码的泄漏。
要说明这种技术手段的工作原理,首先需要说明大多数情况下运营商HTTP劫持的原理: 在用户的浏览器连上被访问的网站服务器,发送了HTTP请求后,运营商的路由器会首先收到此次HTTP请求,之后运营商路由器的旁路设备标记此TCP连接为HTTP协议,之后可以抢在网站服务器返回数据之前发送HTTP协议的302代码进行下载软件的劫持,浏览器收到302代码后就会跳转到错误的软件下载地址下载软件了,随后网站服务器的真正数据到达后反而会被丢弃。或者,旁路设备在标记此TCP连接为HTTP协议后,直接返回修改后的HTML代码,导致浏览器中被插入了运营商的广告,随后网站服务器的真正数据到达后最终也是被丢弃。 从上述原理中看出,如果需要进行HTTP劫持,首先需要进行标记:如果是HTTP协议,那么进行劫持,否则不进行劫持。那么,是否有一种方法,既可以避免被旁路设备标记为HTTP协议,而目标网站收到的仍旧是原来的HTTP请求,并且不需要任何第三方服务器呢?答案是有的: 旁路设备中检测HTTP协议的模块通常比较简单,一般只会检测TCP连接建立后的第一个数据包,如果其是一个完整的HTTP协议才会被标记;如果并非是一个完整的HTTP协议,由于无法得到足够多的劫持信息,所以并不会被标记为HTTP协议(我们伟大的防火墙并非如此,会检查后续数据包,所以这种方法无效)。了解了这种情况后,防止劫持的方法就比较简单了:将HTTP请求分拆到多个数据包内,进而骗过运营商,防止了HTTP劫持。而目标网站的操作系统的TCP/IP协议栈比较完善,收到的仍旧是完整的HTTP请求,所以也不会影响网页浏览。 那么如何将浏览器发出的HTTP请求拆分到多个数据包中呢?我们可以在本地架设一个代理服务器,在代理服务器将浏览器的HTTP请求进行拆包,浏览器设置本地的代理服务器即可。我这里经过测试,默认设置的情况下对三大运营商(电信、联通、移动)的HTTP劫持现象都有很好的抑制作用。 这个软件是个开源软件,代码在: https://github.com/lehui99/ahjs5s 。如果发现有什么问题,欢迎在Github上提Issue。如果有更新,我也会第一时间更新到Github上。
参考:
http://www.williamlong.info/archives/4181.html
http://www.qianbo.com.cn/Seo/3720.html
电信、移动、联通运营商js广告劫持终极解决方案
运营商HTTP劫持(非DNS劫持)推送广告的情况相信大家并不陌生,解决的方法大多也是投诉增值业务部门或进而投诉到工信部(http://www.chinatcc.gov.cn:8080/cms/shensus/)。但这种方法费时费力,投诉接听人员并不了解情况导致答非所问的情况有很多,有时候不但受气最终也未能完全解决问题,或者解决问题后过了一段时间复发的情况并不少见。
近年来,运营商HTTP劫持非但没有收敛,反而变本加厉,玩出了很多新花样:比如通过HTTP劫持进行密码截获的活动、比如下载软件被替换的情况、比如阿里妈妈类返利被劫持等情况。
该广告有几个特点:
不管是中国还是外国网站,都有可能弹广告。
有些知名网站似乎没有弹过广告,比如新浪微博、Stack Overflow。
对某一个网站,只在每天第一次访问时弹广告,显示过一次之后,再刷新网页就不会出现了。第二天访问时还可能弹广告。
所有的HTTPS站都没有广告。
比如一段jquery代码被劫持成这样:
屏蔽方法:
作为普通用户,一般的建议是打电话给ISP投诉,让ISP取消对您的账号的“特殊服务”。
网站所有者:
作为网站所有者,有没有办法彻底去除ISP强插到您网站上的广告呢?这样不管您的用户有没有屏蔽广告的能力,在访问网站时都不会看到恼人的广告。
第一个可行的办法是HTTPS化,HTTPS请求无法简单的伪造。目前由于网络安全的形势不好,很多网站都做了全站HTTPS化。虽然有一些开销,但毕竟是个最有效的办法。
目前ISP的做法是只劫持JS文件,那么另一个简便的方法就是JS全部放到第三方CDN上,利用第三方存储提供的HTTPS服务,把网页上的JS地址换成HTTPS的,ISP就无法伪造了。
要说明这种技术手段的工作原理,首先需要说明大多数情况下运营商HTTP劫持的原理: 在用户的浏览器连上被访问的网站服务器,发送了HTTP请求后,运营商的路由器会首先收到此次HTTP请求,之后运营商路由器的旁路设备标记此TCP连接为HTTP协议,之后可以抢在网站服务器返回数据之前发送HTTP协议的302代码进行下载软件的劫持,浏览器收到302代码后就会跳转到错误的软件下载地址下载软件了,随后网站服务器的真正数据到达后反而会被丢弃。或者,旁路设备在标记此TCP连接为HTTP协议后,直接返回修改后的HTML代码,导致浏览器中被插入了运营商的广告,随后网站服务器的真正数据到达后最终也是被丢弃。 从上述原理中看出,如果需要进行HTTP劫持,首先需要进行标记:如果是HTTP协议,那么进行劫持,否则不进行劫持。那么,是否有一种方法,既可以避免被旁路设备标记为HTTP协议,而目标网站收到的仍旧是原来的HTTP请求,并且不需要任何第三方服务器呢?答案是有的: 旁路设备中检测HTTP协议的模块通常比较简单,一般只会检测TCP连接建立后的第一个数据包,如果其是一个完整的HTTP协议才会被标记;如果并非是一个完整的HTTP协议,由于无法得到足够多的劫持信息,所以并不会被标记为HTTP协议(我们伟大的防火墙并非如此,会检查后续数据包,所以这种方法无效)。了解了这种情况后,防止劫持的方法就比较简单了:将HTTP请求分拆到多个数据包内,进而骗过运营商,防止了HTTP劫持。而目标网站的操作系统的TCP/IP协议栈比较完善,收到的仍旧是完整的HTTP请求,所以也不会影响网页浏览。 那么如何将浏览器发出的HTTP请求拆分到多个数据包中呢?我们可以在本地架设一个代理服务器,在代理服务器将浏览器的HTTP请求进行拆包,浏览器设置本地的代理服务器即可。我这里经过测试,默认设置的情况下对三大运营商(电信、联通、移动)的HTTP劫持现象都有很好的抑制作用。 这个软件是个开源软件,代码在: https://github.com/lehui99/ahjs5s 。如果发现有什么问题,欢迎在Github上提Issue。如果有更新,我也会第一时间更新到Github上。
参考:
http://www.williamlong.info/archives/4181.html
http://www.qianbo.com.cn/Seo/3720.html
电信、移动、联通运营商js广告劫持终极解决方案
运营商HTTP劫持(非DNS劫持)推送广告的情况相信大家并不陌生,解决的方法大多也是投诉增值业务部门或进而投诉到工信部(http://www.chinatcc.gov.cn:8080/cms/shensus/)。但这种方法费时费力,投诉接听人员并不了解情况导致答非所问的情况有很多,有时候不但受气最终也未能完全解决问题,或者解决问题后过了一段时间复发的情况并不少见。
近年来,运营商HTTP劫持非但没有收敛,反而变本加厉,玩出了很多新花样:比如通过HTTP劫持进行密码截获的活动、比如下载软件被替换的情况、比如阿里妈妈类返利被劫持等情况。
该广告有几个特点:
不管是中国还是外国网站,都有可能弹广告。
有些知名网站似乎没有弹过广告,比如新浪微博、Stack Overflow。
对某一个网站,只在每天第一次访问时弹广告,显示过一次之后,再刷新网页就不会出现了。第二天访问时还可能弹广告。
所有的HTTPS站都没有广告。
比如一段jquery代码被劫持成这样:
屏蔽方法:
作为普通用户,一般的建议是打电话给ISP投诉,让ISP取消对您的账号的“特殊服务”。
网站所有者:
作为网站所有者,有没有办法彻底去除ISP强插到您网站上的广告呢?这样不管您的用户有没有屏蔽广告的能力,在访问网站时都不会看到恼人的广告。
第一个可行的办法是HTTPS化,HTTPS请求无法简单的伪造。目前由于网络安全的形势不好,很多网站都做了全站HTTPS化。虽然有一些开销,但毕竟是个最有效的办法。
目前ISP的做法是只劫持JS文件,那么另一个简便的方法就是JS全部放到第三方CDN上,利用第三方存储提供的HTTPS服务,把网页上的JS地址换成HTTPS的,ISP就无法伪造了。
相关文章推荐
- 面对电信运营商HTTP劫持如何是好,投诉太折腾,不如路由器直接屏蔽广告源
- 关于全站https必要性http流量劫持、dns劫持等相关技术
- 玩大了:当地运营商http劫持了国字号app
- 痛苦的选择:不再只专注于技术(转载--http://zhenyulu.cnblogs.com/archive/2004/10/17/53443.aspx)
- HttpModule技术专题(一)
- Ajax技术简介(http://www.51cto.com)
- 欢迎访问ITAA互联网技术训练中心。http://www.one-tom.com
- 中国电信http劫持过程图解
- XMLHTTP / 核心技术介绍 (Second Step Study For AJAX)
- 解决浏览器被 http://www.haohao1.com 劫持问题(第2版)
- 工作中心转移到技术博客(http://blog.csdn.net/netxzs/)
- 决定搬家到 http://www.2maomao.com/blog/ ,这里以后只更新一些技术问题
- Web显示层技术评估 -- 9.Browser Side, 10, Unobtrusive, 显示逻辑AOP, 多语言支持的终极解决方案, 总结与展望
- 使用Remotin技术在服务器端激活的HTTP通道模式下再起波澜。。。
- Struts中不同的Action和ActionForm组合(在技术中心看到的文章,觉得有用,所以自己收藏一下)引自http://blog.csdn.net/sean_gao/
- 高手与菜鸟,思想与技术(转载于http://yuandong.cnblogs.com/archive/2006/06/07/419945.html)